사용자가 자신의 홈 디렉토리 이외의 항목에 액세스하지 못하게하려면 어떻게해야합니까?


22

사용자가 자신의 홈 디렉토리 이외의 항목에 액세스하지 못하게하려면 어떻게해야합니까?

예를 들어,에 NTFS 파티션이 마운트되어 /media/ntfs있으므로 사용자가 ssh를 통해 로그인하면이 파티션에 도달 할 수 있습니다. cd홈 디렉토리에서 사용자를 비활성화하려면 어떻게 해야합니까?

답변:


22

먼저 요구 사항을 재평가하십시오. 해결하려는 문제는 무엇입니까? 사용자가 홈 디렉토리를 떠나지 못하게하려는 이유무엇 입니까? 오히려 다른 사용자의 홈 디렉토리와 같은 특정 다른 디렉토리 를 뒤적 거리지 않기를 원하지 않습니까?

사용자가 홈 디렉토리를 떠나지 못하게하는 것은 매우 어렵습니다. 실제로 약간 바보입니다 (설명이 이어집니다). 사용자가 원하지 않는 디렉토리에 들어 가지 못하게하는 것이 훨씬 간단합니다.

첫째, 그래 당신은 사용자에게 소위 줄 수있는 제한된 쉘을 참조하십시오 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을 쓰고 싶어 할 것 입니다. 따라서 그의 홈 디렉토리 내에서 사용자를 제한하려면 많은 것을 복사해야합니다. 실제로, 여러분은 이미 가지고있는 거의 모든 기본 파일 시스템을에 있습니다 /.


2
이것은 나에게 이해가되지 않습니다. 사용자가 1 개의 폴더에만 액세스 할 수있는 많은 이유가있을 수 있습니다. 한 예는 한 서버에서 다른 서버로 파일을 전송하기 위해 액세스를 제공 할 수 있습니다. 오히려 모든 사용자가 대신 전체 시스템을 탐색 할 수 있는 것은 약간 바보 라고 생각합니다 .
Richard

제 경우에는 장치를 원격으로 관리하기 위해 장치가 기계로 ssh를 되돌릴 수 있도록 사용자를 설정하고 있습니다. 따라서 손상된 경우를 대비하여 해당 사용자 계정을 최대한 제한하고 싶습니다. 성공적인 연결이 필요합니다. 나는 그것이 바보라고 말하지 않을 것이며, 단지 당신이 성취하려고하는 것에 달려 있습니다.
John

7

나는 사용자에 대한 액세스를 제공하는 데 필요한 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.


2
askubuntu에 오신 것을 환영합니다! 나는 이것을 홈 디렉토리와 관련된 질문에 대한 답변으로 보지 않습니다.
Geek

3
@ElderGeek OP는 동일한 명령을 사용할 수 없지만 홈 디렉토리에는 사용할 수 없습니까?
Seth

@Seth 예, 그러나 일반 사용자에게 분명합니까?
Geek

3
@ 장로 네, 그렇습니다. 완벽하지는 않지만 여전히 답
Seth

1

다른 디렉토리, 특히 다른 사용자의 홈 디렉토리에 대한 액세스를 제한 ll /home하는 것 외에도 사용자가 시스템에서 다른 사용자의 이름을 보지 못하게하고 싶지 않았습니다 .

이것을 막기 위해 root run chmod 701 /home. 이것은 /home디렉토리 자체를 "읽기 / 쓰기 / 실행"으로 만들지 만, 다른 사람에게는 "실행"만합니다. /home에 액세스 cd할 수 있지만 사용자는 다른 사용자의 홈 폴더와 사용자 이름으로 해당 내용을 읽을 수 없습니다.


이것은 엄격하게 질문에 대한 대답은 아니지만 매우 흥미 롭습니다 ... 클라이언트가 ssh 할 수있는 원격 서버를 운영하는 상황에서 이것은 훌륭합니다. 다른 클라이언트 사용자 이름의 개인 정보를 유지하면서 예상대로 계속 이동할 수 있습니다.
Jack_Hu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.