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가 name으로 시작되거나 호출될 때 또는 옵션이 rbash제공 되면 쉘이 제한됩니다 .--restricted-r

이제 "이름으로 시작"은 $0, 또는0번째 요소argv그 이름이에요. 하지만 su로그인 쉘로 시작하면 이름이 로 설정되고 -su해당 옵션도 사용되지 않으므로 로그인 쉘을 시작할 때 -r제한된 쉘을 시작할 방법이 없습니다.su

다른 올바른 로그인 방법(예: SSH 또는 TTY를 통해)에서는 login(1)계속 작동합니다 .

관련 정보