Estou no Debian 9 (Stretch). Eu tenho um deploy
usuário onde configurei o shell para /bin/rbash
. Aqui está a linha de /etc/passwd
:
deploy:x:9000:9000::/home/deploy:/bin/rbash
Se eu sou o usuário root e executo su - deploy
or su -l deploy
, então ele inicia rbash
( echo $SHELL # => /bin/rbash
), mas os comandos não estão sendo restritos:
~$ echo $SHELL
/bin/rbash
~$ cd /tmp
/tmp$ echo asdf > /tmp/file
/tmp$ /bin/cat /tmp/file
asdf
# (Should not allow any commands with a slash)
Se eu apenas executar su deploy
:
~$ echo $SHELL
/bin/rbash
~$ cd /tmp
rbash: cd: restricted
~$ /bin/cat /etc/passwd
rbash: /bin/cat: restricted: cannot specify `/' in command names
Por que não rbash
aplica nenhuma restrição se este é um shell de login?
Responder1
Do manual do Bash:
Se o Bash for iniciado com o nome
rbash
ou a opção--restricted
ou-r
for fornecida na invocação, o shell ficará restrito.
Agora, "começou com o nome" significa que $0
, ouo elemento zero deargv
é esse nome. Mas quando su
inicia como um shell de login, ele define o nome como -su
. E a -r
opção também não foi usada, portanto nenhum método de iniciar um shell restrito foi usado ao su
iniciar um shell de login.
Ele ainda deve entrar em vigor para outros meios adequados de login (como SSH ou login(1)
TTY).