사용자가 다른 사용자에 대한 쓰기 권한이있는 파일을 변경하지 못하도록하려면 어떻게해야합니까?

R 슐츠

최근 이상한 상황이 발생했습니다. 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

User1은 파일을 읽을 수 있지만 새 파일을 만들거나 기존 파일을 편집 / 복사하려는 시도는 실패했습니다. 오류는 다음과 같습니다.

$ touch file1
touch: cannot touch 'file1': Permission denied

드라이브가 어떻게 든 쓰기 금지되어 있다고 생각한 User1은 User2에게 파일 변경을 요청했습니다. User2는 문제없이 작업을 수행 할 수 있었으므로 드라이브가 쓰기 방지되지 않았 음을 나타냅니다.

보면 df/etc/fstab파일은 로컬 하드 드라이브를 장착에있을 것처럼 보였다.

기타 정보. User1은 User2 그룹에 있습니다. (원래는 그렇지 않은 것으로 생각되었습니다.) 파일에 대한 잠금이 없습니다. SE Linux가 비활성화 된 것처럼 보였습니다. (로 표시된대로 sestatus) 일반적으로 사용자가 전체 디렉토리를 설정하여 다른 사람이 쓸 수 있도록 허용하는 것은 원하지 않지만 이것은 특별한 경우입니다. 별도의 시스템에서 거의 동일한 빌드가 작동했습니다. getfacl의 출력은 파일과 디렉토리에 대해 동일합니다.

# file: .
# owner: user
# group: user
user::rwx
group::r-x
other::rwx

이 보호의 원인은 무엇이며 어떻게 취소 할 수 있습니까?

R 슐츠

원래 사실 중 하나가 잘못 되었기 때문에 간단히 질문을 삭제하려고했습니다. 나는 명백한 대답을 놓치고이 문제에 대한 가능한 원인과 해결책을 게시 할 수있는 명백하지 않은 대안이 있기 때문에 미래에 유사한 문제가 발생할 수있는 사람들을 돕기로 결정했습니다.

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에게 감사드립니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관