리눅스 ACL
ACL(Access Control List)은 디렉토리 및 파일에
특정 사용자, 그룹에 특정 권한을 넣어 줄 수 있는 기능이다.
root 사용자의 홈 디렉토리에 액세스 해서
rwx가 모두 가능하도록 설정하고 싶을 때.
혹은 다른 사용자의 디렉토리에 모든 권한을 얻고 싶을 때.
권한을 모두 주지 않고 특정 디렉토리만 선택해서
특정 유저에게 권한을 주고 싶을 때.
사용하는 기능입니다.
사용방법
ACL을 위한 명령어로 setfacl과 getfacl이 있다.
setfacl은 설정하는 명령어이고,
getfacl은 확인하는 명령어이다.
root의 홈 디렉토리인 /root에
일반 사용자인 user1 접근하여 읽기와 쓰기
실행하기 모두 가능하도록 설정해 보자.
setfacl -m u:user1:rwx /root
이렇게 하면 user1은 /root 디렉토리에
접근하여 읽기, 쓰기, 실행 모두 허용이 된다.
setfacl -m d:u:user2:rwx /root
마찬가지로 일반 사용자인 user2는
/root 디렉토리 내에서, 현재는 없지만
앞으로 생성되는 모든 디렉토리와 파일들까지
접근하여 읽기, 쓰기, 실행 모두 가능하도록 설정한다.
user1과 다른 부분은 d:가 붙는 것이다.
검색해 보니까 default의 약자인 것 같다고
되어있는데 확실치 않다.
확인방법
확인은 getfacl [디렉토리]
-acl을 사용하기 위해서는 설정한
디렉토리가 속해있는 파티션에 옵션이 필요하다.
tune2fs -l [해당 블록 디바이스]를 입력해 보면
Default mount options 항목을 확인할 수 있다.
옵션으로 user_xattr과 acl 이 적용된 것을
확인할 수 있는데 user_xattr 은 데이터를 저장하면서
함께 저장되는 메타 정보들에 관리자가
직접 접근하여 삽입 수정 삭제할 수 있는
EA를 사용할 수 있도록 해 주는 옵션이고
acl 옵션이 있어야 위에 설명한 acl을 적용할 수 있다.
새롭게 추가한 하드디스크는 none으로
설정되어 있어 /etc/fstab 내용에 defaults 대신
acl을 입력해 설정해 주어야 하지만
그렇게 하면 Default Mount Option에는 들어가지 않는다.
기타 옵션
tune2fs 명령어를 통해 영구적으로 acl 옵션을
켤 수 있으므로 명령어를 사용해 적용하도록 하자.
Default mount options
tune2fs -o acl [블록디바이스]
이 명령어를 실행하면 해당
블록디바이스는 마운트옵션에 acl이 추가된다.
user_xattr를 추가해야 한다면
tune2fs -o userXattr 하고 입력하면
acl처럼 자동으로 마운트 옵션에 추가된다.
acp 설정이 적용된 파일, 혹은 디렉토리는
cp에 -p 옵션을 사용하지 않으면 acl 설정 자체가
사라지므로 유의하도록 하자.