저는 Debian 9(Stretch)를 사용하고 있습니다. 셸 을 deploy
설정한 사용자 가 있습니다 /bin/rbash
./etc/passwd
deploy:x:9000:9000::/home/deploy:/bin/rbash
루트이고 실행 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가 name으로 시작되거나 호출될 때 또는 옵션이
rbash
제공 되면 쉘이 제한됩니다 .--restricted
-r
이제 "이름으로 시작"은 $0
, 또는0번째 요소argv
그 이름이에요. 하지만 su
로그인 쉘로 시작하면 이름이 로 설정되고 -su
해당 옵션도 사용되지 않으므로 로그인 쉘을 시작할 때 -r
제한된 쉘을 시작할 방법이 없습니다.su
다른 올바른 로그인 방법(예: SSH 또는 TTY를 통해)에서는 login(1)
계속 작동합니다 .