set이 소유한 폴더가 있으므로 /stuff
모든 새 폴더의 그룹은 으로 설정됩니다.root:stuff
setgid
stuff
나는 이것을 원한다:
- 새 파일은 다음과 같습니다
rw-rw----
.- 사용자: 읽고 쓰기
- 그룹: 읽고 쓰기
- 다른: 전혀
- 새 폴더는 다음과 같습니다
rwxrwx---
.- 사용자: 읽기, 쓰기, 실행
- 그룹: 읽기, 쓰기, 실행
- 다른: 전혀
기본 ACL을 설정하면 setfacl
파일과 폴더에 대해 작동하는 것 같습니다. 나한테는 괜찮아다른파일이나 폴더 모두 권한이 없기 때문에:
setfacl -d -m o::---- /stuff
그런데 난 어떡하지?사용자그리고그룹? 위와 같은 작업을 수행하면 모든 파일과 폴더에 설정됩니다.
그리고 나는 그것을 사용할 수 없습니다 umask
.
공유 드라이브가 있습니다. 사람들은 stuff
읽기/쓰기/실행을 할 수 있는데 다른 사람(다른 사람)은 할 수 없도록 만들려고 합니다 . 계정이 무엇이든 관계없이 파일에 기본적으로 실행 비트가 설정되어 있지 않은지 확인하고 싶습니다 umask
.
답변1
파일과 디렉터리를 구별할 수 없습니다.설정값오직. 대신 다음을 사용하여 문제를 해결할 수 있습니다.이노티파이 도구새로 생성된 파일/디렉터리를 감지한 다음 각 파일/디렉터리에 올바른 ACL을 반복적으로 적용합니다.
1- 먼저 inotify-tools 패키지를 설치해야 합니다.
2-기본 /stuff 디렉토리 acl을 복원합니다.
sudo setfacl -bn /stuff
3세트 GID
sudo chmod g+s /stuff
4- 테스트를 위해 백그라운드에서 다음 스크립트를 실행합니다. 영구적인 솔루션을 위해 이를 서비스로 래핑합니다.
#!/bin/bash
sudo inotifywait -m -r -e create --format '%w%f' /stuff | while read NEW
do
# when a new dir created
if [ -d "$NEW" ]; then
sudo setfacl -m u::rwx "$NEW"
sudo setfacl -m g::rwx "$NEW"
# when a new file created
elif [ -f "$NEW" ]; then
sudo setfacl -m u::rw "$NEW"
sudo setfacl -m g::rw "$NEW"
fi
# setting no permissions for others
sudo setfacl -m o:--- "$NEW"
done