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

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

deploy私は Debian 9 (Stretch) を使用しています。シェルを に設定したユーザーがいます/bin/rbash。 の行は次のとおりです/etc/passwd:

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

私が root ユーザーで、su - deployまたは を実行すると( )su -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 が という名前で起動された場合rbash、または起動時に--restrictedまたは-rオプションが指定された場合、シェルは制限されます。

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

他の適切なログイン手段 (SSH やlogin(1)TTY 経由など) でも有効になるはずです。

関連情報