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