사용자에게 디렉터리의 파일/디렉터리 소유권을 변경할 수 있는 권한을 부여하는 방법

사용자에게 디렉터리의 파일/디렉터리 소유권을 변경할 수 있는 권한을 부여하는 방법

특정 사용자에게 특정 디렉터리 내의 파일 및 디렉터리에 대한 사용자 및 그룹 소유권을 변경할 수 있는 권한을 부여하려면 어떻게 해야 합니까?

구글링해보니 이런 내용이 있더군요setfacl, 사용자에게 파일 및 디렉터리 권한을 변경할 수 있는 특정 권한을 부여할 수 있습니다.. 그러나 내가 아는 한, 이 명령은 chown 권한 부여를 허용하지 않습니다.

따라서 파일이 있다고 가정하면

user1 user1 theFile1
user1 user1 theDirectory1

다음 명령을 실행하면 실패합니다.

[user1@THEcomputer]$ chown user2 theFile

컴퓨터에 대한 루트 액세스 권한이 있습니다. chown디렉터리 내에서 명령을 실행할 수 있는 사용자 권한을 부여하는 방법이 있습니까 ?

업데이트: 그룹에 사용자를 추가하는 방법.

여기있어기사일단 그룹 datamover에 추가했습니다.hts

[root@Venus ~]# usermod -a -G datamover hts
[root@Venus ~]# exit
logout
[hts@Venus Receive]$ groups
hts wireshark datamover
[hts@Venus Receive]$ 

업데이트(RuiFRibeiro의 주소 설명):

디렉터리의 소유권을 디렉터리로 변경하면 작동하지 않습니다. 스크린샷을 참조하세요.

[datamover@Venus root]$ ls -la
total 311514624
drwxrwxrwx. 6 datamover datamover         4096 Oct 14 14:05 .
drwxr-xr-x  4 root      root              4096 Aug 20 16:52 ..
-rwxrwxrwx. 1 datamover datamover          674 Aug 31 16:47 create_files.zip
drwxrwxrwx  2 datamover datamover         4096 Oct 17 17:07 dudi
-rwxrwxrwx. 1 datamover datamover 318724299315 Oct 13 15:47 Jmr400.mov
-rwxrwxrwx. 1 datamover datamover    182693854 Aug 31 16:47 Jmr_Commercial_WithSubtitles.mov
-rwxrwxrwx. 1 datamover datamover     80607864 Aug 31 16:47 Jmr_DataMover_Final.mov
drwxrwxrwx. 2 datamover datamover       122880 Aug 23 11:54 ManyFiles
drwxrwxrwx. 3 datamover datamover         4096 Oct 25 07:18 Receive
drwxrwxrwx  2 datamover datamover         4096 Oct 14 13:40 sarah
-rwxrwxrwx  1 datamover datamover      3184449 Oct 14 14:05 SourceGrid_4_40_bin.zip
[datamover@Venus root]$ cd ./Receive/
[datamover@Venus Receive]$ ls -la
total 178540
drwxrwxrwx. 3 datamover datamover      4096 Oct 25 07:18 .
drwxrwxrwx. 6 datamover datamover      4096 Oct 14 14:05 ..
-rwxrwxrwx  1 hts       hts       182693854 Oct 25 07:18 Jmr_Commercial_WithSubtitles.mov
drwxrwxrwx  2 datamover datamover    122880 Oct 23 13:33 ManyFiles
[datamover@Venus Receive]$ chown datamover:datamover ./Jmr_Commercial_WithSubtitles.mov
chown: changing ownership of './Jmr_Commercial_WithSubtitles.mov': Operation not permitted

파일 소유자로서의 시도는 다음과 같습니다.

[hts@Venus Receive]$ chown datamover:datamover Jmr_Commercial_WithSubtitles.mov
chown: changing ownership of 'Jmr_Commercial_WithSubtitles.mov': Operation not permitted

보시다시피 두 가지 가능성 모두 작동하지 않습니다.

업데이트(주소 카운터 패턴에 대한 답변)

파일 소유자(및 루트)는 그룹 소유권을 변경할 수 있습니다. 단, 소유자가 속한 그룹에 한합니다.

예, 먼저 로그아웃해야 합니다. 내 시도의 결과는 다음과 같습니다.

[hts@Venus ~]$ groups hts
hts : hts wireshark datamover
[hts@Venus ~]$ cd /mnt/DataMover/root/Receive/
[hts@Venus Receive]$ ls -la
total 178540
drwxrwxrwx. 3 datamover datamover      4096 Oct 25 07:18 .
drwxrwxrwx. 6 datamover datamover      4096 Oct 14 14:05 ..
-rwxrwxrwx  1 hts       hts       182693854 Oct 25 07:18 Jmr_Commercial_WithSubtitles.mov
drwxrwxrwx  2 datamover datamover    122880 Oct 23 13:33 ManyFiles
[hts@Venus Receive]$ chown hts:datamover ./Jmr_Commercial_WithSubtitles.mov 
[hts@Venus Receive]$ ls -la
total 178540
drwxrwxrwx. 3 datamover datamover      4096 Oct 25 07:18 .
drwxrwxrwx. 6 datamover datamover      4096 Oct 14 14:05 ..
-rwxrwxrwx  1 hts       datamover 182693854 Oct 25 07:18 Jmr_Commercial_WithSubtitles.mov
drwxrwxrwx  2 datamover datamover    122880 Oct 23 13:33 ManyFiles
[hts@Venus Receive]$ chown datamover:datamover ./Jmr_Commercial_WithSubtitles.mov 
chown: changing ownership of ‘./Jmr_Commercial_WithSubtitles.mov’: Operation not permitted
[hts@Venus Receive]$ 

datamover 그룹에 hts를 추가하면 그룹 섹션의 소유권을 변경할 수 있으므로 해당 설명은 이제 부분적으로 답변되고 확인됩니다.

답변1

루트만이 파일의 소유권을 변경할 수 있는 권한을 가지고 있습니다. 상당히 현대적인 Linux 배포판은 이 CAP_CHOWN기능을 제공합니다. 이 기능을 가진 사용자는 임의 파일의 소유권을 변경할 수도 있습니다. CAP_CHOWN전역적이므로 일단 부여되면 로컬 파일 시스템의 모든 파일에 적용됩니다.

파일 소유자(및 루트)는 그룹 소유권을 변경할 수 있습니다. 단, 소유자가 속한 그룹에 한합니다. 따라서 사용자 U가 그룹 A, B, C에 속하지만 그룹 D에는 속하지 않는 경우 U는 U가 소유한 파일의 그룹을 A, B, C로 변경할 수 있지만 D로는 변경할 수 없습니다. 임의의 변경 사항을 찾고 있다면 이것이 CAP_CHOWN갈 길입니다.

경고하다 CAP_CHOWNCAP_CHOWN유능한 쉘을 가진 사용자가 루트 권한을 얻을 수 있다는 점에서 심각한 보안 위험이 있습니다 . (예를 들어, chown자신의 libc, 트로이 목마를 패치하면 chown루트 프로세스가 이를 선택하기를 반환하고 기다립니다.)

특정 디렉터리의 소유권을 변경하는 기능을 제한하려고 하므로 도움이 될 수 있는 도구가 없습니다. 대신 예상되는 제한 사항을 처리하기 위해 고유한 변형을 작성할 수 있습니다 chown. 프로그램에는 다음과 같은 기능이 있어야 합니다 CAP_CHOWN.

setcap cap_chown+ep /usr/local/bin/my_chown

경고하다 귀하의 프로그램은 원본 버전을 모방할 수 있습니다 chown.my_chownuser:group filename(s). 입력 검증을 매우 신중하게 수행하십시오. 경계를 벗어나는 소프트 링크에 ​​특히 주의하면서 각 파일이 예상 제한을 충족하는지 확인하십시오.

프로그램에 대한 액세스를 특정 사용자로 제한하려면 특수 그룹을 만들고 그룹 소유권을 my_chown해당 그룹으로 설정하고 권한을 0750으로 설정한 다음 그룹에 가입할 수 있는 모든 사용자를 추가할 수 있습니다. 또는 적절한 규칙을 사용할 수 있습니다 sudo(이 경우 능력 마법도 필요하지 않습니다). 더 많은 유연성이 필요하다면 염두에 두고 있는 규칙을 my_chown.

답변2

저도 같은 문제를 겪었고 이미 ACL을 사용하고 있었습니다. 이는 귀하의 경우에는 적용되지 않을 수 있지만 제 경우에는 특정 사용자가 디렉토리 트리에 대한 쓰기 액세스 권한을 갖고 있고 다른 모든 사용자는 읽기 액세스 권한을 갖고 있으므로 내 전략은 호출하는 사용자의 쓰기 액세스를 확인하고 허용하는 작은 setuid 프로그램을 작성하는 것이었습니다. 다른 사람의 읽기 액세스를 변경합니다.

이 문제를 논의하는 질문은 다음과 같습니다.

사용자가 자신에게 속하지 않은 디렉터리에 ACL을 설정하도록 하려면 어떻게 해야 합니까?

관련 정보