Como posso obter um shell interativo como outro usuário não root?

10

Estou usando o servidor Ubuntu 10.04 LTS, com o modelo de segurança padrão (root bloqueado, usando sudo para elevar os privilégios). Eu ocasionalmente gosto de usar sudo -i quando preciso executar uma série de comandos com privilégios elevados, ou quando preciso vasculhar diretórios com privilégios somente de root.

Às vezes, ao configurar o software que será executado como sua própria conta de sistema não privilegiada ( adduser --system --group --no-create-home --disabled-login some-daemon-user ), acho que preciso executar uma sequência de comandos como esse usuário , em vez de eu mesmo ou raiz. Eu tentei usar sudo -i -u some-daemon-user , mas ele retorna um status 1 sem nenhuma mensagem de erro.

Eu verifiquei os arquivos de log syslog , messages , auth e debug em /var/log e nenhum deles inclui nenhuma mensagem que faça referência a sudo ou a conta em questão.

Então, é possível tornar-se outro usuário não-root, estilo sudo sem apenas definir uma senha e efetuar login (como eles)? O meu sistema está "quebrado" de alguma forma ou estou apenas fazendo errado?

    
por Calrion 29.10.2012 / 03:27

2 respostas

9

Ahmm .. o problema é que o shell padrão desses usuários é normalmente configurado para /bin/false e por razões de segurança você não deve mudar isso. Mas você ainda pode executar por exemplo: sudo -u www-data /bin/sh

    
por Paul Hänsch 29.10.2012 / 03:36
8

sudo -i executa o shell especificado pela entrada do banco de dados de senha do usuário de destino, que é /bin/false para o usuário do sistema.

Use

 sudo -u some-daemon-user bash

ou

sudo -u some-daemon-user -H bash

se você quiser definir a variável de ambiente $ HOME definida para o usuário de destino.

    
por Florian Diesch 29.10.2012 / 03:38