바로 웹 개발자를 위한 서버입니다. 개발자가 많습니다. 모든 developers
++는 PHP
그룹 Apache
에 속합니다 www
. 개발 디렉토리가 있습니다 - development
.
목표는 development
디렉터리의 모든 파일에 755
권한이 있고, 개발자가 development
디렉터리에서 파일을 만들고 수정할 때마다 파일에는 여전히 755
.
그래서 많은 acl
튜토리얼, 가이드, 가이드를 읽었지만 여전히 원하는 결과를 얻을 수 없었습니다.
- 내 디스크 설치에는
acl
- 나는 가지고있다
chown -R www:www development
- 다음에 추가
chmod g+s development
나는 디렉토리에 몇 가지
acl
규칙을 설정했고development
다음과 같은 결과를 얻었습니다.$ getfacl development # file: development # owner: www # group: www # flags: -s- user::rwx user:www:rwx group::rwx group:www:rwx mask::rwx other::r-x default:user::rwx default:user:www:rwx default:group::rwx default:group:www:rwx default:mask::rwx default:other::r-x p.s. I know its messy, was doing a number of tests
내 생각에 따르면
ACL
디렉토리에 이러한 규칙이 있으면 내 작업이 완료되어야 하지만 dir 에 파일을 생성하려고 하면 다음과 같은 결과가development
나타납니다.-rw-rw-r--+ 1 www www 0 Nov 21 09:14 newfile
rw-
왜 만들어졌는지 이해가 안되는 것 같습니다 rwx
.
내가 놓치고 있는 단순한 것일 수도 있고, 내가 이해하지 못하는 일반적인 개념일 수도 있습니다.
답변1
기본 ACL은 no를 지정하는 umask를 대체합니다.기본권한이 있지만최고새 파일을 생성할 수 있는 권한입니다. 이 경우에는 rwxrwxr-x
.
그런 다음 앱은 open
원하는 권한을 사용하여 또는 을 호출합니다. creat
거의 모든 응용 프로그램은 rw-rw-rw-
파일을 요구합니다.
를 실행하여 이를 확인할 수 있습니다 strace
.
$ strace -e trace=file touch newfile
...
open("newfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
( 0666
동일합니다 rw-rw-rw-
.)
두 권한은 비트별 AND를 사용하여 결합하여 얻습니다 rw-rw-r--
.
rwxrwxr-x # default ACL
rw-rw-rw- # permission requested (e.g. by touch, vim, etc.)
& _________
rw-rw-r-- # effective permissions
다른 설명은 참조하세요POSIX 액세스 제어 목록— "기본 ACL 예".
따라서 실제 질문은: 왜 이러한 파일이 실행 가능해야 합니까?