Linux 권한 관리 (2) ACL 권한

1. ACL 권한 의 안내
Linux 에서 사용자 가 파일 에 대한 조작 권한 은 r - 읽 기, w - 쓰기, x - 세 가지 가 있 습 니 다.한편, Liux 의 파일 에 있어 사용자 신분 은 소유자, 소속 그룹, 다른 사람 세 가지 로 나 뉜 다.또한 파일 의 소유자, 소속 그룹 은 하나 일 수 있 습 니 다.따라서 파일 에 사용자 의 사용 권한 을 분배 할 때 이 세 가지 신분 에 대해 읽 기, 쓰기, 실행 권한 만 분배 할 수 있다.
리 눅 스 는 주로 서버 시스템 으로 사용 되 며 사용자 가 많다.그래서 실제 사용 장면 에서 이 세 가지 신분 은 자원 권한 배분 문 제 를 잘 실현 하지 못 하기 때문에 ACL 권한 이 생 겼 다.ACL 권한 은 Liux 의 세 가지 신분 이 자원 권한 배분 수 요 를 만족 시 키 지 못 하 는 문 제 를 해결 하기 위해 서 입 니 다.
2. 파 티 션 ACL 권한 오픈
1. 파 티 션 ACL 권한 이 열 렸 는 지 확인
dumpe2fs -h [  ]
dumpe2fs 지정 한 파 티 션 의 상세 한 파일 시스템 정 보 를 조회 하 는 명령 입 니 다.-h 디스크 블록 그룹의 상세 한 정 보 를 표시 하지 않 고 슈퍼 블록 에 있 는 정보 만 표시 합 니 다.
출력 중 Default mount options 항목 이 acl 있 으 면 파 티 션 ACL 권한 이 열 린 다 는 뜻 입 니 다.
파 티 션 ACL 을 열 수 있 는 권한 이 없 으 면 수 동 으로 열 어야 합 니 다.
실례
[root~]# dumpe2fs -h /dev/sda1 | grep 'Default mount options'
dumpe2fs 1.42.9 (4-Feb-2014)
Default mount options:    user_xattr acl

2. 파 티 션 ACL 임시 오픈 권한
루트 파 티 션 을 다시 마 운 트 하고 마 운 트 할 때 acl 권한 을 추가 합 니 다.
mount -o remount,acl / 

3. 파 티 션 ACL 권한 영구 오픈
프로필 편집 /etc/fstab
  • 루트 디스크 의 열 을 찾 아 4 열 뒤에 추가 acl
  • UUID=64ecdf77-db7b-48a8-9066-abfb837f2e24   /   ext4    defaults,acl    1   1
  • 파일 시스템 을 다시 마 운 트 하거나 시스템 을 다시 시작 합 니 다. 수정 이 유효 합 니 다
  • mount -o remount / 

    3. getfacl 과 setfacl 명령
    1. getfacl
      ACL  
    

    문법
    getfacl [   ]
    

    2. setfacl
      、  ACL  
    

    문법
    setfacl [  ] [   ]
    

    옵션-m : ACL 권한 을 설정 하고 여러 개의 ACL 규칙 을 쉼표 로 설정 합 니 다 (, 분리-x : 지정 한 ACL 권한 을 삭제 하고 여러 개의 ACL 규칙 을 쉼표 로 (, 분리-b: 모든 ACL 권한 삭제-d: 기본 ACL 권한 설정-k: 기본 ACL 권한 삭제-R: 재 귀적 으로 ACL 권한 설정
    ACL 규칙
    setfacl 명령 은 다음 과 같은 규칙 형식 을 식별 할 수 있 습 니 다.
  • [d:]u:[ ]:[ (rwx)]: 사용자 권한 지정
  • [d:]g:[ ]:[ (rwx)]: 사용자 그룹의 권한 을 지정 합 니 다
  • [d:]m:[ (rwx)]: 최대 유효 권한 지정
  • [d:] 기본 권한 으로 설정
    4. ACL 권한 설정
    1. 사용자 에 게 ACL 권한 설정
    문법
    setfacl -m u:[   ]:[  (rwx)] [   ]
    

    활용 단어 참조
  • 디 렉 터 리 를 새로 만 들 고 권한 을 res/
  • 로 설정 합 니 다.
    [root/tmp/acl]# mkdir res
    [root/tmp/acl]# chmod 750 res/
    [root/tmp/acl]# ll
        0
    drwxr-x--- 2 root root 6 6    8 01:11 res/
  • 사용자 750 에 게 디 렉 터 리 wang 에 대한 읽 기와 쓰기 권한 설정
  • [root/tmp/acl]# setfacl -m u:wang:rx res/
  • 디 렉 터 리 정 보 를 보면 권한 열 끝 에 하나 더 res/
  • [root/tmp/acl]# ll
        0
    drwxr-x---+ 2 root root 6 6    8 01:11 res/
  • 디 렉 터 리 + 의 acl 권한 을 보면 한 줄 res/
  • 이 더 많아 진 것 을 알 수 있 습 니 다.
    [root/tmp/acl]# getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    user:wang:r-x
    group::r-x
    mask::r-x
    other::---
  • 이때 사용자 user:wang:r-x 로 전환 하면 디 렉 터 리 wang 에 들 어 갈 수 있 고 디 렉 터 리 안의 파일 을 볼 수 있 으 며 파일 을 만 들 수 없다. 이 는 사용자 res/ 가 디 렉 터 리 wang 에 대한 권한 이 res/
  • 임 을 나타 낸다.
    [root~]# su wang
    
    [wang@10 root]$ cd /tmp/acl/
    
    [wang@10 acl]$ ll
        0
    drwxr-x---+ 2 root root 6 6    8 01:11 res
    
    [wang@10 acl]$ cd res/
    
    [wang@10 res]$ ll
        0
    
    [wang@10 res]$ touch file
    touch:     "file":     

    2. 사용자 그룹 에 ACL 권한 설정
    문법
    setfacl -m g:[  ]:[  (rwx)] [   ]
    

    활용 단어 참조
  • 이전 r-x 목록
  • [root/tmp/acl]# ll
        0
    drwxr-x--- 2 root root 6 6    8 01:11 res/
  • 새 사용자 그룹 res/ 을 만 들 고 한 사용자 phper 를 새로 만 들 고 zhang 그룹
  • 에 가입 합 니 다.
    [root/tmp/acl]# groupadd phper
    
    [root/tmp/acl]# useradd -g phper zhang
    
    [root/tmp/acl]# grep phper /etc/group
    phper:x:1002:
    
    [root/tmp/acl]# grep zhang /etc/passwd
    zhang:x:1002:1002::/home/zhang:/bin/bash
  • 사용자 그룹 phper 에 디 렉 터 리 phper 에 대한 읽 기, 쓰기, 실행 권한 설정
  • [root/tmp/acl]# setfacl -m g:phper:rwx res/
  • 디 렉 터 리 res/ 의 acl 권한 을 보면 한 줄 res/
  • 이 더 많아 진 것 을 알 수 있 습 니 다.
    [root/tmp/acl]# getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    user:wang:r-x
    group::r-x
    group:phper:rwx
    mask::rwx
    other::---
  • 이때 사용자 group:phper:rwx 로 전환 하면 디 렉 터 리 zhang 에 들 어 갈 수 있 고 파일 을 만 들 수 있 으 며 디 렉 터 리 에 있 는 파일 을 볼 수 있 으 며 사용자 res/ 가 디 렉 터 리 zhang 에 대한 권한 이 res/
  • 임 을 설명 합 니 다.
    [root/tmp/acl]# su zhang
    
    [zhang@10 acl]$ ll
        0
    drwxrwx---+ 2 root root 6 6    8 01:11 res
    
    [zhang@10 acl]$ cd res/
    
    [zhang@10 res]$ touch phper.log
    
    [zhang@10 res]$ ll
        0
    -rw-r--r-- 1 zhang phper 0 6    8 02:27 phper.log

    5. ACL 권한 삭제
    1. 지정 한 사용자 의 ACL 권한 삭제
    문법
    setfacl -x u:[   ] [   ]
    

    활용 단어 참조
  • 디 렉 터 리 rwx 에 대한 사용자 wang 의 ACL 권한 삭제
  • [root/tmp/acl]# getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    user:wang:r-x
    group::r-x
    group:phper:rwx
    mask::rwx
    other::---
    
    [root/tmp/acl]# setfacl -x u:wang res/
    
    [root/tmp/acl]# getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    group:phper:rwx
    mask::rwx
    other::---

    2. 지정 한 사용자 그룹의 ACL 권한 삭제
    문법
    setfacl -x g:[  ] [   ]
    

    활용 단어 참조
  • 사용자 그룹 삭제 res/ 디 렉 터 리 phper 에 대한 ACL 권한
  • [root/tmp/acl]# getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    group:phper:rwx
    mask::rwx
    other::---
    
    [root/tmp/acl]# setfacl -x g:phper res/
    [root/tmp/acl]# getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    mask::r-x
    other::---

    3. 파일 의 모든 ACL 권한 삭제
    문법
    setfacl -b [   ]
    

    활용 단어 참조
  • 사용자 res/ 와 사용자 그룹 wang 의 디 렉 터 리 phper 에 대한 ACL 권한 추가
  • [root/tmp/acl]# setfacl -m u:wang:r-x res/
    [root/tmp/acl]# setfacl -m g:phper:rwx res/
    [root/tmp/acl]# getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    user:wang:r-x
    group::r-x
    group:phper:rwx
    mask::rwx
    other::---
  • 파일 을 삭제 할 수 있 는 모든 ACL 권한
  • [root/tmp/acl]# setfacl -b res/
    [root/tmp/acl]# getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    other::---

    6. ACL 최대 유효 권한: mask
    마스크 는 최대 유효한 권한 을 지정 하 는 데 사 용 됩 니 다.사용자 에 게 ACL 권한 을 부여 했다 면 마스크 의 권한 과 '일치' 해 야 하 며, 결과 야 말로 사용자 가 진정 으로 얻 은 권한 이다.
    1. 최대 유효 권한 마스크 보기
    getfacl [  ]
    

    파일 이 ACL 권한 을 설정 해 야 mask 항목 이 있 습 니 다.
    실례
    [root/tmp/acl]#  setfacl -m g:phper:rwx res/
    [root/tmp/acl]# getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    group:phper:rwx
    mask::rwx
    other::---

    2. 최대 유효 권한 마스크 수정
    setfacl -m m:[  (rwx)] [   ]
    

    실례
  • 최대 유효 권한 mask 수정 res/
  • [root/tmp/acl]# setfacl -m m:rx res/
    
    [root/tmp/acl]# getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    group:phper:rwx                 #effective:r-x
    mask::r-x
    other::---
  • 이때 사용자 r-x 로 전환 하면 디 렉 터 리 zhang 에 들 어 갈 수 있 고 디 렉 터 리 안의 파일 을 볼 수 있 으 며 파일 을 만 들 수 없다. 이 는 사용자 res/ 가 디 렉 터 리 zhang 에 대한 권한 이 res/
  • 임 을 나타 낸다.
    [zhang@10 acl]$ ll
        0
    drwxr-x---+ 2 root root 6 6    8 05:19 res
    
    [zhang@10 acl]$ getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    group:phper:rwx                 #effective:r-x
    mask::r-x
    other::---
    
    [zhang@10 acl]$ cd res/
    
    [zhang@10 res]$ ll
        0
    
    [zhang@10 res]$ touch file
    touch:     "file":     

    주의해 야 할 것 은 마스크 값 은 모든 사용자 와 그룹의 ACL 권한 을 설정 한 후에 수정 해 야 한 다 는 것 이다.mark 의 값 을 먼저 수정 한 다음 사용자 와 그룹의 ACL 권한 을 설정 하면 mark 값 은 시스템 에서 자동 으로 초기 화 됩 니 다.
    [root/tmp/acl]# getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    group:phper:rwx                 #effective:r-x
    mask::r-x
    other::---
    
    [root/tmp/acl]# setfacl -m u:wang:rwx res/
    
    [root/tmp/acl]# getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    user:wang:rwx
    group::r-x
    group:phper:rwx
    mask::rwx
    other::---

    7. 귀속 ACL 권한
    부모 디 렉 터 리 ACL 권한 을 설정 하 는 동시에 모든 하위 파일 과 디 렉 터 리 에 같은 ACL 권한 을 설정 합 니 다.
    재 귀적 권한 은 디 렉 터 리 만 부여 할 수 있 고 파일 은 부여 할 수 없습니다.
    setfacl -m u:[   ]:[  (rwx)] -R [   ]
    

    실례
  • 디 렉 터 리 r-x 를 만 들 고 res/ 디 렉 터 리 아래 res/dir/ 두 파일 을 만 들 고 ACL 권한
  • 을 설정 하지 않 았 습 니 다.
    [root/tmp/acl]# ll
        0
    drwxr-xr-x 3 root root 28 6    8 06:04 res/
    
    [root/tmp/acl]# getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    other::r-x
    
    [root/tmp/acl]# cd res
    
    [root/tmp/acl/res]# ll
        0
    drwxr-xr-x 2 root root 6 6    8 06:02 dir/
    -rw-r--r-- 1 root root 0 6    8 06:02 file
    
    [root/tmp/acl/res]# getfacl dir/
    # file: dir/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    other::r-x
    
    [root/tmp/acl/res]# getfacl file
    # file: file
    # owner: root
    # group: root
    user::rw-
    group::r--
    other::r--
  • 재 귀적 으로 ACL 권한 을 설정 하고 file 과 그 아래 의 모든 파일 과 디 렉 터 리 에 ACL 권한 을 설정 합 니 다
  • [root/tmp/acl]# setfacl -m g:phper:rwx -R res/
    
    [root/tmp/acl]# ll
        0
    drwxrwxr-x+ 3 root root 27 6    8 06:06 res/
    
    [root/tmp/acl]# getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    group:phper:rwx
    mask::rwx
    other::r-x
    
    [root/tmp/acl]# cd res/
    [root/tmp/acl/res]# ll
        0
    drwxrwxr-x+ 2 root root 6 6    8 06:02 dir/
    -rw-rwxr--+ 1 root root 0 6    8 06:02 file*
    
    [root/tmp/acl/res]# getfacl dir/
    # file: dir/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    group:phper:rwx
    mask::rwx
    other::r-x
    
    [root/tmp/acl/res]# getfacl file
    # file: file
    # owner: root
    # group: root
    user::rw-
    group::r--
    group:phper:rwx
    mask::rwx
    other::r--

    8. 기본 ACL 권한
    디 렉 터 리 에 기본 ACL 권한 을 설정 하면 이 디 렉 터 리 에 새로 만 든 모든 파일 과 디 렉 터 리 는 부모 디 렉 터 리 의 ACL 권한 을 계승 합 니 다.
    기본 권한 은 디 렉 터 리 만 부여 할 수 있 고 파일 은 부여 할 수 없습니다.
    기본 ACL 권한 이 실행 권한 을 설정 하 더 라 도 디 렉 터 리 에 새로 만 든 파일 은 실행 권한 이 없습니다!
    setfacl -m d:u:[   ]:[  (rwx)] [   ]
    

    실례
  • 디 렉 터 리 res/ 를 만 들 고 res/ 디 렉 터 리 에 파일 을 만 들 고 res/ ACL 권한 을 설정 하지 않 았 습 니 다
  • [root/tmp/acl]# mkdir res
    [root/tmp/acl]# touch res/file
    
    [root/tmp/acl]# ll
        0
    drwxr-xr-x 2 root root 17 6    8 06:18 res/
    
    [root/tmp/acl]# ll res/
        0
    -rw-r--r-- 1 root root 0 6    8 06:18 file
    
    [root/tmp/acl]# getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    other::r-x
    
    [root/tmp/acl]# getfacl res/file
    # file: res/file
    # owner: root
    # group: root
    user::rw-
    group::r--
    other::r--
  • 디 렉 터 리 에 기본 ACL 권한 설정
  • [root/tmp/acl]# setfacl -m d:g:phper:rwx res/
    [root/tmp/acl]# ll
        0
    drwxr-xr-x+ 2 root root 17 6    8 06:18 res/
    [root/tmp/acl]# getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    other::r-x
    default:user::rwx
    default:group::r-x
    default:group:phper:rwx
    default:mask::rwx
    default:other::r-x

    주의해 야 할 것 은 file 디 렉 터 리 자체 와 그 아래 에 이미 존재 하 는 파일 res/ 에 ACL 권한 이 없습니다.
  • 그룹 에 속 하 는 사용자 res/ 로 전환 하면 file 사용자 에 게 만 있 는 권한 을 얻 었 을 뿐 phper 디 렉 터 리 에 파일 을 만 들 수도 수정 할 수도 없다 zhang 파일
  • [zhang@10 acl]$ ll
        0
    drwxr-xr-x+ 3 root root 27 6    8 06:26 res
    
    [zhang@10 acl]$ getfacl res/
    # file: res/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    other::r-x
    default:user::rwx
    default:group::r-x
    default:group:phper:rwx
    default:mask::rwx
    default:other::r-x
    
    [zhang@10 acl]$ cd res/
    [zhang@10 res]$ ll
        4
    -rw-r--r--  1 root root 0 6    8 06:18 file
    
    [zhang@10 res]$ getfacl file
    # file: file
    # owner: root
    # group: root
    user::rw-
    group::r--
    other::r--
    
    [zhang@10 res]$ touch file2
    touch:     "file2":     
    
    [zhang@10 res]$ date > file
    bash: file:     
  • zhang 디 렉 터 리 아래 디 렉 터 리 만 들 기 other 부모 디 렉 터 리 설정 의 기본 ACL 권한 자동 보유
  • [root/tmp/acl/res]# mkdir dir
    
    [root/tmp/acl/res]# getfacl dir/
    # file: dir/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    group:phper:rwx
    mask::rwx
    other::r-x
    default:user::rwx
    default:group::r-x
    default:group:phper:rwx
    default:mask::rwx
    default:other::r-x
  • res/ 디 렉 터 리 에 파일 만 들 기 res/file 부모 디 렉 터 리 설정 의 기본 ACL 권한 을 자동 으로 가 집 니 다. 실행 권한 제외
  • [root/tmp/acl/res]# touch file_new
    
    [root/tmp/acl/res]# getfacl file_new
    # file: file_new
    # owner: root
    # group: root
    user::rw-
    group::r-x                      #effective:r--
    group:phper:rwx                 #effective:rw-
    mask::rw-
    other::r--

    어떤 경우 에 도 새 파일 은 자동 으로 실행 권한 을 가 질 수 없습니다!기본 ACL 권한 이 실행 권한 을 설정 하 더 라 도 디 렉 터 리 에 새로 만 든 파일 은 실행 권한 이 없습니다!

    좋은 웹페이지 즐겨찾기