Por que o rbash não aplica nenhuma restrição para um shell de login no Debian 9 (Stretch)?

Por que o rbash não aplica nenhuma restrição para um shell de login no Debian 9 (Stretch)?

Estou no Debian 9 (Stretch). Eu tenho um deployusuá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 - deployor 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 rbashaplica nenhuma restrição se este é um shell de login?

Responder1

Do manual do Bash:

Se o Bash for iniciado com o nome rbashou a opção --restrictedou -rfor 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 suinicia como um shell de login, ele define o nome como -su. E a -ropção também não foi usada, portanto nenhum método de iniciar um shell restrito foi usado ao suiniciar um shell de login.

Ele ainda deve entrar em vigor para outros meios adequados de login (como SSH ou login(1)TTY).

informação relacionada