特定の状況では、標準ユーザーまたはゲストユーザーから特権を削除できます。たとえば、リモートユーザーに対してそのユーザーが所有していないプロセスのステータスを確認できないようにしたり、個々のユーザーが自分のプロセスを強調表示するために同様の処理を行なったり、ゲストが多くのリソースを使いすぎないようにしたりする場合があります。
特定の状況では、標準ユーザーまたはゲストユーザーの基本セットから一部の基本特権を削除できます。たとえば、リモートユーザーは自分が所有していないプロセスのステータスを確認できない場合があります。
始める前に
root 役割になる必要があります。詳細は、割り当てられている管理権利の使用を参照してください。
次の 3 つの基本特権は、削除の対象になる可能性があります。
$ ppriv -lv basic file_link_any Allows a process to create hardlinks to files owned by a uid different from the process' effective uid. ... proc_info Allows a process to examine the status of processes other than those it can send signals to. Processes which cannot be examined cannot be seen in /proc and appear not to exist. proc_session Allows a process to send signals or trace processes outside its session. ...
システムを使用しようとするユーザーは、これらの特権を拒否されます。この特権削除の方法は、だれでも使用可能なコンピュータに適している可能性があります。
# pfedit /etc/security/policy.conf ... #PRIV_DEFAULT=basic PRIV_DEFAULT=basic,!file_link_any,!proc_info,!proc_session
# usermod -K 'defaultpriv=basic,!file_link_any' user
# usermod -K 'defaultpriv=basic,!proc_info' user
# usermod -K 'defaultpriv=basic,!proc_session' user
# usermod -K 'defaultpriv=basic,!file_link_any,!proc_info,!proc_session' user
この保護は、この権利プロファイルが割り当てられたユーザーまたはシステムに適用されます。
# profiles -p shared-profile -S ldap shared-profile: set defaultpriv=basic,!file_link_any,!proc_info,!proc_session ...
権利プロファイルの作成の詳細は、権利プロファイルと承認の作成を参照してください。
リモートユーザーなど、権利プロファイルを共有するユーザーの数が多い場合は、権利プロファイルにこの値を設定することがスケーラブルな解決方法になります。
# usermod -P shared-profile username
また、policy.conf ファイルでシステムごとにプロファイルを割り当てることもできます。
# pfedit /etc/security/policy.conf ... #PROFS_GRANTED=Basic Solaris User PROFS_GRANTED=shared-profile,Basic Solaris User
次の例では、jdoe の最初のログインから開始されるすべてのセッションで sys_linkdir 特権を使用できないようにします。su コマンドの実行後でも、ユーザーはディレクトリへのハードリンクの作成やディレクトリのリンク解除を実行できません。
# usermod -K 'limitpriv=all,!sys_linkdir' jdoe # userattr limitpriv jdoe all,!sys_linkdir使用例 25 ユーザー自身からの基本特権の削除
次の例では、通常のユーザーが .bash_profile を変更して proc_info 基本特権を削除します。ps や prstat などのプログラムの出力にはユーザー自身のプロセスだけが含まれており、有用な情報を示していることがあります。
## .bash_profile ## Remove proc_info privilege from my shell ## ppriv -s EI-proc_info $$
ppriv 行は、現在のシェルプロセス ($$) でユーザーの有効特権セットと継承可能特権セット (EI-) から proc_info 特権を削除します。
次の prstat 出力では、プロセスの合計が 74 から 3 に減少しています。
## With all basic privileges Total: 74 processes, 527 lwps, load averages: 0.01, 0.00, 0.00 ## With proc_info removed from the effective and inheritable set Total: 3 processes, 3 lwps, load averages: 0.00, 0.00, 0.00使用例 26 ゲストによるエディタサブプロセス生成の防止
この例では、管理者がエディタコマンドから proc_exec 基本特権を削除して、ユーザーが 1 つまたは複数のエディタからサブシェルを作成することを防止します。
管理者は、vim エディタの制限特権セットから proc_exec を削除する権利プロファイルを作成します。
# profiles -p -S ldap "Editor Restrictions" profiles:Editor Restrictions> set desc="Site Editor Restrictions" ... Restrictions> add cmd=/usr/bin/vim ... Restrictions:vim> set limitprivs=all,!proc_exec ... Restrictions:vim> end ... Restrictions> commit ... Restrictions> exit
管理者がほかの一般的なエディタを権利プロファイルに追加します。
# profiles -p "Editor Restrictions" profiles:Editor Restrictions> add cmd=/usr/bin/gedit ... Restrictions:gedit> set limitprivs=all,!proc_exec ... Restrictions:gedit> end ... Restrictions> add cmd=/usr/bin/vim ... Restrictions:vim> set limitprivs=all,!proc_exec ... Restrictions:vim> end ... Restrictions> add cmd=/usr/xpg4/ed ... Restrictions:ed> set limitprivs=all,!proc_exec ... Restrictions:ed> end ... Restrictions> add cmd=/usr/xpg4/ex ... Restrictions:ex> set limitprivs=all,!proc_exec ... Restrictions:ex> end ... Restrictions> add cmd=/usr/xpg4/vi ... Restrictions:vi> set limitprivs=all,!proc_exec ... Restrictions:vi> end ... Restrictions> commit ... Restrictions> exit
管理者は、権利プロファイルのエントリに誤字、脱字、繰り返しなどのエラーがないかどうかを確認します。
# profiles -p "Editor Restrictions" info Found profile in files repository. name=Editor Restrictions desc=Site Editor Restrictions cmd=/usr/bin/vim limitprivs=all,!proc_exec ...
管理者は Editor Restrictions 権利プロファイルを guest ユーザーに割り当てます。
# usermod -K profiles+="Editor Restrictions" guest
管理者は profiles+ を使用して、この権利プロファイルをアカウントの現在の権利プロファイルに追加します。
エディタ特権が制限されていることを確認するため、管理者はエディタを開き、別のウィンドウでエディタプロセスの特権を調べます。
# ppriv -S $(pgrep vim) 2805: vim .bash_profile flags = PRIV_PFEXEC User is running a profile shell E: basic,!proc_info proc_info is removed from basic set I: basic,!proc_info P: basic,!proc_info L: all,!proc_exec proc_exec is removed from limit set
この例では、管理者が Editor Restrictions 権利プロファイルを policy.conf ファイルに追加します。管理者は、ゲストがログインできるパブリックシステムにこのファイルが配布されていることを確認します。
# cd /etc/security; cp policy.conf policy.conf.orig # pfedit /etc/security/policy.conf ... AUTHS_GRANTED= AUTH_PROFS_GRANTED= #PROFS_GRANTED=Basic Solaris User PROFS_GRANTED=Editor Restrictions,Basic Solaris User
User Security 管理者は、すべてのユーザーにプロファイルシェルを割り当てました。理由と手順については、ユーザーへの権利の割り当てを参照してください。
関連項目
詳細は、privileges(7) のマニュアルページを参照してください。