
누구나 모든 디렉터리에서 파일/폴더를 생성/읽을 수 있는 사용자(userA/, userB/ 등)를 위해 여러 폴더를 만들고 있습니다(userC는 userA/ 내부에서 fileX를 만들 수 있습니다). 그러나 해당 폴더 내의 파일은 해당 디렉터리의 소유자만 수정하거나 삭제할 수 있습니다. (userC는 userC/ 내의 파일만 수정/삭제할 수 있습니다.)
디렉터리 권한을 7777로 변경하려고 시도했지만 SUID가 디렉터리에 적용되지 않습니다.
업로드된 파일이 디렉터리 소유자를 상속하도록 허용하려면 어떻게 해야 합니까?
편집하다:UserZ는 dirZ/ 디렉터리를 소유합니다. UserZ는 dirZ/ 내부의 모든 것을 생성(업로드), 수정, 삭제 및 읽을 수 있습니다.
마찬가지로 UserY는 dirY/ 디렉터리를 소유합니다. 사용자 Y는 dirY/ 내부의 모든 것을 생성, 수정, 삭제 및 읽을 수 있습니다.
UserY는 dirZ/에 액세스할 수 있습니다. UserY는 dirZ/ 내부에서 무엇이든 만들거나 읽을 수 있습니다. 사용자Y할 수 없다dirZ/ 내부의 내용을 수정하거나 삭제하세요.
마찬가지로 UserZ는 dirY/에 액세스할 수 있습니다. UserZ는 dirY/ 내부에서 무엇이든 만들거나 읽을 수 있습니다. 사용자Z할 수 없다dirY/ 안의 내용을 수정하거나 삭제하세요.
답변1
대부분의 유닉스 변형에서는 사용자가 다른 사용자에게 속한 파일을 생성하는 것을 허용하지 않습니다.
당신이 그것을 필요로 한다는 것이 오히려 이상합니다. 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
옵션을 살펴보세요.