디렉터리 /data
와 3명의 사용자(user1, user2, user3) 가 있습니다.
각 사용자에게는 폴더가 있습니다./data
[root@localhost ~]# ls -lrt /data
total 64
drwx------. 2 root root 16384 May 19 2017 lost+found
drwx------. 2 user1 user1 4096 Jun 7 2017 user1
drwx------. 3 user2 user2 4096 Jun 12 2017 user2
drwx------. 2 user3 user3 4096 Jul 16 2017 user3
user1이 로그인하여 임의의 ftp/sftp 소프트웨어를 통해 로그인할 때 "user1" 디렉토리만 나열할 수 있고 나머지 디렉토리는 보이지 않도록 권한을 설정하려면 어떻게 해야 cd
합니까 ? ./data
ls -lrt
winscp
예를 들어. 다음과 같아야합니다
[user1@localhost ~]$ ls -lrt /data
total ??
drwx------. 2 user1 user1 4096 Jun 7 2017 user1
[user1@localhost ~]$
답변1
그것은 불가능합니다. 그러나 /data에 대한 다른 사람의 권한을 --x로 설정하면 해당 사용자는 (맹목적으로) 자신의 디렉토리에만 CD를 입력할 수 있고 /data의 내용은 전혀 볼 수 없습니다.
# chmod 771 /data
답변2
이는 기존 모드 권한을 사용하는 Unix에서는 불가능합니다. 그 이유는 해당 내용을 읽으려면 디렉터리에 대한 읽기 권한이 필요하기 때문입니다.
예
이 su
명령을 사용하여 이유를 설명하겠습니다. 저는 user1, user2, user3이라는 3개의 사용자 계정을 설정했습니다.
$ su -c 'whoami' user1
user1
$ su -c 'whoami' user2
user2
$ su -c 'whoami' user3
user3
이것은 내 디렉토리 구조입니다.
$ mkdir -p /data/user{1..3}
$ for i in {1..3};do chown user${i}:user${i} /data/user${i};done
$ ls -l /data/
total 12
drwxr-xr-x 2 user1 user1 4096 Jun 30 11:35 user1
drwxr-xr-x 2 user2 user2 4096 Jun 30 11:35 user2
drwxr-xr-x 2 user3 user3 4096 Jun 30 11:35 user3
어떤 사용자도 읽을 수 없도록 권한을 설정하면 /data
어떤 사용자도 실행할 수 없습니다 ls -l /data
.
$ chmod 750 /data
$ su -c 'ls -l /data' user1
ls: cannot open directory /data/: Permission denied
소유자(루트) 또는 그룹(루트)이 아닌 사용자를 허용하려면 r-x
모든 사람에게 권한을 활성화해야 합니다(예: 추가 권한).
권한 만 활성화하면 r--
사용자는 디렉터리의 특정 측면을 나열할 수 있지만 디렉터리의 콘텐츠 등에 대한 권한은 얻을 수 없습니다.
$ chmod 754 /data
$ su -c 'ls -l /data/' user1
ls: cannot access /data/user3: Permission denied
ls: cannot access /data/user2: Permission denied
ls: cannot access /data/user1: Permission denied
total 0
d????????? ? ? ? ? ? user1
d????????? ? ? ? ? ? user2
d????????? ? ? ? ? ? user3
사용자에게 실행 권한만 부여하려고 하면 해당 --x
사용자는 하위 디렉터리에 액세스할 수 있지만 /data
콘텐츠 목록을 실행할 수는 없습니다 /data
.
$ chmod 755 /data
$ su -c 'ls -l /data/' user1
total 12
drwxr-xr-x 2 user1 user1 4096 Jun 30 11:35 user1
drwxr-xr-x 2 user2 user2 4096 Jun 30 11:35 user2
drwxr-xr-x 2 user3 user3 4096 Jun 30 11:35 user3
ACL은 어떻습니까?
여기서 ACL(액세스 제어 목록)을 사용할 수 있습니까? 이 문제를 살펴보면 더 나은 것을 줄 수 없다고 생각합니다.
여기서는 권한을 750으로 재설정 /data
하고 user1의 ACL을 /data
or 에 추가합니다 --x
.
$ chmod 750 /data
$ setfacl -m u:user1:x /data
$ ls -ld /data
drwxr-x---+ 5 root root 4096 Jun 30 11:35 /data
이제 user1 사용자는 더 이상 액세스할 수 없습니다 /data
.
$ su -c 'ls -l /data' user1
ls: cannot open directory /data: Permission denied
그러나 하위 디렉터리는 여전히 표시됩니다 /data/user1
.
$ su -c 'ls -l /data/user1' user1
total 0
권한에 미치는 영향은 다음과 같습니다 setfacl
.
$ getfacl /data
# file: data
# owner: root
# group: root
user::rwx
user:user1:--x
group::r-x
mask::r-x
other::---
질문이 있으신가요?
문제는 나열된 디렉터리의 내용에 액세스하려면 기본적으로 /data
사용자에게 r--
액세스 권한이 필요하다는 것입니다. 우리는 이것 중 "일부"를 지정할 수 없습니다. Unix 모드 권한의 세계에서는 이것이 전부 아니면 전무입니다.