Solarisの機能の1つにRBAC(Role Based Access Control)が有ります。一言で言うとroot権限で実行されるいくつかの役割を特定ユーザに与えるってことだと思います。root権限を分散化でき、セキュリティ強化に繋がります。
フリーソフトのsudoと似てます。その機能をちょっと試してみました。RBACの詳細内容、設定ファイルなどは他のサイト等をご参照下さい。
前提として、role名をpwrole、割り当てるユーザ名をhogeとします。
(1) 割り当てる承認、プロファイルを検索。
# cd /etc/security # grep passwd exec_attr --- Name Service Security:suser:cmd:::/usr/bin/nispasswd:euid=0 User Security:suser:cmd:::/usr/bin/passwd:uid=0 # grep -i password auth_attr --- solaris.admin.usermgr.pswd:::Change Password::help=AuthUserMgrPswd.html
上記の作業により、どうやらプロファイル名 User Security と承認名 solaris.admin.usermgr 辺りを割り当てれば良さそうだということが分かります。
(2) role作成。
Aオプションで承認名を、Pオプションでプロファイル名を指定します。後は、useraddコマンドのオプションとほぼ同様です。
# roleadd -A "solaris.admin.usermgr.*" -P "User Security" \ -d /export/home/pwrole -c "passwd mente role" \ -s /bin/pfsh -u 3000 -m pwrole # passwd pwrole
(3) 一般ユーザ作成。
通常通りユーザを作成します。但し、Rオプションにて先ほど作成したrole(pwrole)を指定します。
# useradd -u 4000 -g 10 -d /export/home/hoge -s /bin/sh -m \ -R pwrole hoge # passwd hoge
(4) ここまでの作業で設定ファイルの内容を確認。
# cat /etc/user_attr --- pwrole::::type=role;auths=solaris.admin.usermgr.*;profiles=User Security hoge::::type=normal;roles=pwrole
(5) 動作確認。
では、動作確認です。ここでは、一般ユーザhogeユーザにて、他ユーザuser1のパスワードを変更してみます。パスワード変更が出来れば、正しく設定出来ています。
hogeユーザでログインしてユーザIDを確認します。
$ id --- uid=4000(hoge) gid=10(staff)
pwroleに移行。ここで、"Roles can only be assumed by authorized users"のエラーが出る場合は、そのユーザに役割が割り当っていないので再度設定を確認してみて下さい。
$ su - pwrole $ id --- uid=3000(pwrole) gid=1(other)
他ユーザ(user1ユーザ)のパスワードを変更してみる。
$ passwd user1 --- New Password: Re-enter new Password: passwd: password successfully changed for user1
前提として、role名をcronrole、割り当てるユーザ名をhoge2とします。
(1) 割り当てる承認、プロファイルを検索。
# cd /etc/security # grep cron exec_attr --- Process Management:suser:cmd:::/usr/bin/crontab:euid=0 Cron Management:suser:cmd:::/etc/init.d/cron:uid=0;gid=sys Process Management:suser:cmd:::/etc/init.d/cron:uid=0;gid=sys Cron Management:suser:cmd:::/usr/bin/crontab:euid=0 # grep -i cron auth_attr --- solaris.jobs.grant:::Delegate Cron & At Administration::help=JobsGrant.html
上記の作業により、どうやらプロファイル名 Cron Management と承認名 solaris.jobs.grant 辺りを割り当てれば良さそうだということが分かります。
(2) role作成。
Aオプションで承認名を、Pオプションでプロファイル名を指定します。後は、useraddコマンドのオプションとほぼ同様です。
# roleadd -A "solaris.jobs.grant" -P "Cron Management" \ -d /export/home/cronrole -c "cron mente role" \ -s /bin/pfsh -u 3001 -m cronrole # passwd cronrole
(3) 一般ユーザ作成。
通常通りユーザを作成します。但し、Rオプションにて先ほど作成したrole(cronrole)を指定します。
# useradd -u 4001 -g 10 -d /export/home/hoge2 -s /bin/sh -m \ -R cronrole hoge2 # passwd hoge2
(4) ここまでの作業で設定ファイルの内容を確認。
# cat /etc/user_attr --- cronrole::::type=role;auths=solaris.jobs.grant;profiles=Cron Management hoge2::::type=normal;roles=cronrole
(5) 動作確認。
では、動作確認です。ここでは、一般ユーザhoge2ユーザにて、他ユーザuser1のクーロンの設定を変更してみます。クーロンの設定変更が出来れば、正しく設定出来ています。
hoge2ユーザでログインしてユーザIDを確認します。
$ id --- uid=4001(hoge2) gid=10(staff)
cronroleに移行。
$ su - cronrole $ id --- uid=3001(cronrole) gid=1(other)
他ユーザ(user1ユーザ)のクーロンを設定してみる。
$ crontab -e user1 $ ls -l /var/spool/cron/crontabs --- -r-------- 1 root other 13 Sep 14 23:09 user1 $ crontab -r user1