Warum wendet rbash keine Einschränkungen für eine Login-Shell unter Debian 9 (Stretch) an?

Warum wendet rbash keine Einschränkungen für eine Login-Shell unter Debian 9 (Stretch) an?

Ich verwende Debian 9 (Stretch). Ich habe einen deployBenutzer, bei dem ich die Shell auf eingestellt habe /bin/rbash. Hier ist die Zeile von /etc/passwd:

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

su - deployWenn ich der Root-Benutzer bin und oder ausführe su -l deploy, wird es gestartet rbash( echo $SHELL # => /bin/rbash), aber die Befehle werden nicht eingeschränkt:

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

Wenn ich einfach ausführe su deploy:

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

Warum werden keine rbashEinschränkungen angewendet, wenn dies eine Login-Shell ist?

Antwort1

Aus dem Bash-Handbuch:

Wenn Bash mit dem Namen gestartet wird rbashoder beim Aufruf die Option --restrictedoder -rangegeben wird, wird die Shell eingeschränkt.

Nun, „begann mit dem Namen“ bedeutet $0, dass oderdas nullte Element vonargvist dieser Name. Aber wenn sues als Login-Shell gestartet wird, wird der Name auf gesetzt -su. Und die -rOption wurde auch nicht verwendet, also wurde keine der Methoden zum Starten einer eingeschränkten Shell verwendet, als sueine Login-Shell gestartet wurde.

Für andere, ordnungsgemäße Anmeldemethoden (wie etwa SSH oder login(1)über ein TTY) sollte es dennoch wirksam sein.

verwandte Informationen