%EC%9D%98%20%EB%A1%9C%EA%B7%B8%EC%9D%B8%20%EC%85%B8%EC%97%90%20%EC%A0%9C%ED%95%9C%EC%9D%84%20%EC%A0%81%EC%9A%A9%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
저는 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를 통한) 에도 여전히 적용됩니다 .