linux-pc에는 두 개의 사용자 계정이 있습니다. 첫 번째는 루트이기도 하고 두 번째는 일반 사용자입니다. 두 번째 사용자가 터미널을 열지 못하게 하려면 어떻게 해야 합니까?
답변1
쉘을 /bin/false
with 로 설정하십시오 chsh
. 예를 들어(루트로서):
chsh -s /bin/false username
이렇게 하면 콘솔이나 SSH 등을 통해 로그인할 때 쉘을 가져오는 것을 방지할 수 있습니다. 이것은 대부분의 목적에 충분하지만 시스템에서 다른 프로그램을 실행할 수 있는 경우 쉘을 얻을 수 있는 다른 방법이 많이 있습니다.
이는 또한 로그인을 효과적으로 방지하므로 특정 데몬(예: 아파치를 실행하기 위한 www-data)을 실행하는 시스템 사용자가 아니거나 사서함 전용 사용자 또는 이와 유사한 사용자가 아닌 한 사용자 계정에는 별 의미가 없습니다.
아마도 더 나은 또 다른 옵션은 쉘을 다음으로 설정하는 것입니다.제한된 껍질예를 들어 /bin/rbash
, (미리 설정된) PATH에서만 프로그램을 실행할 수 있도록 허용하고 등을 사용하여 디렉터리를 변경 cd
하거나 환경 변수를 변경하는 것을 방지합니다. 자세한 내용은 참조하세요.SHELL
PATH
man rbash
예를 들어, 시스템 어딘가에 디렉터리(예: /usr/local/rbin)를 만들고, 허용된 바이너리를 해당 디렉터리에 복사하거나 링크한 다음, 디렉터리에 있는 해당 디렉터리 프로그램에서만 실행할 수 있도록 경로를 설정할 수 있습니다. . 텍스트 편집기가 필요한지 rvim
여부보다는 설치와 같이 이 디렉터리에 어떤 프로그램을 넣을지 주의해야 합니다 vim
(rvim에서는 셸 명령 실행을 허용하지 않습니다).
참고: 이 작업은 많은 작업이 필요하며 올바르게 수행하려면 신중한 조사가 필요합니다(예: 쉘 액세스를 허용하는 일부 구멍을 남기지 않도록). rbash
이 사이트에는 쉘 및 기타 제한된 쉘에 대한 몇 가지 질문과 답변이 있습니다. 연구를 시작하세요:
https://unix.stackexchange.com/search?q=rbash
매우 밀접하게 관련된 주제 chroot
: