¿Por qué rbash no aplica ninguna restricción para un shell de inicio de sesión en Debian 9 (Stretch)?

¿Por qué rbash no aplica ninguna restricción para un shell de inicio de sesión en Debian 9 (Stretch)?

Estoy en Debian 9 (Stretch). Tengo un deployusuario en el que configuré el shell /bin/rbash. Aquí está la línea de /etc/passwd:

deploy:x:9000:9000::/home/deploy:/bin/rbash

Si soy el usuario root y ejecuto su - deployo su -l deploy, entonces se inicia rbash( echo $SHELL # => /bin/rbash), pero los comandos no están restringidos:

~$ 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)

Si solo ejecuto 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 qué no se rbashaplica ninguna restricción si se trata de un shell de inicio de sesión?

Respuesta1

Del manual de Bash:

Si Bash se inicia con el nombre rbash, o se proporciona la opción --restrictedo durante la invocación, el shell queda restringido.-r

Ahora, "comenzó con el nombre" significa que $0, oel elemento cero deargves ese nombre. Pero cuando sulo inicia como shell de inicio de sesión, establece el nombre en -su. Y la -ropción tampoco se usó, por lo que no se usó ningún método para iniciar un shell restringido cuando suse inicia un shell de inicio de sesión.

Aún así debería surtir efecto para otros medios adecuados de inicio de sesión (como SSH o login(1)a través de un TTY).

información relacionada