Least Privilege(最小特権機能)でログイン時にユーザに特権を与えるには
今回は読み取り権のないファイルやディレクトリにアクセスできる file_dac_read 特権をログイン時にユーザに与える方法を紹介する。(⇒
各特権の説明はこちら)
まず、以下のように一般ユーザで/etc/shadowファイルを開いてみる。
#
su - user1
Sun Microsystems Inc. SunOS
5.10 Generic January 2005
$
$
$
more /etc/shadow
/etc/shadow: アクセス権がありません。
と、まぁ当然失敗する。
そこで/etc/user_attrファイルにdefaultprivキーワードを使い、以下のようにfile_dac_read特権を適用する。
この指定でEffectiveセット、Permittedセット、Inheritableセットにfile_dac_read特権が追加される。
このほかにもlimitprivキーワードがあり、Limitセットもカスタマイズ可能だが、こちらはグローバルソーンでは一般ユーザでもデフォルトで
allなので、特に権限を拡張する必要はない。
#
cat /etc/user_attr
...
adm::::profiles=Log Management
lp::::profiles=Printer Management
root::::auths=solaris.*,solaris.grant;profiles=Web Console
Management,All;lock_a
fter_retries=no
user1::::defaultpriv=basic,file_dac_read
上記、設定にして、もう一度、一般ユーザで/etc/shadowファイルを開いてみる。
#
su - user1
Sun Microsystems Inc. SunOS
5.10 Generic January 2005
$
more /etc/shadow
...
listen:*LK*:::::::
gdm:*LK*:::::::
webservd:*LK*:::::::
nobody:*LK*:6445::::::
noaccess:*LK*:6445::::::
nobody4:*LK*:6445::::::
user1:AxEfnuHATDQB2:12930::::::
とまぁこんな具合にアクセス権を無視して、ファイルを読み取ることが可能になる。
以下のように、pprivコマンドで現在のシェルの持っている特権を見ても E, I, P
それぞれの特権セットにfile_dac_read特権が追加されていることが確認できる。
$
ppriv $$
1020: bash
flags = <none>
E: basic,file_dac_read
I: basic,file_dac_read
P: basic,file_dac_read
L: all
RBACと絡めて特定のコマンドに限定して特権を割り当てる方法はこちら
========================================
※詳しい情報は以下のトレーニングコース参照
Solaris10新機能(システム管理編)
========================================
Solaris系技術トレーニング一覧