Solaris 資料一覧

RBACをsudoの代わりに使う

2008/5/9更新

対応バージョン: 10

sudoはOS標準では使用できないが、RBAC(Role-Based Access Control)を用いることによって同様の制御が可能になる。

例えば一般ユーザfooにroot権限でpfilesコマンドの実行を許可する場合には以下のような手順でRBACを設定する。

権利プロファイル作成

pfilesに対して任意の名前(権利プロファイル)を付ける。

# cd /etc/security
# cp -p prof_attr prof_attr.org (必要に応じてバックアップ)
# vi prof_attr
:
Pfiles::::

権利設定

上記で作成した権利プロファイルに対して具体的な権利(pfiles実行)を設定する。

# cp -p exec_attr exec_attr.org (必要に応じてバックアップ)
# vi exec_attr
:
Pfiles:suser:cmd:::/usr/bin/pfiles:privs=All

ロールユーザ作成

上記で設定した権利を割り当てるロールユーザを作成する。ここではpuserというロールユーザを作成する。

# roleadd -d /export/home/puser -m -P "Pfiles",All puser
64 ブロック

# passwd puser
新しいパスワード: *****
新しいパスワードを再入力してください: *****
passwd: puser のパスワードが変更されました

-dオプションや-mオプションなどは通常のuseraddコマンドと同じ。

-Pオプションにより権利プロファイル名を指定する。

roleaddで作成したユーザ情報は通常の/etc/passwd,/etc/shadowの他に以下の書式で/etc/user_attrに追加される。

puser::::type=role;profiles=Pfiles,All

ロールユーザの実ユーザ割当

作成したロールユーザを実ユーザと結びつける。これにより実ユーザはそのロールユーザが持つ権利を行使できるようになる。

# usermod -R puser foo

/etc/user_attrファイルには以下の内容が追加される。

foo::::type=normal;roles=puser;defaultpriv=basic,net_rawaccess

動作確認

まず通常の使用方法では権限がないのでエラーになる。

% pfiles 493
pfiles: permission denied: 493

ここでロールユーザにスイッチして同様のコマンドを実行すると今度はエラーにならない。

% su - puser
% pfiles 493
493:    /usr/lib/ssh/sshd
 Current rlimit: 256 file descriptors
  0: S_IFCHR mode:0666 dev:274,0 ino:6815752 uid:0 gid:3 rdev:13,2
     O_RDWR|O_LARGEFILE
     /devices/pseudo/mm@0:null
  1: S_IFCHR mode:0666 dev:274,0 ino:6815752 uid:0 gid:3 rdev:13,2
     O_RDWR|O_LARGEFILE
     /devices/pseudo/mm@0:null
  2: S_IFCHR mode:0666 dev:274,0 ino:6815752 uid:0 gid:3 rdev:13,2
     O_RDWR|O_LARGEFILE
     /devices/pseudo/mm@0:null
  3: S_IFSOCK mode:0666 dev:280,0 ino:62950 uid:0 gid:0 size:0
     O_RDWR|O_NONBLOCK
       SOCK_STREAM
       SO_REUSEADDR,SO_SNDBUF(49152),SO_RCVBUF(49152),IP_NEXTHOP(0.192.0.0)
       sockname: AF_INET6 ::  port: 22
  7: S_IFREG mode:0666 dev:275,1 ino:65539 uid:0 gid:0 size:0
     O_RDWR|O_LARGEFILE
     /system/contract/process/template