최근 이상한 상황이 발생했습니다. User1은 User2에 속하고 User2 그룹에 있는 디렉터리의 파일을 변경할 수 있어야 합니다. 이 편집을 용이하게 하려면 디렉터리 구조의 권한을 757로 반복적으로 수정하십시오. 그러면 목록은 아래와 같습니다.
drwxr-xrwx 3 user2 user2 4096 Nov 19 19:41 .
drwxr-xr-x 3 user2 user2 4096 Nov 19 19:41 ..
drwxr-xrwx 3 user2 user2 4096 Nov 19 19:41 directory1
drwxr-xrwx 3 user2 user2 4096 Nov 19 19:41 directory2
drwxr-xrwx 3 user2 user2 4096 Nov 19 19:41 directory3
-rwxr-xrwx 3 user2 user2 42 Nov 19 19:41 file1
사용자 1은 파일을 읽을 수 있지만 새 파일을 만들거나 기존 파일을 편집/복사하려는 시도는 실패합니다. 오류는 다음과 유사합니다.
$ touch file1
touch: cannot touch 'file1': Permission denied
사용자 1은 드라이브가 쓰기 금지되어 있다고 생각하고 사용자 2에게 파일을 변경하도록 요청합니다. 사용자 2는 아무런 문제 없이 이 작업을 수행할 수 있었으며 이는 드라이브가 쓰기 금지되어 있음을 나타냅니다.
df
및 을 살펴보면 /etc/fstab
파일이 로컬로 마운트된 하드 드라이브에 있는 것으로 보입니다.
기타 정보. User1은 User2 그룹에 속합니다. (처음에는 그렇지 않다고 생각했습니다.) 파일에 잠금이 없습니다. SE Linux가 비활성화된 것 같습니다. (표시된 바와 같이 sestatus
) 일반적으로 누구나 쓸 수 있도록 전체 디렉토리를 설정하고 싶지 않을 것이라고 생각하지만 이것은 특별한 경우입니다. 별도의 컴퓨터에서 거의 동일한 빌드가 작동합니다. getfacl의 출력은 파일과 디렉터리에 대해 동일합니다.
# file: .
# owner: user
# group: user
user::rwx
group::r-x
other::rwx
이 보호의 원인은 무엇이며 이를 취소하는 방법은 무엇입니까?
답변1
원래 사실 중 하나가 잘못되었기 때문에 이 질문을 삭제하려고 했습니다. 나는 명백한 답변을 놓쳤기 때문에 나중에 비슷한 문제가 발생할 수 있는 사람들을 돕기 위해 이 문제에 대한 가능한 원인과 해결책을 게시하기 위해 덜 명확한 대안을 찾기로 결정했습니다.
1) 이 문제가 발생하고 user1이 user2에 속하지 않는다고 생각되면 user1에게 그룹을 확인하거나 passwd 파일을 확인하여 직접 확인하십시오. 이 경우 user1이 다음 /etc/passwd
항목으로 잘못 추가되었으며 에는 항목이 없습니다 /etc/group
.
user1:x:1001:1000:User1:/home/user1:/bin/bash
그리고 사용자 2는 다음과 같습니다/etc/passwd
user2:x:1000:1000:User2:/home/user2:/bin/bash
그리고
user2:x:1000:user2 user1
그룹 권한은 다른 권한보다 우선하므로 쓰기가 허용되지 않습니다. 그룹 권한을 변경하거나 user2 그룹에서 user1을 제거하면 이 문제를 해결할 수 있습니다. 이것은 원래의 가설이 맞다면 아마도 많은 사람들이 얻을 수 있는 간단한 대답이다. 작동하지 않는 것이 있으면 직접 확인해야 한다는 점을 기억하세요.
2) 덜 명확한 대답은 파일 액세스 제어 목록(ACL)을 사용하는 것입니다. 해당 사용자에게 특정 권한이 할당된 경우 이러한 권한은 일반 권한보다 우선합니다. ACL을 사용해 본 사람이라면 누구나 이 사실을 알고 있을 것입니다. 그러나 많은 사람들은 ACL이 존재한다는 사실조차 모르는 것 같습니다. 다음은 사용자를 차단하는 방법의 예입니다.
$ sudo setfacl -m u:user:r-x .
$ ls -la
total 0
drwxr-xrwx+ 2 root root 60 Nov 21 20:46 .
drwxrwxrwt. 12 root root 300 Nov 21 20:45 ..
-rw-rw-r--. 1 user user 0 Nov 21 20:46 dog
$ touch cat
touch: cannot touch ‘cat’: Permission denied
$ getfacl .
# file: .
# owner: root
# group: root
user::rwx
user:user:r-x
group::r-x
mask::r-x
other::rwx
이 작업을 실행 취소하려면
$ sudo setfacl -b .
$ sudo getfacl .
# file: .
# owner: root
# group: root
user::rwx
group::r-x
other::rwx
$ touch cat
$ ls -la cat
-rw-rw-r--. 1 user user 0 Nov 21 20:51 cat
궁극적으로 나를 돌아가서 재검증하게 만든 그룹에 요청한 @andcoz와 이전에 본 적이 없거나 사용한 적이 없는 "getacl"을 언급한 @Rianto Wahyudi에게 감사드립니다.