setfacl을 사용하여 파일 및 폴더에 대해 다른 기본 권한을 설정하는 방법은 무엇입니까?

setfacl을 사용하여 파일 및 폴더에 대해 다른 기본 권한을 설정하는 방법은 무엇입니까?

set이 소유한 폴더가 있으므로 /stuff모든 새 폴더의 그룹은 으로 설정됩니다.root:stuffsetgidstuff

나는 이것을 원한다:

  • 새 파일은 다음과 같습니다 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

관련 정보