다음과 같은 디렉토리 구조가 있습니다.
+ public/
|-+ pics/
| |-- a
| `-- b
`-+ thumbs/
|-- a
`-- b
gallery:http
나는 트리의 모든 파일이 스키마 세트에 의해 소유되기를 원합니다 ug=rwX,o=
.
스크립트는 그 안에 디렉토리를 생성 pics
하고 thumbs
user 로 실행됩니다 gallery
. public
, 및 pics
에 SUID/SGID 비트가 설정되어 있습니다 thumbs
.
이제 문제는 a
디렉토리가 소유자와 함께 생성되지만 그룹의 권한 gallery:http
없이 생성된다는 것입니다. x
에 전화하면 chmod
SGID 비트가 지워집니다. (이상한 동작이지만 http
사용자가 파일의 소유자가 아니기 때문에 이런 일이 발생합니다.)
chown
루트가 아닌 사용자로 호출하여 모드를 먼저 설정한 다음 소유자를 설정할 수 없습니다 .
유일한 해결책은 로 설정 umask
하고 ug=rwx,o=
모든 디렉토리를 생성한 다음 일반 파일이 생성되기 전에 변경하거나 umask
일반 파일을 생성한 다음 모드를 로 변경하는 것 같습니다 ug=rw,o=
.
내가 볼 수 없는 더 좋고 덜 추악한 솔루션이 있습니까?
답변1
스크립트를 변경할 수 있으면 호출 mkdir
을 mkdir --mode=770
.
스크립트를 변경할 수 없는 경우 ACL이 도움이 될 수 있습니다.
setfacl -m d:u::rwx,d:g::rwx,o::- pics thumbs
umask
파일에 실행 권한을 설정하지 마십시오. 어떤 권한도 설정하지 않습니다. 파일이 생성될 때 권한이 설정되지 않도록 할 뿐입니다.
답변2
여러 가지 옵션이 있습니다:
chmod g+x a
- 마스크 변경
- 액세스 제어 목록을 사용하십시오.
예, 다른 비트를 지우지 않고도 비트를 설정할 수 있습니다. 첫 번째 옵션을 참조하세요. 하지만 더욱 자동화하려면 다음 중 하나를 수행하세요.
- umask를 rwxr-x---로 설정하고 각 사용자에게 개인 기본 그룹을 제공합니다(기본 그룹은 해당 사용자에게만 속함).
- 액세스 제어 목록 사용: 이 목록을 사용하면 여러 그룹 및 사용자에 대한 권한을 설정할 수 있을 뿐만 아니라 디렉터리에 대한 기본값도 설정할 수 있습니다(sgid와 비슷하지만 그룹뿐만 아니라 모드도 설정 가능). setfacl, getfacl을 참조하세요. 당신은 또한 볼 수 있습니다Gnu/linux에서 파일 권한 등을 설정하는 다른 방법은 무엇입니까?