O problema é que suser
foi criado com /bin/false
como seu shell padrão. Portanto, quando você tenta executar comandos como suser
a sudo
, o sistema tenta executá-los usando /bin/false/
, que não é um shell real e falha. Você pode definir um shell para suser
ou pode especificá-lo na linha de comando quando executar sudo
. Como alternativa, você pode usar a opção sudo
de -u
.
-
Use
-u
:sudo -u suser mkdir /home/suser/foo
Isso funciona porque, por padrão,
sudo
usa/bin/bash
(ou o que você definiu como padrão$SHELL
). Portanto, ele executará um comando comosuser
, mas usandobash
, para que o comando seja executado corretamente. -
Defina o shell padrão de
suser
:sudo chsh suser
Digite
/bin/bash
(ou o que você preferir) no prompt que será exibido. Agora você deve poder iniciar comandos comosuser
:sudo su suser -c "mkdir /home/suser/test"
-
Defina o shell explicitamente:
sudo su suser -s /bin/bash -c "mkdir /home/suser/test"