ACL이 완벽하게 작동하도록 만들기

ACL이 완벽하게 작동하도록 만들기

ACL 및 권한에 대해 많은 질문과 답변이 있다는 것을 알고 있지만 솔직히 ACL은 너무 약해서 일관된 이해를 할 수 없습니다! 정리되지 않은 정보가 뒤섞여 있는 것과 같습니다.

이 질문으로 이 혼란이 끝나기를 바랍니다.

질문:

내 Ubuntu 14.04 웹 서버에서 다음을 수행하고 싶습니다.

  • 모든 files/future_files권한을 활성화합니다 640.
  • 모두 허가를 folders/future_folders받았고 750,
  • 그리고 Admin:www-data유일한기본 소유자

내 솔루션:

저는 ACL을 사용합니다:

setfacl -Rdm u:admin:rwX /path/to/parent //capital X apply for folders
setfacl -Rdm g:www-data:rX /path/to/parent
setfacl -Rdm o::- /path/to/parent 

이미 지금존재하다파일과 폴더는 규칙을 정확하게 따릅니다.

질문:

이제 사용자로 로그인했으므로 admin새 디렉터리를 만들면 되지 770않습니까 750? 새 파일을 생성하면 640이 아닌 660이 표시됩니까? 규칙을 채택하지 않겠습니까! ?


getfacl출력 은 다음 과 같습니다 .

# owner: admin
# group: www-data
# flags: ss-
user::rwx
group::r-x
other::---
default:user::rwx
default:user:admin:rwx
default:group::r-x
default:group:www-data:r-x
default:mask::rwx
default:other::---

규칙 간에 충돌이 있는 것 같습니다! 새 규칙을 적용하기 전에 모든 ACL을 제거했지만.

추신: 아래와 같이 하나의 명령으로 결합한 것을 기억합니다. 예전에는 작동했지만... 작동하지 않습니다!

etfacl -Rdm u:admin:rwX,g:www-data:rwX,o::- /path/to/parent

올바른 짧은 버전을 알고 계시다면 언제든지 알려주시기 바랍니다 :)

답변1

마침내 해결책을 찾았고 다음과 같이 여기에서 해결책을 업데이트하는 것을 완전히 잊어버렸습니다.

1: 모든 사람의 소유자를 정의하고 소유자 그룹을 상속 가능하게 만듭니다.

- sudo chown -R admin:www-data /var/www/html 
- sudo chmod g+s  /var/www/html (inherit owner group)

2: 폴더 및 파일에 기본 권한 적용(각각 750 및 640, 기본값은 보호됨)

- sudo chmod -R 750 /var/www/html
- sudo find /var/www/html -type f -print0 | sudo xargs -0 chmod 640 (apply for files only)

** repeat file permissions for each sub-directory

3: 쓰기 가능한 파일 및 폴더에 대한 권한을 신청합니다.

- sudo chmod -R 770 /var/www/html/images
- sudo find /var/www/images -type f -print0 | sudo xargs -0 chmod 660

4: 자동 상속 규칙(ACL) 적용

- setfacl -Rdm u::rwX,g::rwX,o::- /path/to/parent  (Capital X only apply to directories)

5: ACL 확인:

- getfacl /var/www/html

이것이 질문에 대한 답변이기를 바랍니다.

답변2

@Engineeroholic의 답변을 확장할 수 있는 문제 및 솔루션

이는 가능한 문제입니다.

$ whoami
admin
$ umask
0000

0000가능한 값 - 여러분이 볼 수 있는 값입니다. 어떻게 지내는지 알려주세요.하다바라보다.

다음 옵션 중 하나를 사용하여 문제를 해결하세요. 위의 문제가 결국 귀하의 문제가 아니더라도 이것이 귀하의 문제를 해결해야 한다고 생각합니다.

# option 1: one session
$ umask 0027

또는( , 를 반드시 추가하세요 >>. 보다 큼 기호로 덮어쓰지 마세요.)

# option 2: system-wide, note that you might need /etc/bash.profile, 
#           /etc/bash.bashrc, or something else called at login
#           if your system doesn't have /etc/.profile

$ echo -e "\n\n##New folders 0750, new files 0640" >> /etc/.profile
$ echo "umask 0027" >> /etc/.profile
$ source /etc/.profile

또는( , 를 반드시 추가하세요 >>. 보다 큼 기호로 덮어쓰지 마세요.)

# option3: for `admin` only. Make sure that you are writing to 
#          a file called at login, in case ~/.bashrc isn't 
#          called at that point.

$ echo -e "\n\n##New folders 0750, new files 0640" >> ~/.bashrc
$ echo "umask 0027" >> ~/.bashrc
$ source ~/.bashrc

이제 필요한 권한으로 파일을 생성할 수 있습니다.

당신은 어떤 사람들이 " 0770 - 0027 = 0750어디로 0-7갔는지" 라고 묘사하는 것을 얻게 될 것입니다 0.

더 정확하게는 당신이

   Octal1   Octal2   Binary1             Binary2
                       (    rwxrw---- )
      0770    0770         0111111000      0111111000
& NOT 0027  & 1750   & NOT 0000010111    & 1111101000
----------  ------   ----------------    ------------
      0750    0750         0111101000      0111101000
      ^                                 (   rwxr-x--- )
      |
      |
       `This one isn't really octal (I think.)

귀하의 디렉토리에.

파일의 경우:

  Octal     Binary1              Binary2
            (      rw-rw---- )
      0660        0110110000      0110110000
& NOT 0027  & NOT 0000010111    & 1111101000
----------    ----------------   ------------
      0640        0110100000      0110100000
                                (  rw-r----- )

바라보다여기자세한 내용은.

이 답변이 명확해졌는지 모르겠습니다.이유하지만 이것이 가능한 해결책입니다.

문제가 될 가능성은 낮지 만 getfacl포함을 로 default:mask::rwx변경할 수 있습니다 .default:mask::r-x

관련 정보