ACL, SUDO, RBAC - 윈디하나의 솔라나라

목차

ACL

인증(Authentication)과 인가(Authorization)
인증은 사용자의 신분을 확인하는 행위이고, 인가는 사용자가 어떤 행위를 할 수 있도록 허가하는 행위를 말한다. 운영체제에서, 인증은 보통 계정이름 및 패스워드를 입력하는 방식을 사용하고, 인가는 패스워드를 입력하는 방식을 사용한다. 유사한 방법을 사용하기 때문에 인증과 인가에 대해 혼동이 오기 쉬우니 주의하자. 이 문서에서 설명할 ACL 및 RBAC 는 인가에 대한 설명이다. 인가는 사용자가 요구한 행위에 필요한 권한을 가지고 있는지 확인하는 작업이 수반되며, 권한을 가지고 있다면 사용자에게 ○○에게 □□행위를 허가했다는 내용을 가진 신임장(Credential)을 발급하게 된다. 신임장은 보통 시스템의 메모리에 저장되고, 신임장을 재사용해야 할 경우 암호화해서 사용자에게 전달하곤 한다.

UFS에서의 ACL

UFS에서의 ACL은 POSIX 사양에 기반한 ACL모델을 지원한다. 아래의 예제에서 windystaff그룹의 사용자이다. file1, file2에 대해서 접근 권한을 부여 여부를 확인할 것이다.

더 자세한 내용은 getfacl(1), setfacl(1), ls(1) 을 참고하자.

root@wl ~/test # vi file1 1)
FILE1
root@wl ~/test # ls -l 1)
-rw-r--r--   1 root     other          6  3월 19일  16:17 file1
root@wl ~/test # getfacl file1 2)
# file: file1
# owner: root
# group: other
user::rw-
group::r--              #effective:r--
mask:r--
other:r--
root@wl ~/test # chmod 440 file1 3)
root@wl ~/test # ls -l
-r--r-----   1 root     other          6  3월 19일  16:17 file1
root@wl ~/test # setfacl -m u:windy:r-- file1 4)
root@wl ~/test # ls -l 5)
-r--r-----+  1 root     other          6  3월 19일  16:17 file1
root@wl ~/test # getfacl file1 6)
# file: file1
# owner: root
# group: other
user::r--
user:windy:r--          #effective:r--
group::r--              #effective:r--
mask:r--
other:---
root@wl ~/test # setfacl -d u:windy:r-- file1 7)
root@wl ~/test # vi file2
FILE2
root@wl ~/test # getfacl file1 | setfacl -f - file2 8)
1) file1을 생성하고 권한을 확인한다. root:other/644가지고 있다. 이 상태에서 windy사용자는 이 파일을 읽을 수 있다.
2) getfacl(1) 명령으로 파일 권한을 확인해본다. ACL을 이용해 설정하지 않은 상태이다.
3) file1440권한으로 변경한 후 ACL을 확인한다. 이 상태에서는 windy사용자는 이 파일을 읽을 수 없다.
4) file1의 ACL을 u:windy:r--으로 수정(-m)한다. u:windy:r--의 의미는 windy 유저(u)에게 r--권한(읽기권한)을 준다는 뜻이다. 읽기/쓰기/실행권한을 주고 싶다면 rwx을 사용하면 된다. 사용자(u)외에 그룹(g)을 지정할 수도 있다. u:windy:r--부분을 ACL Entry이라 하는데 자세한 사항은 MAN페이지를 참고한다. 이 상태에서 windy사용자는 이 파일을 읽을 수 있다.
5) 권한필드에 + 가 붙은것을 알 수 있다. 이 파일에는 ACL이 있다는 뜻이다.
6) 변경된 부분을 확인할 수 있다.
7) 아까준 권한을 삭제한다. 이 상태에서는 windy사용자는 이 파일을 읽을 수 없다.
8) file1의 접근 정보(권한과 ACL정보)을 file2으로 복사한다.

ZFS에서의 ACL

ZFS에서 getfacl(1) 명령을 주면 아래와 유사한 메시지를 볼 수 있다.
root@wl ~/test # getfacl file1
File system doesn't support aclent_t style ACL's.
See acl(5) for more information on Solaris ACL support.
root@wl ~/test #
ZFS가 도입되면서 ACL이 변경되었다. ZFS에서의 ACL은 NFSv4의 ACL과 유사하다. NT와도 비슷한 방법이다. ZFS의 ACL은 chmod(1) 명령을 이용해 설정한다. 자세한 내용은 Oracle® Solaris 11.3의 ZFS 파일 시스템 관리 - 9장 ACL 및 속성을 사용하여 Oracle Solaris ZFS 파일 보호을 참조한다.

RBAC

sudo

솔라리스의 RBAC

root@wl ~ # vi /etc/security/exec_attr 1)
Apache Management:suser:cmd:::/usr/local/apache2/bin/apachectl:uid=0
root@wl ~ # vi /etc/security/prof_attr 2)
Apache Management:::Manage the Apache web server:
root@wl ~ # cat /etc/security/auth_attr 3)
root@wl ~ # roleadd -d /export/home/rapache -u 400 -m -P "Apache Management" rapache 4)
root@wl ~ # passwd rapache
새 암호:
새 암호를 다시 입력하십시오:
passwd: 암호(rapache용)가 성공적으로 변경되었습니다.
root@wl ~ # cat /etc/passwd
rapache:x:400:1::/export/home/rapache:/bin/pfsh
root@wl ~ # cat /etc/user_attr
rapache::::type=role;profiles=Apache Management
root@wl ~ # usermod -R rapache admin 5)
root@wl ~ # cat /etc/user_attr
admin::::type=normal;roles=rapache

root@wl ~ # su - rapache 6)
$ id
uid=400(rapache) gid=1(other)
# /usr/local/apache2/bin/apachectl start 7)
# exit

# su - admin 8)
$ id
uid=111(admin) gid=10(staff)
$ su - rapache
Password:
$ id
uid=400(rapache) gid=1(other)
$ /usr/local/apache2/bin/apachectl start

root@wl ~ # su - windy 9)
windy@wl ~ $ su - rapache
Password:
Roles can only be assumed by authorized users
su: 잘못되었습니다
windy@wl ~ $
1) exec_attr 파일을 수정한다. "Apache Management"라는 프로파일에 대한 실행커맨드/권한에 대한 내용이다.
2) prof_attr 파일을 수정한다. "Apache Management"라는 프로파일에 대한 설명이다. 이로써 프로파일 생성이 완료되었다.
3) auth_attr은 이번 작업에서 수정해야 할 필요 없다. 특별한 권한이 필요하지 않기 때문이다.
4) [롤계정]인 rapache를 추가한다. /etc/passwd, /etc/shadow, /etc/user_attr 파일이 수정된다. (직접 수정해도 된다) useradd대신 roleadd를 사용했고, -P옵션을 통해 위에서 생성한 프로파일을 지정한다. 셸이 /bin/pfsh 으로 되어있는데 이는 profile sh이라는 뜻이다. (불행이도 pfbash는 없는 듯 하다) 패스워드도 변경한다.
5) 롤계정 rapache 를 일반계정 admin 이사용할 수 있도록 지정해준다. /etc/user_attr 파일이 수정된다. (직접 수정해도 된다) 여기까지 설정이 모두 끝났다.
6) rapache 롤 계정으로 전환한다.
7) 아파치가 정상적으로 시작된다.
8) admin계정으로 전환한후 다시 rapache계정으로 전환해 아파치를 시작할 수 있다.
9) windy계정은 (rapache의 패스워드를 알아도) rapache계정으로 전환되지 않는다는 것을 알 수 있다.

롤 계정을 일반 계정으로 전환

RSS ATOM XHTML 5 CSS3