ACL을 사용하여 umask를 재정 의하여 지정된 디렉토리 세계에서 작성된 모든 파일을 읽을 수 있습니까?


12

내 umask가 0077이라고 가정하십시오.

foo특수 권한을 적용하려는 디렉토리 가 있습니다. 내가 만든 모든 파일 foo은 월드에서 읽을 수 있어야하고 모든 디렉토리는 월드에서 읽고 읽을 수 있어야합니다.

현재 파일을 만들면 0600이되고 디렉토리는 0700이됩니다.

$ cd foo/
$ touch file
$ mkdir directory
$ ls -l
drwx------ 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw------- 1 nfm nfm    0 2012-01-12 16:15 file

내 umask에 관계없이 파일이 0644이고 디렉토리가 0755가되기를 원합니다.

drwxr-xr-x 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw-r--r-- 1 nfm nfm    0 2012-01-12 16:15 file

어떻게하면 되나요?


"디렉토리 당 umask"인터넷 검색을 시도하지 않았습니까? 내가 권한을 가지고 있다면, 세 번째 히트는 당신이 원하는 것을 정확하게 수행하기위한 bash hack (다른 사용자가 아닌 당신에게만 부여 된)이기 때문입니다.
Brett Dikeman

3
@BeeDee 나는 그것을 보았다. ACL을 사용하여 다른 방법으로 흥미 롭습니다. 모든 CD에서 umask를 확인 / 변경하거나 bash 함수를 재정의하지 않습니다.
stickmangumby

답변:


15

예, acl은 이것을 할 수 있습니다.

  1. 파일 시스템이 acl로 마운트되었는지 확인하십시오. 이를 확인하려면을 입력하십시오 mount. 다음과 같은 다른 권한 중 'acl'이 나열되어 있습니다.

    /dev/sda1 on / type ext4 (rw,errors=remount-ro,acl)
    

    acl로 마운트되지 않은 경우 / etc / fstab을 열고 옵션 목록에 'acl'을 추가하십시오.

    # /etc/fstab: static file system information.
    #
    # <file system> <mount point>   <type>   <options>       <dump>  <pass>
    /dev/sda1       /          ext3     noatime,errors=remount-ro,acl 0       1
    

    이제 새로운 옵션으로 실행중인 파일 시스템을 다시 마운트하십시오.

    mount -v -o remount /
    
  2. acl 유틸리티를 설치하십시오. 우분투 / 데비안에서 이것은 :

    sudo apt-get install acl
    
  3. 새 친구는 setfaclgetfacl. setfacl디렉토리의 기본 acl을 변경하는 데 사용하십시오 .

    setfacl -d -m o:r foo
    

    -d기본값을 설정 -m하고 acl을 수정하며 o:r"other"에게 읽을 권한을 부여합니다. 디렉토리에서 기본값을 설정 하는 것은 디렉토리에서 setgid 를 설정하는 것과 거의 동일 하지만 그룹을 상속하는 새로 작성된 파일 대신 acl을 상속합니다. 효과적인 그룹 기반 디렉토리 별 umask를 위해 그룹에 기본 권한을 부여하고 새로 작성된 파일을 해당 그룹에 속할 수 있기 때문에 setgid와 acl을 함께 사용할 수 있습니다.

  4. 작업 확인 : ls -l이제 표준 파일 권한 외에 acl이 있음을 나타내는 추가 "+"가 표시되어야합니다.

    % ls -la foo/
    drwxr--r--+
    

    를 사용하여 acl에 대한 자세한 정보를 얻을 수 있습니다 getfacl.

    % getfacl foo
    # file: foo
    # owner: you
    # group: you
    user::rwx
    group::r--
    other::r--
    default:user::rwx
    default:group::---
    default:other::r--
    

1
이것은 나를 위해 작동하지 않는 것 같습니다. setfacl그리고 getfacl예상 출력을 반환하는,하지만 상위 디렉토리 내에서 디렉토리 (파일이 아닌) ACL을 상속하고, 그렇다하더라도 내 umask를 (그렇지 않은 세계 읽을 경우 기본 우선 취하고 default:other::r--다른 사용자를 허용하지 않습니다 액세스하십시오). 내가 분명한 것을 놓친 적이 있습니까?
stickmangumby

내가 찾은 것 중 하나는 아마도 문제 일 것입니다. facl은 현재 사용자와 일치하는 첫 번째 (사용자, 그룹, 기타)를 사용하는 것 같습니다. 즉, 파일의 그룹에 속하면 다른 그룹의 acl이 아닌 그룹의 acl이 처리됩니다. -d를 사용하여 디렉토리를 적용한 경우에도 acl은 계속 상속되어야합니다.
user67641

1
흠, 그냥 다시 시도하고 모든 것이 잘 작동했습니다. 죄송합니다. 처음에 잘못한 점이 확실하지 않습니다. 감사합니다 :)
stickmangumby

3

마스크 ACL 속성을 다음과 같이 설정하여 디렉토리에 대한 umask를 강제 실행할 수도 있습니다.

setfacl -d -m mask:07 .

-4

OnDir을 설치 하고 필요에 따라 올바르게 구성하십시오. 나는 여기 에있는 비슷한 문제에 답했다 .


이 질문에는 OnDir의 목적인 터미널을 사용하여 디렉토리를 탐색하는 것에 대한 언급이 없습니다.
Yarin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.