특정 사용자가 디렉터리 및 모든 하위 디렉터리에 대한 rwx 액세스 권한을 갖도록 디렉터리에 대한 ACL을 설정하려면 어떻게 해야 합니까?

특정 사용자가 디렉터리 및 모든 하위 디렉터리에 대한 rwx 액세스 권한을 갖도록 디렉터리에 대한 ACL을 설정하려면 어떻게 해야 합니까?

참고: 질문을 명확히 하기 위해 빈 디렉토리로 시작한다고 가정합니다. 비어 있지 않은 경우 해당 -R옵션을 사용할 수 있다는 것을 알고 있습니다 setfacl.

내가 시도한 내용은 다음과 같습니다( /tmp/badDir사용자가 생성하고 소유할 때 사용자에게 액세스 권한을 부여하려고 함).meotheruser

$ sudo -u otheruser mkdir /tmp/badDir
$ sudo setfacl -dm "user:me:rwX" /tmp/badDir
$ sudo -u otheruser touch /tmp/badDir/baz
$ touch /tmp/badDir/baz

그래서 언뜻 보면 괜찮아 보입니다.

그러나 필요한 다른 작업을 시도하면 다음과 같은 결과가 나올 것으로 예상되지 않습니다.

$ touch /tmp/badDir
touch: setting times of '/tmp/badDir': Permission denied
$ touch /tmp/badDir/foo
touch: cannot touch '/tmp/badDir/foo': Permission denied

따라서 사용자가 만든 디렉터리의 파일을 수정할 수는 있지만 디렉터리 메타데이터를 수정하거나 디렉터리에 파일을 만들 수는 없는 것 같습니다 otheruser.

ls합계의 출력은 다음 getfacl과 같습니다.

$ ls -last /tmp/badDir
total 0
0 drwxrwxrwt  1 root     root     1794 Jun 22 09:22 ..
0 -rw-rw-r--+ 1 otheruser otheruser    0 Jun 22 09:22 baz
0 drwxr-xr-x+ 1 otheruser otheruser    6 Jun 22 09:22 .


$ getfacl /tmp/badDir
getfacl: Removing leading '/' from absolute path names
# file: tmp/badDir
# owner: otheruser
# group: otheruser
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:me:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

$ getfacl /tmp/badDir/baz
getfacl: Removing leading '/' from absolute path names
# file: tmp/badDir/baz
# owner: otheruser
# group: otheruser
user::rw-
user:me:rwx     #effective:rw-
group::r-x          #effective:r--
mask::rw-
other::r--

업데이트 1

확인을 위해 ACL을 활성화했습니다.

$ sudo tune2fs -l /dev/disk/by-uuid/8d6bba7d-63c1-4406-855a-f56987dea98e | grep acl                                     
Default mount options:    user_xattr acl

답변1

동료가 나에게 디렉터리에 대한 권한을 개별적으로 설정해야 한다고 지적했습니다.이 디렉터리에 생성된 파일에 대한 기본 권한입니다.따라서 다음 두 가지가 모두 필요합니다.

sudo setfacl -d -m "user:me:rwX" /tmp/badDir
sudo setfacl    -m "user:me:rwX" /tmp/badDir # Notice the missing -d

관련 정보