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