rbashがDebian 9(Stretch)のログインシェルに制限を適用しないのはなぜですか?

rbashがDebian 9(Stretch)のログインシェルに制限を適用しないのはなぜですか?

私はDebian 9(Stretch)を使用しています。シェルをdeploy設定したユーザーがいます/bin/rbash/etc/passwd

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

ルートで実行するsu - deploysu -l deploy起動されますが、rbashecho $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 が name で起動または呼び出されるとき、またはオプションが指定された場合、rbashシェルは制限されます。--restricted-r

今「名前で始まる」は$0、または0番目の要素argvその名前です。ただし、suログインシェルで起動すると名前がに設定され、-suそのオプションも使用されないため、ログインシェルを起動するときに制限付き-rシェルを起動する方法はありません。su

他の正しいログイン方法(SSHやTTYなど)では引き続きlogin(1)機能します。

関連情報