Почему rbash не применяет никаких ограничений для оболочки входа в Debian 9 (Stretch)?

Почему rbash не применяет никаких ограничений для оболочки входа в Debian 9 (Stretch)?

Я на Debian 9 (Stretch). У меня есть deployпользователь, для которого я установил оболочку /bin/rbash. Вот строка из /etc/passwd:

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

Если я являюсь пользователем root и запускаю su - deployили su -l deploy, то запускается rbash( echo $SHELL # => /bin/rbash), но команды не ограничиваются:

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

Если я просто запущу su deploy:

~$ echo $SHELL
/bin/rbash
~$ cd /tmp
rbash: cd: restricted
~$ /bin/cat /etc/passwd
rbash: /bin/cat: restricted: cannot specify `/' in command names

Почему не rbashприменяются никакие ограничения, если это оболочка входа?

решение1

Из руководства Bash:

Если Bash запущен с именем rbashили при вызове указан параметр --restrictedили -r, оболочка становится ограниченной.

Теперь, «начало с имени» означает, что $0, илинулевой элементargvэто имя. Но когда suон запускается как оболочка входа, он устанавливает имя в -su. И эта -rопция также не использовалась, поэтому ни один из методов запуска ограниченной оболочки не использовался при suзапуске оболочки входа.

Он по-прежнему должен действовать для других правильных способов входа в систему (например, SSH или login(1)через TTY).

Связанный контент