사용자(userA/, userB/ 등)를 위해 여러 폴더를 만들고 있으며 누구나 모든 디렉터리에서 파일/폴더를 생성/읽을 수 있습니다(userC는 userA/에서 fileX를 생성할 수 있습니다). 단, 해당 폴더의 파일은 해당 디렉터리의 소유자만 수정하거나 삭제할 수 있습니다. (userC는 userC/에 있는 파일만 수정/삭제할 수 있습니다.)
디렉토리 권한을 7777로 변경하려고 시도했지만 SUID가 해당 디렉토리에 대해 작동하지 않습니다.
업로드된 파일이 디렉터리 소유자를 상속받게 만드는 방법은 무엇입니까?
편집하다:UserZ는 dirZ/ 디렉터리를 소유합니다. UserZ는 dirZ/ 내의 모든 콘텐츠를 생성(업로드), 수정, 삭제 및 읽을 수 있습니다.
마찬가지로 UserY는 dirY/ 디렉터리를 소유합니다. 사용자 Y는 dirY/의 모든 항목을 생성, 수정, 삭제 및 읽을 수 있습니다.
사용자 Y는 dirZ/에 액세스할 수 있습니다. UserY는 dirZ/ 내에서 무엇이든 만들거나 읽을 수 있습니다. 사용자 Y할 수 없다dirZ/의 내용을 수정하거나 삭제하세요.
마찬가지로 UserZ는 dirY/에 액세스할 수 있습니다. UserZ는 dirY/ 내에서 무엇이든 만들거나 읽을 수 있습니다. 사용자 Z할 수 없다dirY/의 내용을 수정하거나 삭제하세요.
답변1
대부분의 UNIX 변형에서는 사용자가 다른 사용자에게 속한 파일을 생성하는 것을 허용하지 않습니다. 그럴 만한 이유가 있습니다.
당신이 그것을 필요로 한다는 것이 이상합니다. userC가 / 내에서 파일을 생성하고 삭제할 수 있도록 하려면 userA
userC에게 해당 디렉터리에 대한 쓰기 권한을 부여합니다. 설정에 따라 가장 쉬운 방법은 이러한 모든 사용자를 공개 그룹에 넣고 mygroup
해당 그룹의 모든 사용자 디렉터리를 쓰기 가능하게 만드는 것입니다.
chgrp mygroup userA userB userC
chmod g+w userA userB userC
사용ACL(액세스 제어 목록)더 많은 유연성이 필요한 경우(예: 여러 그룹이 이러한 디렉터리에 액세스하도록 허용) 바라보다디렉터리의 모든 새 파일을 그룹에서 액세스할 수 있도록 설정시스템에서 ACL을 활성화하는 데 도움이 필요한 경우.
사용자가 자신의 디렉터리 외부에 있는 디렉터리에 있는 파일을 수정할 수 있도록 하려면 파일을 그룹 쓰기 가능으로 설정하거나 해당 디렉터리에 기본 ACL을 설정하면 됩니다.
setfacl -d -m group:mygroup:rwx userA userB userC
파일 소유자를 변경해야 하는 경우(동일한 사용자 집합이 모든 파일에 액세스할 수 있으므로 이것이 중요한 이유는 무엇입니까?) 파일을 업로드할 때 루트로 실행되는 작업을 통해 이를 수행할 수 있습니다. 리눅스에서inotify 기반 도구를 사용할 수 있습니다정말로 필요한 경우 업로드를 수행하는 도구를 변경하는 것이 좋습니다(한편으로 inotify 기반 솔루션을 사용하면 파일이 매우 짧은 시간 내에 잘못된 소유권을 갖게 됩니다).
답변2
Unix 파일 시스템에는 파일 생성과 수정을 구별할 수 있는 Windows와 같은 액세스 제어가 없습니다. 사용자에게 디렉터리에 파일을 생성할 수 있는 권한(chmod +w)을 부여하면 해당 사용자도 파일을 수정할 수 있습니다. 그들을. 따라서 이 추가 기능을 제공하려면 서버 측이 필요합니다.
예를 들어 파일을 다음 용도로 사용할 vsftpd
수 있습니다 .chown
익명의연결성 - 나는 이 기능을 다른 사용자 계정으로 (다소 쉽게) 확장할 수 있기를 원하며 일부 다른 FTP 데몬에는 이미 이 기능이 있을 수 있습니다.
굳이 FTP를 사용할 필요가 없다면,Samba
귀하의 요구 사항을 충족할 수 있을 것 같습니다. (공유) 옵션을 살펴보세요 inherit owner
.