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

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

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

구글 검색을 해보니 이런 내용이 있더군요.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는 자신이 소유한 파일의 그룹을 A, B, C로 변경할 수 있지만 D로는 변경할 수 없습니다. 임의 변경을 원하는 경우, 그렇다면 CAP_CHOWN갈 길은 다음과 같습니다.

주의 CAP_CHOWN보안에 심각한 영향을 미치므로 기능이 있는 셸을 가진 사용자는 CAP_CHOWN루트 권한을 얻을 수 있습니다. (예를 들어, chownlibc를 자신에게 설치하고 트로이 목마를 패치한 후 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을 설정하도록 하는 방법은 무엇입니까?

관련 정보