Estoy en Debian 9 (Stretch). Tengo un deploy
usuario 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 - deploy
o 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 rbash
aplica 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--restricted
o durante la invocación, el shell queda restringido.-r
Ahora, "comenzó con el nombre" significa que $0
, oel elemento cero deargv
es ese nombre. Pero cuando su
lo inicia como shell de inicio de sesión, establece el nombre en -su
. Y la -r
opción tampoco se usó, por lo que no se usó ningún método para iniciar un shell restringido cuando su
se 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).