Unix는 사용자가 디렉토리에 있는 사용자 소유의 파일만 나열하도록 제한합니다.

Unix는 사용자가 디렉토리에 있는 사용자 소유의 파일만 나열하도록 제한합니다.

디렉터리 /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합니까 ? ./datals -lrtwinscp

예를 들어. 다음과 같아야합니다

[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을 /dataor 에 추가합니다 --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 모드 권한의 세계에서는 이것이 전부 아니면 전무입니다.

관련 정보