ACL 동작을 설명할 수 없습니다.

ACL 동작을 설명할 수 없습니다.

바로 웹 개발자를 위한 서버입니다. 개발자가 많습니다. 모든 developers++는 PHP그룹 Apache에 속합니다 www. 개발 디렉토리가 있습니다 - development.

목표는 development디렉터리의 모든 파일에 755권한이 있고, 개발자가 development디렉터리에서 파일을 만들고 수정할 때마다 파일에는 여전히 755.

그래서 많은 acl튜토리얼, 가이드, 가이드를 읽었지만 여전히 원하는 결과를 얻을 수 없었습니다.

  1. 내 디스크 설치에는acl
  2. 나는 가지고있다chown -R www:www development
  3. 다음에 추가chmod g+s development
  4. 나는 디렉토리에 몇 가지 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
    
  5. 내 생각에 따르면 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 예".

따라서 실제 질문은: 왜 이러한 파일이 실행 가능해야 합니까?

관련 정보