내가 소유 한 파일의 gid (group) 변경 권한이 거부되었습니다.


17

권한이 작동하는 방식에 대해 여전히 그리워하는 것 같습니다. 나는 데비안 7 시스템 btw에 있습니다. 방금 다운로드 한 파일이 있으며이 파일은 myuser:myuser사용자와 그룹이 모두 설정되어 있습니다. 그것은 $HOME내가 다운로드 한 곳이기 때문에 내 디렉토리 에도 있습니다 .

여태까지는 그런대로 잘됐다. 이제이 파일을 PC의 다른 사용자와 공유하고 파일의 그룹 소유권을 그룹 "사용자"로 전환하려고합니다. 그러나 그것은 실패합니다 :

nass@quarx:~/xmas_carol$ chgrp -R users * 
chgrp: changing group of movie.mov': Operation not permitted

폴더의 내용은 다음과 같습니다.

-rwxr-xr-x 1 nass nass 2482411461 Feb  6 03:57 movie.mov

권한으로 진행중인 작업에 대해 애매합니다. 누군가 설명 할 수 있습니까


이다 /xmas_carol삼바 / NFS를 마운트?
Rahul Patil

해결책은 setfacl(파일 시스템에 ACL이있는 경우)입니다. unix.stackexchange.com/questions/101263/…
ctrl-alt-delor

내가 그 그룹에 자신을 추가했다는 것을 깨달을 때까지 같은 오류가 발생했습니다. 즉, 변경 사항을 적용하려면 로그 아웃했다가 다시 로그인해야했습니다.
Jonathan

답변:


22

사용자가 users그룹 의 구성원 이 아니므로 해당 그룹에 파일을 제공 할 권한이 없습니다. 설명하기 위해 :

$ groups
terdon sudo netdev fuse vboxsf vboxusers

$ ls -l file
-rw-r--r-- 1 terdon terdon 604 Feb  6 03:04 file
$ chgrp users file
chgrp: changing group of ‘file’: Operation not permitted
$ chgrp vboxusers file
$ ls -l file
-rw-r--r-- 1 terdon vboxusers 604 Feb  6 03:04 file

이 동작은 POSIX 사양에 언급되어 있습니다 .

파일 소유자 또는 적절한 권한을 가진 사용자 만 파일 소유자 또는 그룹을 변경할 수 있습니다.

일부 구현에서는 지정된 그룹이 유효 그룹 ID 또는 호출 프로세스의 보충 그룹 ID 중 하나가 아닌 경우 적절한 권한을 가진 사용자에게 chgrp 사용을 제한합니다.

주된 이유는 그룹의 구성원이 아닌 경우 해당 그룹이 액세스 할 수있는 항목을 수정할 수 없기 때문입니다. 이 답변 에 대한 chown권한도 관련이있다.

일반적으로 공유 시스템에는 users모든 일반 사용자가 속한 그룹이 있으며 각 사용자의 기본 그룹입니다. 이렇게하면 users그룹이 소유 한 파일이 만들어 지고 모든 사용자가 읽을 수 있습니다.

어쨌든, 요즘은 데비안 기반 배포판이 설정되는 방식이 아니기 때문에 특정 사용자에게 파일에 대한 액세스 권한을 부여하는 방법은

  1. 파일 / 디렉토리의 그룹 소유권을 귀하와 다른 사용자가 모두 속한 그룹으로 변경하십시오.

  2. 파일 / 디렉토리의 권한을 적절히 변경하십시오.

    $ chmod 755 /home/terdon
    $ ls -ld /home/terdon
    drwxr-xr-x 170 terdon terdon 491520 Apr 20 13:43 /home/terdon/
    

    그러면 모든 사람이 디렉토리에 액세스 할 수 있습니다.


4

최근 UNIC (및 "최근"은 여기에서 다소 넓은 의미를 가짐)에서 파일의 그룹 소유권을 회원이 아닌 그룹으로 변경할 수 없습니다. 다른 UNIX 버전의 레거시 버전은 귀하와 같은 유스 케이스에 대해이를 지원했지만 보안 문제인 것으로 나타났습니다.

그룹 소유권을 외부 그룹으로 변경하는 문제는 매우 사소한 것입니다. 파일이있는 파일 시스템에 그룹 할당량이 활성화되어 있으면 악의적 인 의도를 가진 사용자가 단순히 외부 그룹의 할당량을 채울 수 있으므로 사용자가 불가능할 수 있습니다 이 그룹을 기본 그룹 ID로 사용하여 추가 파일을 작성하십시오. 이는 이미 실행중인 프로세스에도 쉽게 영향을 줄 수 있으며 "전체 디스크"로 인해 죽을 수도 있습니다.

문제를 피하기 위해 (적어도) 두 가지 가능성이 있습니다. 먼저 시스템의 수퍼 유저에게 원하는 대상 그룹을 계정의 보충 그룹 목록에 추가하도록 요청할 수 있습니다. 물론이 그룹과 관련이없는 경우에만 제한이 있습니다.

파일을 월드 쓰기 가능으로 만들 필요가없는 다른 방법은, 원하는 것은 아니지만 ACL을 사용하여 원하는 그룹에 읽기 및 쓰기 권한을 부여하는 것입니다.

$ setfacl -m group:thegroupsname:rwx the_file(s)

당신은 (일반 파일에서) 실행을 줄 필요가 없으며 쓰기 권한을 포기하고 싶지 않을 것입니다.
ctrl-alt-delor

2

불변 비트가 설정 되었기 때문일 수 있습니다. 실행중인 파일 속성 목록 가져 오기

lsattr /path/to/your/file

만약 내가 나타난 후 불변의 속성이 설정되어 있고 아무도 파일 (심지어 루트를) 수정할 수 없습니다.

속성을 제거하려면 루트로 실행해야합니다

chattr -i /path/to/your/file

더 많은 파일 시스템 속성을 보려면 매뉴얼 페이지를 읽으십시오

man chattr
man lsattr

좋은 지적이지만 질문에 따르면 질문자에게 슈퍼 사용자 권한이 없다고 가정하면 불변의 플래그를 삭제해야합니다 (적어도 오래 온 모든 파일 시스템에서). 또한 방금 아카이브를 추출 했으므로 사용한 아카이버가 아카이브를 설정해야했기 때문에 문제가 아닐 가능성이 높습니다 (동일한 문제).
Andreas Wiese

0

지금 그룹에 자신을 추가 한 경우, 로그 아웃 한 후 다시 로그인하여 변경 사항을 적용하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.