Linux

22.02.24

가로선 2022. 2. 24. 17:15

 

   목차   

 

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

acl 파일에 대해 a 사용자에게 r, x 권한을 할당

    - getfacl 디렉터리 or 파일을 통해 확인할 수 있다

 

권한 끝에 +가 붙어있으면 acl이 적용된 것

 

-x 옵션을 통해 b 사용자의 권한 삭제

 

-b 옵션을 통해 모든 사용자 권한 삭제

 

 

   문제 풀이   

 - 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 권한 삭제

 

   풀이   

 

회사 디렉터리 gogle생성 및 admin, sales 부서 생성

 

a, b는 생성되있어서 다른 직원들 생성

 

직원 생성 잘 되었는지 확인

 

admin, sales 디렉터리에는 other의 접근을 막아야 한다

    - other에 rwx 권한 모두를 삭제하여, 권한 없는 사람은 접근 불가

    - chmod 710으로도 괜찮았지만, chmod o-rx 이렇게 하는게 좀 더 좋아보임

 

문제대로 a사용자에게 /gogle/admin에 대해 rx권한을 준다

    - 팀원은 본인부서 디렉터리 읽기만 가능

    - 읽기를 하기 위해서는 실행이 필요하므로, rx 권한 둘 다 주어야한다

 

각 사용자들에게 문제에 할당된만큼 권한을 부여

 

/gogle/admin, /gogle/sales에 대한 각 사용자들의 권한 확인

    - getfacl를 사용하여 각 사용자들 권한 확인

 

a 사용자에 대한 권한 test

    - a 사용자는 팀원이므로 자신의 부서인 admin에 접속가능하며, 읽기 가능

    - 그러나, 쓰기는 불가

    - 다른 부서인 sales에도 접속이 불가

 

b 사용자에 대한 권한 Test

    - b 사용자는 팀장이므로 자신의 부서인 admin에 대한 모든 권한을 가짐

    - 팀장이므로 다른 부서인 sales에 접속하여 읽기 가능, 쓰기는 불가

 

c 사용자에 대한 권한 Test

    - c 사용자는 팀원이므로 자신의 부서인 sales에 접속가능하며, 읽기 가능

    - 그러나, 쓰기는 불가

    - 다른 부서인 admin에도 접속이 불가 

 

 

d 사용자에 대한 권한 Test

    - d 사용자는 팀장이므로 자신의 부서인 sales에 대한 모든 권한을 가짐

    - 팀장이므로 다른 부서인 admin에 접속하여 읽기 가능, 쓰기는 불가

 

ceo 사용자에 대한 권한 Test

    - ceo는 모든 부서에 읽기 권한을 가지므로 접속과 읽기 가능

    - 쓰기는 불가

 

   mask   

 - 예를 들어, 만명의 사용자에 대한 acl 권한을 임시적으로 어떤 작업때문에 권한을 뺄 때 사용

 - 즉, 임시적으로 어떤 권한을 빼거나 추가할 때 사용

 - user를 가리지 않고 모두 적용

 ex) setfacl -m m::rx /gogle/admin

    - 사용자의 권한이 마스크를 넘을 순 없으므로 전부 rx권한만 사용이 가능해짐

 

mask 값을 rx로 변경

 

getfacl을 통해 b 사용자가 자신의 부서에 대해 쓰기 권한이 삭제된 것 확인

 

getfacl을 통해 d 사용자가 자신의 부서에 대해 쓰기 권한이 삭제된 것 확인

 

b 사용자가 자신의 부서에서 쓰기 권한이 사라진 것 확인

 

d 사용자가 자신의 부서에서 쓰기 권한이 사라진 것 확인

   default 권한 설정   

 - 저번에 배운 chmod -R 옵션을 활용하여 권한을 바꾸게 되면 현재있는 디렉터리나 파일에는

    적용이 되지만 새롭게 생성한 파일이나 디렉터리에는 적용이 되지 않았다

 - 새로 생성한 것에도 동일하게 주기위해 사용

 ex) setfacl -m d:u::rwx,d:g::rwx,d:o::rwx 디렉터리

    - rwx이런식으로 쓰는 것도 가능하며, 숫자로 적는 것도 가능하다

 

default 값을 777로 설정

 

tech 폴더가 777로 생성되며, acl도 적용된 것 확인

 

tech 하위디렉터리 1, 2, 3 모두 777이 적용된 것 확인

 

acl에서 ceo를 삭제

    - -x 옵션을 사용하여 특정 사용자인 ceo 삭제

 

acl에서 모든 사용자 삭제

    - -b 옵션을 사용하여 모든 사용자 삭제

 

   문제 2   

 

문제 사진으로 대체

 

   풀이   

 

/knlee 회사 생성 후, 사용자 생성 및 /knlee 회사의 각 부서 생성

 

각 부서에 다른 사람이 접근하지 못하도록 권한을 삭제

    - other 권한을 0로 해주어 다른 사람 접근 불가하게 만듬

 

각 사용자들 pw 설정

    - passwd를 사용하여 pw설정도 가능하지만, 이런 방법도 존재

 

aa 사용자에게 admin 부서에 대해 rx 권한 부여

 

bb 사용자에게 admin 부서에 대해 rwx 권한 부여

 

admin 부서에 대해 각 사용자에게 정해진 권한 부여

 

sales 부서에 대해 각 사용자에게 정해진 권한 부여

 

tech 부서에 대해 각 사용자에게 정해진 권한 부여

 

fin 부서에 대해 각 사용자에게 정해진 권한 부여

 

aa 사용자의 부서별 권한 확인

    - aa 사용자는 admin(rx), fin(x) 권한을 가짐

 

bb 사용자의 부서별 권한 확인

    - bb 사용자는 admin(rwx), tech(x) 권한을 가짐

 

cc 사용자의 부서별 권한 확인

    - cc 사용자는 sales(rx), fin(x) 권한을 가짐

 

dd 사용자의 부서별 권한 확인

    - dd 사용자는 sales(rx), tech(x) 권한을 가짐

 

ee 사용자의 부서별 권한 확인

    - ee 사용자는 admin(rx), sales(rx), tech(rwx) 권한을 가짐

 

ff 사용자의 부서별 권한 확인

    - ff 사용자는 admin(rx), sales(rx), fin(rwx) 권한을 가짐

 

ceo 사용자의 부서별 권한 확인

    - ceo 사용자는 admin(rx), sales(rx), tech(rx), fin(rwx) 권한을 가짐

 

fin 부서의 mask값을 rx 설정 후, ff와 ceo 사용자의 권한 확인

 

fin 디렉터리에 하위 디렉터리를 생성할 때 775 권한을 갖게 하기 위한 default 값 설정

 

fin 디렉터리에 하위 디렉터리로 test1, test2, test3 생성

 

fin 하위디렉터리 test1, test2, test3 모두 775가 적용된 것 확인

'Linux' 카테고리의 다른 글

22.03.02  (0) 2022.03.02
22.02.28  (0) 2022.02.28
22.02.23  (0) 2022.02.23
22.02.22  (0) 2022.02.22
22.02.21  (0) 2022.02.21