Impossível executar um comando usando su para outro usuário (sistema)

2

Eu criei meu usuário assim:
sudo adduser --disabled-password --system --home /var/lib/deluge --gecos "Deluge server" --group deluge

O conteúdo de /etc/passwd :% deluge:x:110:114:Deluge server,,,:/var/lib/deluge:/bin/false

O diretório em que estou:

root@xxxxxx:/var/lib/deluge/.flexget# ls -al  
drwxr-xr-x 2 deluge deluge 4096 15 mars  11:39 .  
drwxr-xr-x 7 deluge deluge 4096 15 mars  11:40 ..  
-rwxr-xr-x 1 deluge deluge 3881 15 mars  11:39 config.yml

O que estou tentando fazer:

su deluge -c "flexget --test execute"

Mas nada acontece, eu não tenho nenhum erro mostrado, eu também tentei apenas su deluge , mas o mesmo ainda raiz. Como posso executar um comando usando este usuário? (Eu não estou usando sudo )

    
por Pontek 15.03.2014 / 12:25

1 resposta

3

Seu usuário deluge tem /bin/false para o shell padrão - isso é o que o su está executando e passando a opção -c para (ou executando sem nenhuma opção quando você simplesmente faz su deluge ). Você pode usar a opção --shell para adduser para definir um shell ao criar o usuário. Por exemplo:

sudo adduser --shell /bin/sh --disabled-password --system \
  --home /var/lib/deluge --gecos "Deluge server" --group deluge

Ou use chsh para alterar o shell de um usuário já criado:

sudo chsh -s /bin/sh deluge

Ou você pode usar a opção --shell (ou -s ) com su para substituir /etc/passwd :

su deluge -s /bin/sh -c "flexget --test execute"

Dependendo do que mais você está fazendo com o usuário, /bin/bash pode ser um shell mais apropriado para usar.

    
por 15.03.2014 / 12:43

Tags