setsecattr コマンド

目的

コマンド、デバイス、特権ファイル、プロセス、またはドメイン割り当てオブジェクトのセキュリティー属性を設定します。

構文

setsecattr [-R load_module]{ -c | -d | -p | -f | -o} Attribute = Value [ Attribute = Value ...] Name

説明

setsecattr コマンドは、Name パラメーターによって指定された、コマンド、デバイス、またはプロセスのセキュリティー属性を設定します。 このコマンドは、Name パラメーターを、-c (コマンド)、-d (デバイス)、-f (特権ファイル)、または -p (プロセス) のいずれのフラグが指定されるかに基づいて、コマンド、デバイス、特権ファイル、またはプロセスのいずれかとして解釈します。

システムを、Name パラメーターによって指定された以下のいずれかの値に構成すると、システムは、/etc/nscontrol.conf ファイルの対応するデータベース・スタンザの secorder 属性によって指定された順序で実行します。
  • 複数ドメインからのデータベースを使用する
  • 特権コマンドのセキュリティー属性を設定する
  • 特権デバイスのセキュリティー属性を設定する
  • 特権ファイルのセキュリティー属性を設定する
  • ドメイン割り当てオブジェクトのセキュリティー属性を設定する

最初のマッチング・エントリーのみが変更されます。 残るドメインからの重複エントリーは変更されません。 特定のドメインからのエントリーを変更する場合は、-R フラグを使用します。 ドメイン内にマッチング・エントリーが検出されない場合は、最初のドメインに Name パラメーターの新規エントリーが作成されます。 特定のドメインにエントリーを追加する場合は、-R フラグを使用します。

属性の値を設定するには、Attribute=Value パラメーターによって属性名および新規の値を指定します。 属性をクリアするには、Attribute=Value のペアに Attribute= を指定します。 値がリストである属性に増分変更を行うには、Attribute=+Value としての Attribute=Value のペア、または Attribute=-Value を指定します。 Attribute=+Value を指定すると、値は、属性の既存の値に追加されます。 Attribute=-Value を指定すると、値は、属性の既存の値から除去されます。

フラグ

項目 説明
-c システム上のコマンドのセキュリティー属性を設定するように指定します。 Name パラメーターを使用して指定するコマンド名が、特権コマンド・データベース内にない場合は、/etc/security/privcmds 特権コマンド・データベース内にコマンド・エントリーが作成されます。 属性がクリアされ、それがコマンドに設定された唯一の属性であると、コマンドは特権コマンド・データベースから除去されます。 特権コマンド・データベースに加えられた変更は、データベースが、setkst コマンドを使用してカーネル・セキュリティー・テーブルに送信されるまで使用されません。
-d システム上のデバイスのセキュリティー属性を設定するように指定します。 Name パラメーターを使用して指定するデバイス名が、特権デバイス・データベース内にない場合は、/etc/security/privdevs 特権デバイス・データベース内にデバイス・エントリーが作成されます。 属性がクリアされ、それがデバイスに設定された唯一の属性であると、デバイスは特権デバイス・データベースから除去されます。 特権デバイス・データベースに加えられた変更は、データベースが、setkst コマンドを使用してカーネル・セキュリティー・テーブルに送信されるまで使用されません。
-f システム上の特権ファイルのセキュリティー属性を設定するように指定します。 Attribute=Value のペアによって要求される変更が、/etc/security/privfiles 特権ファイル・データベースで行われます。 指定されたファイルが特権ファイル・データベース内にない場合は、データベース内にファイル・エントリーが作成されます。 属性がクリアされ、それがコマンドに設定された唯一の属性であると、コマンドは特権ファイル・データベースから除去されます。
-o システム上のオブジェクトのセキュリティー属性を設定するように指定します。Name パラメーターを使用して指定したオブジェクト名がドメイン・オブジェクト・データベースに ない場合は、/etc/security/domobjs ドメイン・オブジェクト・データベース内にオブジェクト・エントリーが作成されます。 消去している属性が、オブジェクトに設定された唯一の属性セットであった場合は、 そのオブジェクト・エントリーはドメイン・オブジェクト・データベースから除去されます。 ドメイン・オブジェクト・データベースに加えられた変更は、そのデータベースが setkst コマンドを使用して カーネル・セキュリティー・テーブルに送信されるまで使用されません。
-p システム上のアクティブなプロセスの数字プロセス ID (PID) が設定されることを指定します。 Attribute=Value のペアによって指定する変更は、指定されたアクティブなプロセスの状態に即時影響します。 変更は、データベース内に保管されません。
-R load_module セキュリティー属性の変更に使用するロード可能モジュールを指定します。

パラメーター

項目 説明
Attribute = Value オブジェクトのセキュリティー属性の値を設定します。 有効な属性名のリストは、-c-d-p、 および -o の各フラグを使用して指定されたオブジェクト・タイプによって決まります。
特権コマンド・データベース (-c) フラグには、以下の属性を使用します。
accessauths
アクセス許可を指定します。 許可名のコンマで区切られたリストを指定します。 合計で 16 個の許可を指定できます。 指定した許可を持つユーザーは、このコマンドを実行できます。 この属性には、ALLOW_OWNER、ALLOW_GROUP、および ALLOW_ALL の 3 つの特殊な追加の値があり、これにより、コマンド所有者、グループ、またはすべてのユーザーは、アクセス許可の検査なしにコマンドを実行できます。
authprivs
許可特権を指定します。 プロセスに追加の特権を付与する、許可および特権のペアのリストを指定します。 以下の例に示すように、許可およびその対応する特権は等号 (=) によって分離され、個々の特権は正符号 (+) によって分離され、許可または特権のペアはコンマ (,) によって分離されます。
auth=priv+priv+...,auth=priv+priv+...,...
最大で 16 個の許可または特権のペアを指定できます。 ロールを指定します。 そのロールのユーザーは、コマンドを正常に実行できるようになる前に、認証される必要があります。 ロールのコンマ区切りリストを指定します。 各ロールは、それぞれ異なるユーザーによって認証される必要があります。例えば、どのユーザーも一度に複数のロールに対して認証を行うことはできません。
authroles
コマンドを正常に実行できるようになる前に認証される必要のあるユーザー・ロールを指定します。 複数のロールをリストする場合は、各ロールをコンマで区切ってください。 例えば、次のようにします。
authroles=so,isso
各ロールは、それぞれ異なるユーザーによって認証される必要があります。 例えば、どのユーザーも複数のロールに対して認証を行うことはできません。
innateprivs
固有の特権を指定します。 コマンドの実行時にプロセスに割り当てられる特権の、コンマで区切られたリストを指定します。
inheritprivs
相続可能な特権を指定します。 子プロセスに受け渡される特権の、コンマで区切られたリストを指定します。
euid
コマンドの実行時に引き受ける有効ユーザー ID を指定します。
egid
コマンドの実行時に引き受ける有効グループ ID を指定します。
 
ruid
コマンドの実行時に引き受ける実ユーザー ID を指定します。 有効な値は 0 のみです。コマンドの accessauths 属性で特殊値 ALLOW_ALL を指定することによって、 コマンドが全ユーザーにアクセス許可を与えた場合、この属性値は無視されます。
secflags
ファイル・セキュリティー・フラグを指定します。 セキュリティー・フラグのコンマで区切られたリストを指定します。 このフラグには、以下の値を使用します。
FSF_EPS
コマンドの実行時に、最大の特権セットが、有効な特権セットにロードされます。
 
特権デバイス・データベース (-d) フラグには、以下の属性を使用します。
readprivs
ユーザーまたはプロセスが、デバイスへの読み取りアクセスを行う場合に持つ必要がある特権の、コンマで区切られたリストを指定します。 最大 8 つの特権を指定できます。 ユーザーまたはプロセスは、デバイスから読み取るための、リストされたいずれかの特権を持つ必要があります。
writeprivs
ユーザーまたはプロセスが、デバイスへの書き込みアクセスを行う場合に持つ必要がある特権の、コンマで区切られたリストを指定します。 最大 8 つの特権を指定できます。 ユーザーまたはプロセスは、デバイスに書き込むための、リストされたいずれかの特権を持つ必要があります。
 
特権ファイル (-f) フラグには、以下の属性を使用します。
readauths
読み取りアクセス許可を指定します。 許可名のコンマで区切られたリストを指定します。 何らかの許可を持つユーザーは、ファイルを読み取れます。
writeauths
書き込みアクセス許可を指定します。 許可名のコンマで区切られたリストを指定します。 何らかの許可を持つユーザーは、ファイルを読み取ったり、あるいは書き込むことができます。
特権プロセス (-p) フラグには、以下の属性を使用します。
eprivs
有効な特権セットを指定します。 プロセスの場合にアクティブになる特権の、コンマで区切られたリストを指定します。 プロセスは、このセットから特権を除去し、最大の特権セットからの特権をその有効な特権セットに追加する場合があります。
iprivs
継承可能な特権セットを指定します。子プロセスの有効かつ最大の特権のセットに渡される、コンマで区切られた特権のリストを指定します。継承可能な特権セットは、限定特権セットのサブセットです。
mprivs
最大の特権セットを指定します。 プロセスがその有効な特権セットに追加できる特権の、コンマで区切られたリストを指定します。 最大の特権セットは、有効な特権セットのスーパーセットです。
lprivs
限定特権セットを指定します。 プロセス用の最大可能な特権セットを構成する特権の、コンマで区切られたリストを指定します。 限定特権セットは、最大特権セットのスーパーセットです。
uprivs
使用済み特権セットを指定します。 処理の存続中に使用される特権の、コンマで区切られたリストを指定します。 このセットは、主として tracepriv コマンドによって使用されます。
  ドメイン割り当てオブジェクト・データベース (-o) フラグには、以下の属性を使用します。
domains
オブジェクトが属するドメインのコンマ区切りリストを指定します。
conflictsets
オブジェクトへのアクセスから除外されるドメインのコンマ区切りリストを指定します。
objtype
オブジェクトのタイプを指定します。有効な値は、device、netint、netport、および file です。
secflags
オブジェクトのセキュリティー・フラグを指定します。有効な値は以下のとおりです。
  • FSF_DOM_ANY: この値は、プロセスがドメイン属性に指定されたドメインのいずれかを持つ場合に オブジェクトにアクセスできることを指定します。
  • FSF_DOM_ALL: プロセスがドメイン属性に指定されたすべてのドメインを持つ場合にのみ オブジェクトにアクセスできることを指定します。 secflags が指定されていない場合は、これがデフォルト値です。

FSF_DOM_ANYFSF_DOM_ALL は同時に指定できないフラグです。

Name 変更するオブジェクトを指定します。 Name パラメーターは、指定するフラグに従って解釈されます。 処理する名前は 1 つずつ指定する必要があります。

セキュリティー

setsecattr コマンドは特権コマンドです。 これは、モードを 755 に設定した root ユーザーおよびセキュリティー・グループによって所有されます。 このコマンドを正常に実行するには、以下の許可のうちの少なくとも 1 つを持つロールを引き受ける必要があります。 トラステッド・プロセスの場合、 監査システムは個別のプロセスのオブジェクト監査イベントをログに記録しません。 ただし、ユーザーはイベント監査を使用してイベントをキャプチャーすることができます。

項目 説明
aix.security.cmd.set -c フラグを指定したコマンドの属性を変更する場合に必要です。
aix.security.device.set -d フラグを指定したデバイスの属性を変更する場合に必要です。
aix.security.file.set -f フラグを指定したデバイスの属性を変更する場合に必要です。
aix.security.proc.set -p フラグを指定したプロセスの属性を変更する場合に必要です。
aix.security.dobject.set -o フラグを指定したプロセスの属性を変更する場合に必要です。

アクセスされるファイル

項目 説明
ファイル モード
/etc/security/privcmds rw
/etc/security/privdevs rw
/etc/security/privfiles rw
/etc/security/domobjs rw

  1. /usr/sbin/mount コマンドの許可特権のペアを設定するには、以下のコマンドを入力します。
    setsecattr -c authprivs=aix.fs.manage.mount=PV_FS_MOUNT /usr/sbin/mount
  2. PV_AU_WRITE および PV_DAC_W 特権を、/dev/mydev デバイスの既存の書き込み特権セットに徐々に追加するには、以下のコマンドを入力します。
    setsecattr -d writeprivs=+PV_AU_WRITE,PV_DAC_W /dev/mydev
  3. /etc/security/user ファイルの読み取り許可を設定するには、以下のコマンドを入力します。
    setsecattr -f readauths=aix.security.user.change /etc/security/user
  4. PV_DAC_R 特権を、アクティブなプロセスの有効な特権セットから徐々に除去するには、以下のコマンドを入力します。
    setsecattr -p eprivs=-PV_DAC_R 35875
  5. LDAP で /usr/sbin/mount コマンドのアクセス許可を設定するには、次のコマンドを入力してください。
    setsecattr -R LDAP -c accessauths=aix.fs.manage.mount /usr/sbin/mount 
  6. ネットワーク・インターフェース en0 上のドメインを設定するには、 次のコマンドを入力します。
    setsecattr -o domains=INTRANET,APPLICATION conflictsets=INTERNET
    objtype=netint secflags=FSF_DOM_ANY en0