특정 사용자에게 특정 디렉터리 내의 파일 및 디렉터리에 대한 사용자 및 그룹 소유권을 변경할 수 있는 권한을 부여하려면 어떻게 해야 합니까?
구글링해보니 이런 내용이 있더군요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_CHOWN
CAP_CHOWN
유능한 쉘을 가진 사용자가 루트 권한을 얻을 수 있다는 점에서 심각한 보안 위험이 있습니다 . (예를 들어, chown
자신의 libc, 트로이 목마를 패치하면 chown
루트 프로세스가 이를 선택하기를 반환하고 기다립니다.)
특정 디렉터리의 소유권을 변경하는 기능을 제한하려고 하므로 도움이 될 수 있는 도구가 없습니다. 대신 예상되는 제한 사항을 처리하기 위해 고유한 변형을 작성할 수 있습니다 chown
. 프로그램에는 다음과 같은 기능이 있어야 합니다 CAP_CHOWN
.
setcap cap_chown+ep /usr/local/bin/my_chown
경고하다
귀하의 프로그램은 원본 버전을 모방할 수 있습니다 chown
.my_chown
user:group filename(s)
. 입력 검증을 매우 신중하게 수행하십시오. 경계를 벗어나는 소프트 링크에 특히 주의하면서 각 파일이 예상 제한을 충족하는지 확인하십시오.
프로그램에 대한 액세스를 특정 사용자로 제한하려면 특수 그룹을 만들고 그룹 소유권을 my_chown
해당 그룹으로 설정하고 권한을 0750으로 설정한 다음 그룹에 가입할 수 있는 모든 사용자를 추가할 수 있습니다. 또는 적절한 규칙을 사용할 수 있습니다 sudo
(이 경우 능력 마법도 필요하지 않습니다). 더 많은 유연성이 필요하다면 염두에 두고 있는 규칙을 my_chown
.
답변2
저도 같은 문제를 겪었고 이미 ACL을 사용하고 있었습니다. 이는 귀하의 경우에는 적용되지 않을 수 있지만 제 경우에는 특정 사용자가 디렉토리 트리에 대한 쓰기 액세스 권한을 갖고 있고 다른 모든 사용자는 읽기 액세스 권한을 갖고 있으므로 내 전략은 호출하는 사용자의 쓰기 액세스를 확인하고 허용하는 작은 setuid 프로그램을 작성하는 것이었습니다. 다른 사람의 읽기 액세스를 변경합니다.
이 문제를 논의하는 질문은 다음과 같습니다.