Solaris -> Solaris10 -> セキュリティー
RBAC機能
一般ユーザがあるコマンドをroot権限で実行させたい場合、UNIXでは SUDOコマンドを使用するが、 Solarisの場合 SUDO が標準でインストールされていない。 ※ オプションでインストールする場合は、 Sunfreeware.com からダウンロードすれば可能 RBAC(Role Based Access Control)機能でSUDOと同等の機能を利用することができる。
一般ユーザでのrootアカウントのロック解除
設定ファイル
実現するには3つのファイルと pfsh コマンドを使用する。 (1) /etc/security/prof_attr このファイルは予め登録されている、User Securityを使用する。 # grep -i pass /etc/security/prof_attr User Security:::Manage passwords, clearances:auths=solaris.role.*,solaris.profmgr.*, solaris.label.range,solaris.admin.usermgr.*;help=RtUserSecurity.html 追加したい場合は以下のように記述する 任意の名称:::コメント:help=dummy.xml (2) /etc/security/exec_attr * 実行するコマンドを定義する。 このファイルは予め登録されている、User Security を使用する。の passwd コマンドを使用する。 # grep "User Sec" exec_attr User Security:solaris:act:::SDTscgui;*;*;*;0:uid=0 User Security:solaris:cmd:::/usr/sbin/passmgmt:uid=0 User Security:suser:cmd:::/usr/bin/passwd:uid=0 User Security:suser:cmd:::/usr/sbin/pwck:euid=0 User Security:suser:cmd:::/usr/sbin/pwconv:euid=0 追加したい場合は以下のように記述する 任意の名称:suser:cmd:::コマンド:uid=0 * コマンドをuid=0で実行するという意味 * カラムの説明 name:policy:type:res1:res2:id:attr 詳細は man exec_attr を参照 (3) /etc/user_attr * ユーザがどのプロファイルを実行するかを定義する。 今回は一般ユーザ "user01" が root のロック解除及び パスワード変更できるようにする。 (passwd コマンドを root ユーザとして実行できる権限を付与する) 以下のエントリを追加する。 user01::::profiles=User Security
実行
コマンドをroot権限で実行する場合は、pfsh を使用する。 root権限で実行したいコマンドはオプションを含めて ダブルクォーテーションで囲まなければならない。 rootのロックを解除する。 # grep root /etc/shadow root:*LK*QKPiVWuOpK/NA:15374:::::: # # su - user01 Oracle Corporation SunOS 5.10 Generic Patch January 2005 $ $ pfsh -c "/usr/bin/passwd -u root" passwd: password information changed for root $ $ exit # # grep root /etc/shadow root:QKPiVWuOpK/NA:15374:::::: # rootのパスワードを変更する。 $ pfsh -c "/usr/bin/passwd root" New Password: Re-enter new Password: passwd: password successfully changed for root $
一般ユーザへの passwdコマンド実行権限付与 の問題点
一般ユーザに対して root 権限で passwd コマンドの実行を許可するということは rootパスワードの変更が可能となり、 root権限を得たと同じことでありセキュリティ上問題がある。 あくまで root がロックされた場合の緊急用の措置として使用するのであれば ロックを解除する機能だけ許可すればよい。 ただし、exec_attr にはコマンドオプションは指定できないようなので、 root権限でのみ実行できるロック解除シェルを作成し、それを許可するように設定する。
新たに作成するエントリ
新たに AccountUnlock という権利を作成する。 (1) /etc/security/prof_attr * 追加する行 AccountUnlock:::rootAccountUnlock:help=Dummy.html (2) /etc/security/exec_attr * 追加する行 AccountUnlock:suser:cmd:::/etc/security/AccountUnlock.sh:uid=0 (3) /etc/user_attr * 追加する行 user01::::profiles=AccountUnlock
解除用のシェル
AccountUnlock.sh ------------------------------------ #!/bin/sh /usr/bin/passwd -u root exit 0 ------------------------------------ rootのみ実行権限を付与 # chmod 500 AccountUnlock.sh # ls -l AccountUnlock.sh -r-x------ 1 root root 36 Feb 5 10:29 AccountUnlock.sh #
実行
シェルでrootのロック解除ができたか確認 # passwd -s root root LK # # su - user01 $ pfsh -c /etc/security/AccountUnlock.sh passwd: password information changed for root $ $ exit # passwd -s root root PS # passwdコマンドは使用できないことも確認 $ pfsh -c "/usr/bin/passwd -u root" Permission denied $
GUIで操作する場合
以下のコマンドで管理コンソールを起動する。 # smc &

先頭へ