썬의 오픈소스 운영체제인 오픈솔라리스의 롤-기반 접근 제한(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 를 위한 적절한 프로파일을 지정해 주실 수 있습니다. 아래와 같이 작업합니다:

  1. exec_attr 에서 share 커맨드에 매칭되는 프로파일을 찾습니다. 아래에는 수행 커맨드와 그에 따른 결과를 보실 수 있고 결과적으로 shareFile 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
    [...]
      
     
  2. 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.
      
     
  3. jmoekamp 에게 로그아웃, 후에 다시 로그인 하라고 요청합니다.
     
    이제 다 되었습니다! 그는 이제 share 커맨드 앞에 pfexec 를 붙임으로써 슈퍼유저가 될 필요 없이 디렉토리를 share, unshare 할 수 있습니다:
     
    $ pfexec /usr/sbin/share /export/home/jmoekamp
    $ /usr/sbin/share
    -               /export/home/jmoekamp rw ""
    
     
 
Root 권한을 유저에게 주기

오픈솔라리스의 Primary Administrator 프로파일은 유저가 루트 권한을 가질 수 있도록 합니다. 즉 이 프로파일이 지정된 유저는 root 커맨드들을 root 로 로그인할 필요 없이 수행할 수 있습니다. exec_attr 파일의 항목을 살펴 보시기 바랍니다:

# cat /etc/security/exec_attr | grep "Primary"
Primary Administrator:suser:cmd:::*:uid=0;gid=0
 

이것은 즉 이 프로파일과 함께 실행되는 pfexec 가 앞에 붙은 모든 커맨드들은 uid=0gid=0 으로 실행된다는 것을 뜻하고 이것이 바로 루트 권한입니다.

Primary Administrator 프로파일을 이용해서 유저에게 root 권한을 주는 것은 다음과 같은 몇가지 장점이 있습니다:

  • root 패스워드를 유저에게 누설할 필요가 없습니다.
     
  • 유저의 root 권한을 철회하기 위해서, 간단히 Primary Administrator 프로파일을 유저의 설정에서 제거하면 됩니다--새로운 root 패스워드를 설정해야할 필요가 없습니다.
     
  • Primary Administrator 프로파일을 가진 유저들은 root 쉘을 설정할 수 있고 이후에는 pfexec 를 붙이지 않고도 root 커맨드를 수행할 수 있습니다.

예제를 살펴 보시기 바랍니다:

  1. 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.
      
     
  2. 테스트로 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 없이는 jmoekampuidgid 값이 jmoekamp 의 기본값과 같았고 즉 루트 권한이 아니였습니다. pfexec 를 붙이고 나서 uidgid을 통해 root 로 간주되고 있음을 볼 수 있습니다.
     
    pfexec 를 매번 앞에 붙이는 것을 방지하기 위해서 jmoekamp 는 root 배시 쉘을 아래와 같이 설정할 수 있습니다:
     
    $ pfexec bash
    bash-3.2# id
    uid=0(root) gid=0(root)
    
     
  3. 프로파일을 제거하기 위해서는 root 로 로그인 한 후에 다음과 같이 입력합니다:
     
    # usermod -P '' jmoekamp
    #
      
     
    결국 uidgid 는 유저의 정상 값으로 복원되었고 이 값은 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
에서 보실 수 있습니다.

"오픈솔라리스" 카테고리의 다른 글

2008/12/05 17:58 2008/12/05 17:58

TRACKBACK :: http://blog.sdnkorea.com/blog/trackback/689

댓글을 달아 주세요

[로그인][오픈아이디란?]

◀ Prev 1  ... 171 172 173 174 175 176 177 178 179  ... 806  Next ▶