썬의 오픈소스 운영체제인 오픈솔라리스의 롤-기반 접근 제한(RBAC) 스키마는 적절한 프로파일을 제공합니다. 적절한 프로파일이란 "시스템 관리에 필요한 권한들의 집합으로써 롤 혹은 사용자에게 지정될 수 있는 것" 을 뜻한다고 RBAC and Privileges 튜토리얼에서 정의되어 있습니다. 적절한 프로파일은 인증, 보안 속성이 적용된 커맨드, 그리고 다른 적절한 프로파일--보안 속성들을 그룹핑할 수 있는 편리한 방법 을 포함할 수 있습니다
RABC 을 이용하여 여러분슨 시스템 관리자로써 롤을 생성하고, 적절한 프로파일을 이 롤에 지정하고 유저들을 프로파일에 지정할 수 있습니다. 또한 롤을 직접 유저에게 지정할 수도 있습니다. 결국 이러한 유저들은 적절한 프로파일에 정의된 작업들을--꼭 슈퍼 유저로 로그인 하지 않더라도 루트 커맨드를 실행 가능 수행할 수 있습니다. 여러분이 해야할 일은 pfexec 를 커맨드에 앞에 붙이는 것 뿐입니다. 결과적으로 pfexec 는 리눅스의 su sudo 와 비슷하게 동작합니다.
이 글은 여러분이 관리자 작업들을 어떻게 위임하고 루트 권한을 우저에게 지정하는지 적절한 프로파일을 이용하는 방법으로 설명 드립니다. 여러분이 RBAC 의 개념과 오픈솔라리스의 커맨드들에 익숙해져 있다고 가정하고 또한 위에서 언급한 RBAC and Privileges 튜토리얼을 이미 읽어 보았다고 가정합니다.
유저 jmoekamp 가 NFS 를 이용해서 정기적으로 디렉토리를 share, unshare 한다고 가정해 봅시다. 일반적인 유저 권한으로는 아래에서 보듯이 이러한 작업을 수행하도록 허용하지 않습니다:
$ /usr/sbin/share /export/home/jmoekamp Could not share: /export/home/jmoekamp: no permission |
그러나 여러분은 jmoekamp 에 share 를 위한 적절한 프로파일을 지정해 주실 수 있습니다. 아래와 같이 작업합니다:
exec_attr에서share커맨드에 매칭되는 프로파일을 찾습니다. 아래에는 수행 커맨드와 그에 따른 결과를 보실 수 있고 결과적으로share는File System Managemen과 매치됨을 보실 수 있습니다:
$ grep "share" /etc/security/exec_attr File System Management:suser:cmd:::/usr/sbin/dfshares:euid=0 File System Management:suser:cmd:::/usr/sbin/share:uid=0;gid=root File System Management:suser:cmd:::/usr/sbin/shareall:uid=0;gid=root File System Management:suser:cmd:::/usr/sbin/sharemgr:uid=0;gid=root File System Management:suser:cmd:::/usr/sbin/unshare:uid=0;gid=root File System Management:suser:cmd:::/usr/sbin/unshareall:uid=0;gid=root [...]
- root 로 로그인 한 다음
File System Management프로파일을jmoekamp에 지정합니다. 아래에 커맨드의 수행과 그 결과의 출력을 보실 수 있습니다:
$ su root Password: # usermod -P'File System Management' jmoekamp UX: usermod: jmoekamp is currently logged in, some changes may not take effect until next login.
jmoekamp에게 로그아웃, 후에 다시 로그인 하라고 요청합니다.
이제 다 되었습니다! 그는 이제 share 커맨드 앞에pfexec를 붙임으로써 슈퍼유저가 될 필요 없이 디렉토리를 share, unshare 할 수 있습니다:
$ pfexec /usr/sbin/share /export/home/jmoekamp $ /usr/sbin/share - /export/home/jmoekamp rw ""
오픈솔라리스의 Primary Administrator 프로파일은 유저가 루트 권한을 가질 수 있도록 합니다. 즉 이 프로파일이 지정된 유저는 root 커맨드들을 root 로 로그인할 필요 없이 수행할 수 있습니다. exec_attr 파일의 항목을 살펴 보시기 바랍니다:
# cat /etc/security/exec_attr | grep "Primary" Primary Administrator:suser:cmd:::*:uid=0;gid=0 |
이것은 즉 이 프로파일과 함께 실행되는 pfexec 가 앞에 붙은 모든 커맨드들은 uid=0과 gid=0 으로 실행된다는 것을 뜻하고 이것이 바로 루트 권한입니다.
Primary Administrator 프로파일을 이용해서 유저에게 root 권한을 주는 것은 다음과 같은 몇가지 장점이 있습니다:
root패스워드를 유저에게 누설할 필요가 없습니다.
- 유저의 root 권한을 철회하기 위해서, 간단히
Primary Administrator프로파일을 유저의 설정에서 제거하면 됩니다--새로운 root 패스워드를 설정해야할 필요가 없습니다.
Primary Administrator프로파일을 가진 유저들은 root 쉘을 설정할 수 있고 이후에는pfexec를 붙이지 않고도root커맨드를 수행할 수 있습니다.
예제를 살펴 보시기 바랍니다:
root권한으로Primary Administrator프로파일을jmoekamp에 지정합니다. 아래에 커맨드와 그에 따른 결과물을 보실 수 있습니다:
# usermod -P'Primary Administrator' jmoekamp UX: usermod: jmoekamp is currently logged in, some changes may not take effect until next login.
- 테스트로
jmoekamp에게 로그 아웃을 한 후에 다시 로그인을 하라고 요청하고id -a커맨드를 두번 수행하게 합니다:pfexec와 같이 실행할때와 같이 실행 안할때. 결과는 다음과 같습니다:
$ id -a uid=100(jmoekamp) gid=1(other) groups=1(other) $ pfexec id -a uid=0(root) gid=0(root) groups=1(other)
pfexec없이는jmoekamp의uid및gid값이jmoekamp의 기본값과 같았고 즉 루트 권한이 아니였습니다.pfexec를 붙이고 나서uid와gid값을 통해 root 로 간주되고 있음을 볼 수 있습니다.
pfexec를 매번 앞에 붙이는 것을 방지하기 위해서jmoekamp는 root 배시 쉘을 아래와 같이 설정할 수 있습니다:
$ pfexec bash bash-3.2# id uid=0(root) gid=0(root)
- 프로파일을 제거하기 위해서는 root 로 로그인 한 후에 다음과 같이 입력합니다:
# usermod -P '' jmoekamp #
결국uid와gid는 유저의 정상 값으로 복원되었고 이 값은pfexec를 이용한id -a의 결과로 확인하실 수 있습니다. 지정된 프로파일 없이pfexec는 유저에게 어떠한 추가 권한도 양도하지 않습니다:
$ pfexec id -a uid=100(jmoekamp) gid=1(other) groups=1(other)
다시한번 상시시켜 드리자면 패스워드가 없는 pfexec 는 오픈솔라리스 버전의 리눅스 sudo 입니다. Primary Administrator 프로파일을 이용하여 root 권한을 지정하고 철회 하는 것은 아주 간단하고 직관적입니다. 또한 여러분은 audit 커맨드를 이용해서 pfexec 의 실행을 로깅하여 유저의 활동을 모니터링할 수 있습니다.
기본적으로 오픈솔라리스 2008.05 를 설치하실때 여러분이 생성한 유저에게는 자동적으로 Primary Administrator 권한이 지정되어 있습니다. 결과적으로 유저는 pfexec 를 루트의 권한으로 실행할 수 있고 이것은 아주 큰 편리함을 가져다 줍니다!
pfexec 에 대한 좀 더 자세한 정보는 멘페이지 pfexec(1) 에서 확인하실 수 있습니다.
이 글의 영문 원본은
Introducing pfexec, a Convenient Utility in the OpenSolaris OS
에서
보실 수 있습니다.
"오픈솔라리스" 카테고리의 다른 글
- 수동으로 네트워크 설정하는 방법 (댓글 0개 / 트랙백 0개) 2009/12/17
- Indiana 란 무엇이고 어떻게 참여할 수 있나요? (댓글 0개 / 트랙백 0개) 2008/04/17
- Xen: 다운로드, 설치 및 설정 정보 (댓글 0개 / 트랙백 0개) 2008/01/21
- 존 클로닝하기 (댓글 0개 / 트랙백 0개) 2009/08/27
- 오픈솔라리스에서 복수개의 부트 환경 구성하기 (댓글 0개 / 트랙백 0개) 2009/01/16
- 향상된 리소스 관리 및 존 통합 (댓글 0개 / 트랙백 0개) 2008/06/16
- 오픈솔라리스 Bug 보고하기 (댓글 0개 / 트랙백 0개) 2009/12/17
- 리눅스 가이가 썬에서 무슨 일을 하고 있나요? (댓글 1개 / 트랙백 0개) 2008/05/19
- Inside OpenSolaris: 솔라리스 드라이버 프로그래밍 Part 2 of 2 (댓글 1개 / 트랙백 0개) 2006/05/23
- OpenSolaris Project: Visual Panels (댓글 0개 / 트랙백 0개) 2007/10/22
댓글을 달아 주세요