답변:
먼저 요구 사항을 재평가하십시오. 해결하려는 문제는 무엇입니까? 사용자가 홈 디렉토리를 떠나지 못하게하려는 이유 는 무엇 입니까? 오히려 다른 사용자의 홈 디렉토리와 같은 특정 다른 디렉토리 를 뒤적 거리지 않기를 원하지 않습니까?
사용자가 홈 디렉토리를 떠나지 못하게하는 것은 매우 어렵습니다. 실제로 약간 바보입니다 (설명이 이어집니다). 사용자가 원하지 않는 디렉토리에 들어 가지 못하게하는 것이 훨씬 간단합니다.
첫째, 그래 당신은 사용자에게 소위 줄 수있는 제한된 쉘을 참조하십시오 man rbash
. 이렇게하면 cd
다른 곳 에서 -쉘 내부에서만 -ing 할 수 없습니다. 사용자가 시작 vi
하거나 nano
파일을 열 수있는 다른 프로그램을 시작하면 시스템의 어느 곳에서나 파일을 다시 열 수 있습니다. 사실상, 제한된 쉘은 예를 들어 막지 않습니다 cat /etc/passwd
.
다음 단계는 루트 감옥입니다. 커뮤니티 위키 및 이 질문 에 대한 추가 정보 . 루트 감옥은 벽으로 둘러싸인 정원 내에서 사용자를 잠그지 만 의도적으로 파일과 명령에 액세스 할 수는 있지만 루트 감옥은 실제로 사용자가 아닌 신뢰할 수없는 소프트웨어 를 격리하기위한 것입니다 . 특히, 이들은 높은 권한으로 실행해야하는 소프트웨어, 즉 루트 교도소 용입니다.
반면에 사용자는 신뢰할 수 있습니다 . 높은 권한없이 인증 하고 실행 해야했습니다 . 따라서 파일 권한은 파일이 소유하지 않은 파일을 변경하거나 볼 수없는 것을 보지 못하도록 충분합니다. 사용자가 파일의 내용을 읽지 못하게하려면로 가독성을 제거하십시오 chmod o-r FILE
. 사용자를 디렉토리에서 제외하려면를 사용하여 디렉토리에 액세스 할 수 없도록하십시오 chmod o-rwx DIR
.
그러나 세계 가독성은 기본값입니다. 사용자는 실제로 파일 시스템에있는 대부분의 자료를 필요 로합니다. 외부에 비밀이 있기 때문에 집에있는 사용자를 잠그지 마십시오.
홈 디렉토리에서 사용자를 잠그는 것이 약간 어리석은 이유
유용한 작업을 수행하려면 사용자가 명령 및 응용 프로그램에 액세스해야합니다. 이 같은 디렉토리에있는 /bin
그리고 /usr/bin
당신이 그들의 홈 디렉토리에 그들이 거기에서 필요한 모든 명령을 복사 그렇게하지 않으면, 사용자는 액세스가 필요합니다 /bin
및 /usr/bin
. 그러나 그것은 시작에 불과합니다. 응용 프로그램에서 라이브러리를 필요로 /usr/lib
하고 /lib
,에 시스템 자원에 회전이 필요 액세스에서 /dev
, 그리고 구성 파일을 /etc
하고 /usr/share
.
이것은 단지 읽기 전용 부분이었습니다. 응용 프로그램은 또한 /tmp
종종 글 /var
을 쓰고 싶어 할 것 입니다. 따라서 그의 홈 디렉토리 내에서 사용자를 제한하려면 많은 것을 복사해야합니다. 실제로, 여러분은 이미 가지고있는 거의 모든 기본 파일 시스템을에 있습니다 /
.
나는 사용자에 대한 액세스를 제공하는 데 필요한 sam
에서 /var/xyz
다른 폴더의 블록 목록 내용 내부/var/
다음과 같은 명령을 사용했습니다.
setfacl -R -m user:sam:--- /var/
setfacl -m user:sam:rx /var/
setfacl -R -m user:sam:rwx /var/xyz/
따라서 사용자는 아래에 나열된 디렉토리를 볼 /var/
수 있지만를 제외한 하위 디렉토리 아래의 내용은 볼 수 없습니다 /var/xyz
.
다른 디렉토리, 특히 다른 사용자의 홈 디렉토리에 대한 액세스를 제한 ll /home
하는 것 외에도 사용자가 시스템에서 다른 사용자의 이름을 보지 못하게하고 싶지 않았습니다 .
이것을 막기 위해 root run chmod 701 /home
. 이것은 /home
디렉토리 자체를 "읽기 / 쓰기 / 실행"으로 만들지 만, 다른 사람에게는 "실행"만합니다. /home
에 액세스 cd
할 수 있지만 사용자는 다른 사용자의 홈 폴더와 사용자 이름으로 해당 내용을 읽을 수 없습니다.