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 - 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.0번째 요소argv그 이름이에요. 그러나 su로그인 쉘로 시작하면 이름이 -su. 그리고 -r옵션도 사용되지 않았으므로 su로그인 쉘을 시작할 때 제한된 쉘을 시작하는 방법도 사용되지 않았습니다.

login(1)다른 적절한 로그인 수단(예: SSH 또는 TTY를 통한) 에도 여전히 적용됩니다 .

관련 정보