基本セットを削減するか、制限セットを削減することにより、ユーザーまたは役割が使用可能な特権を制限することができます。このような制限は意図しない面に影響を与える可能性があるため、この方法でユーザーの特権を制限するにはそれ相応の理由が必要です。
ユーザーに対して基本セットまたは制限セットが変更されたユーザーの機能を入念にテストしてください。
基本セットがデフォルトより少ないと、ユーザーはシステムを使用できない可能性があります。
制限セットがすべての特権より少ないと、実効 UID=0 で実行する必要があるプロセスが失敗する可能性があります。
ユーザーの基本セットおよび制限セットの特権を判断します。
手順については、「プロセスの特権を判断する方法」を参照してください。
$ usermod -K defaultpriv=basic,!priv-name username |
proc_session 特権を削除することにより、ユーザーは現在のセッション外のプロセスを検査できなくなります。file_link_any 特権を削除することにより、ユーザーは所有していないファイルへのハードリンクを作成できなくなります。
proc_fork 特権または proc_exec 特権は削除しないでください。これらの特権がないと、ユーザーはシステムを使用することができません。実際のところ、これらの 2 つの特権は、ほかのプロセスに対してfork() または exec() すべきでないデーモンからそれ相応の理由がある場合にのみ削除されます。
(省略可能) 制限セットから特権の 1 つを削除します。
$ usermod -K limitpriv=all,!priv-name username |
username の機能をテストします。
username としてログインし、username がシステム上で実行する必要のあるタスクを実行してみます。
次の例では、jdoe の最初のログインから開始されるすべてのセッションで sys_linkdir 特権を使用できないようにします。すなわち、ユーザーは、su コマンドを実行したあとでも、ディレクトリへのハードリンクを作成することやディレクトリへのリンクを解除することができません。
$ usermod -K limitpriv=all,!sys_linkdir jdoe $ grep jdoe /etc/user_attr jdoe::::type=normal;defaultpriv=basic;limitpriv=all,!sys_linkdir |
次の例では、jdoe の最初のログインから開始されるすべてのセッションで proc_session 特権を使用できないようにします。すなわち、ユーザーは、su コマンドを実行したあとでも、ユーザーのセッション外のいずれのプロセスも検査できません。
$ usermod -K defaultpriv=basic,!proc_session jdoe |
$ grep jdoe /etc/user_attr jdoe::::type=normal;defaultpriv=basic,!proc_session;limitpriv=all |