목차
1. 사용자별로 서로 다른 권한 주는 방법
- acl
2. 문제풀이 1, 2
- mask
- default 권한 설정
사용자별 권한 할당
- 만약, test.txt 파일에 대해 a라는 사용자에겐 모든 권한, b라는 사용자에겐 읽기 및 쓰기 권한
c라는 사용자에겐 읽기 권한, d라는 사용자에겐 읽기 및 실행 권한을 줘야 한다면?
- other에게 줄 수 있는 권한은 딱 한 개이므로, 각각 권한을 줄 수 있는 방법이 필요
acl
- setfacl -m u(user):사용자계정:권한 권한할당할 디렉터리 or 파일
- -m : 특정 사람권한 수정
- -x : 특정 사람 권한 삭제
- -b : 전체 권한 삭제
ex) setfacl -m u:a:rwx acl
- getfacl 디렉터리 or 파일을 통해 확인할 수 있다
문제 풀이
- acl 기본 사용법에서 좀 더 추가
문제 1
- 최상위 디렉터리에 회사 디렉터리 생성, 회사이름은 gogle로 지정
- 회사 디렉터리 내에 부서 디렉터리 생성, admin과 sales 생성
- 직원은 총 5명(a, b, c, d, ceo)
- a와 c는 각 팀의 팀원이며, b와 d는 각팀의 팀장이다
- 팀원은 본인부서 디렉터리만 접근가능하며, 읽기권한을 가짐
- 팀장은 본인부서 디렉터리에 대해선 모든 권한을 가지고 다른 부서 디렉터리는 읽기 권한을 가짐
- ceo는 모든 부서 디렉터리에 읽기 권한을 가짐
- 설정 후 Test 진행하면서 확인
- mask 값을 rx로 변경 후 팀장의 권한 확인
- gogle 디렉터리에 tech 디렉터리 생성 후, tech 디렉터리의 default 권한을 777로 변경
- tech 디렉터리 하위 디렉터리로 1/2/3을 생성 후, 권한 상속 확인
- ceo의 acl 권한 삭제
- 모든 사용자의 acl 권한 삭제
풀이
- other에 rwx 권한 모두를 삭제하여, 권한 없는 사람은 접근 불가
- chmod 710으로도 괜찮았지만, chmod o-rx 이렇게 하는게 좀 더 좋아보임
- 팀원은 본인부서 디렉터리 읽기만 가능
- 읽기를 하기 위해서는 실행이 필요하므로, rx 권한 둘 다 주어야한다
- getfacl를 사용하여 각 사용자들 권한 확인
- a 사용자는 팀원이므로 자신의 부서인 admin에 접속가능하며, 읽기 가능
- 그러나, 쓰기는 불가
- 다른 부서인 sales에도 접속이 불가
- b 사용자는 팀장이므로 자신의 부서인 admin에 대한 모든 권한을 가짐
- 팀장이므로 다른 부서인 sales에 접속하여 읽기 가능, 쓰기는 불가
- c 사용자는 팀원이므로 자신의 부서인 sales에 접속가능하며, 읽기 가능
- 그러나, 쓰기는 불가
- 다른 부서인 admin에도 접속이 불가
- d 사용자는 팀장이므로 자신의 부서인 sales에 대한 모든 권한을 가짐
- 팀장이므로 다른 부서인 admin에 접속하여 읽기 가능, 쓰기는 불가
- ceo는 모든 부서에 읽기 권한을 가지므로 접속과 읽기 가능
- 쓰기는 불가
mask
- 예를 들어, 만명의 사용자에 대한 acl 권한을 임시적으로 어떤 작업때문에 권한을 뺄 때 사용
- 즉, 임시적으로 어떤 권한을 빼거나 추가할 때 사용
- user를 가리지 않고 모두 적용
ex) setfacl -m m::rx /gogle/admin
- 사용자의 권한이 마스크를 넘을 순 없으므로 전부 rx권한만 사용이 가능해짐
default 권한 설정
- 저번에 배운 chmod -R 옵션을 활용하여 권한을 바꾸게 되면 현재있는 디렉터리나 파일에는
적용이 되지만 새롭게 생성한 파일이나 디렉터리에는 적용이 되지 않았다
- 새로 생성한 것에도 동일하게 주기위해 사용
ex) setfacl -m d:u::rwx,d:g::rwx,d:o::rwx 디렉터리
- rwx이런식으로 쓰는 것도 가능하며, 숫자로 적는 것도 가능하다
- -x 옵션을 사용하여 특정 사용자인 ceo 삭제
- -b 옵션을 사용하여 모든 사용자 삭제
문제 2
풀이
- other 권한을 0로 해주어 다른 사람 접근 불가하게 만듬
- passwd를 사용하여 pw설정도 가능하지만, 이런 방법도 존재
- aa 사용자는 admin(rx), fin(x) 권한을 가짐
- bb 사용자는 admin(rwx), tech(x) 권한을 가짐
- cc 사용자는 sales(rx), fin(x) 권한을 가짐
- dd 사용자는 sales(rx), tech(x) 권한을 가짐
- ee 사용자는 admin(rx), sales(rx), tech(rwx) 권한을 가짐
- ff 사용자는 admin(rx), sales(rx), fin(rwx) 권한을 가짐
- ceo 사용자는 admin(rx), sales(rx), tech(rx), fin(rwx) 권한을 가짐