상세 컨텐츠

본문 제목

[Linux] Linux ACL (Access Control List) | 명령어 | 옵션 | 실습

IT/Linux

by o_zeew 2022. 2. 24. 18:57

본문

(1) ACL(Access Control List)

(2) ACL 명령어

(3) ACL 옵션

(4) ACL 실습

 


1. ACL (Access Control List)

  - 접근 제어 목록을 생성해 특정 사용자나 그룹에게 디렉토리나 파일의 권한을 부여

  - 파일과 디렉토리의 확장 속성 중 하나

 

 

2. ACL 명령어

 - [setfacl] : acl을 설정할 때 쓰는 명령어

 - [getfacl] : 설정한 acl을 확인할 때 쓰는 명령어

setfacl 명령어를 사용해 user a에게 권한을 준 후 getfacl 명령어로 권한 확인
acl이 설정된 파일은 끝에 + 기호가 붙음

 

 

3. ACL 옵션

  -m : 권한 수정

setfacl -m 옵션을 사용하여 user a에게 acl 파일의 r,w,x권한 부여

 

-x : 특정 사용자의 권한 삭제

setfacl -x 옵션을 사용하여 user b의 권한 삭제

   

 

   * mask값 : 기준이 되는 최소 값. mask 값이 rx로 설정된다면 user의 권한은 rx만 사용 가능.

                추가 사용자의 권한이 아무리 높아도 mask의 권한을 넘을 수 없음.

-m(수정 옵션) m:mask, : : :user설정 안함, rx:부여할 권한
쓰기 권한을 가지고 있는 user a이지만 mask 값에 w가 제거되면서 쓰기 권한이 사라짐
mask값에 다시 w권한 부여
다시 쓰기가 가능해진 user a

 

 -b : 전체 acl 삭제

acl 설정 해제

 

 

  * 기본값 설정 : setfacl -m d(default):(u,g,o,): :r,w,x(권한)

                      기본값을 설정하면 해당 디렉토리에 생성되는 하위 디렉토리는 같은 값으로 설정

기본값을 775로 설정한 acl 디렉토리에 하위 디렉토리를 생성하면 같은 값으로 생성됨
하위 디렉토리에 생성한 새 디렉토리에도 적용됨

 


 

4. <ACL 실습>

 

1. 최상위 디렉토리에 gogle 디렉토리 생성 후 하위 디렉토리 admin, sales 생성

2. 사용자는 a, b, c, d, ceo이며 a와 b는 admin 소속, c와 d는 sales 소속

3. a와 c는 각 팀의 팀원, b와 d는 각 팀의 팀장

4. 팀원은 본인 부서 디렉토리만 접근 가능하며 읽기 권한을 가짐

5. 팀장은 본인 부서 디렉토리는 모든 권한을, 다른 부서 디렉토리는 읽기 권한을 가짐

6. ceo는 모든 부서 디렉토리의 읽기 권한을 가짐

7. mask 값을 rx로 변경 후 팀장의 권한 확인

8. gogle 디렉토리에 tech 디렉토리 생성 후 default 권한을 777로 변경

9. [mkdir -p tech/1/2/3] 작업 후 하위 디렉토리 권한 상속 확인

 


 

1. 최상위 디렉토리에 gogle 디렉토리 생성 후 하위 디렉토리 admin, sales 생성

 

2. 사용자 a, b, c, d, ceo 생성

패스워드 설정

3. 다른 사용자들의 접근을 막기 위해 others의 권한 제거

o(others) -rx(rx권한 제거) 로 admin과 sales 디렉토리 권한 수정

4. [setfacl] 명령어를 사용해 /gogle/admin 디렉토리에 접근할 수 있는 사용자를 설정

admin의 팀원인 user a는 admin 디렉토리에 대해 r(읽기), x(실행) 권한 부여
admin의 팀장인 user b에게는 admin 디렉토리에 대해 r,w,x 권한 부여
다른 부서의 팀장인 user d에게는 admin 디렉토리에 대해 r,x 권한 부여
user ceo에게는 admin 디렉토리에 대해 r,x 권한 부여

 

5. 동일하게 /gogle/sales 디렉토리에 접근할 수 있는 사용자를 설정

sales의 팀원 user c, 팀장 user d, 다른부서 팀장 user b, user ceo

6. 각 사용자별 로그인 하여 접근, 읽기, 쓰기 시도

user a는 admin 디렉토리에 접근, 읽기 가능 / 쓰기 불가능
user a는 admin의 팀원이기 때문에 sales 디렉토리에 접근 불가
user b는 admin 디렉토리에 접근, 읽기, 쓰기 가능
user b는 admin의 팀장이기 때문에 sales 디렉토리에 접근, 읽기 가능 / 쓰기 불가능
user c는 sales 디렉토리에 접근, 읽기 가능 / 쓰기 불가능
user c는 sales의 팀원이기 때문에 admin 디렉토리에 접근 불가
user d는 sales 디렉토리에 접근, 읽기, 쓰기 가능
user d는 sales의 팀장이기 때문에 admin 디렉토리에 접근, 읽기 가능 / 쓰기 불가능
ceo는 모든 디렉토리에서 접근, 읽기 가능 / 쓰기 불가능

7. mask 값을 rx로 변경 후 확인 (팀장들에게서 w권한을 제거하겠다는 의미)

   * user의 권한 값이 높아도 mask 값이 설정되면 권한 사용 불가

user b와 user d가 각 디렉토리에서 w권한을 가지고 있어도 mask 값에 w가 빠져있으면 권한 사용 불가
user b가 admin 디렉토리에서 더이상 쓰기 권한 사용 불가&nbsp;
user d가 sales 디렉토리에서 더이상 쓰기 권한 사용 불가

8. gogle 디렉토리에 tech 디렉토리 생성 후 default 권한을 777로 변경

디렉토리 생성 후 /tech 디렉토리에 777 권한 설정 / tech 디렉토리에는 영향 X

9. [mkdir -p tech/1/2/3] 작업 후 하위 디렉토리 권한 상속 확인

/tech 디렉토리에 기본값 777 권한 설정 후 만들어진 하위 디렉토리는 권한 상속을 받아 모두 777 권한

 

관련글 더보기