getcmdattr サブルーチン

目的

特権コマンド・データベース内のコマンド・セキュリティー情報を照会します。

ライブラリー

セキュリティー・ライブラリー (libc.a)

構文

#include <usersec.h>

int getcmdattr (Command, Attribute, Value, Type)
    char *Command;
    char *Attribute;
    void *Value;
    int Type;

説明

getcmdattr サブルーチンは、コマンド・データベースから指定された属性を読み取ります。 データベースがオープンしていない場合、このサブルーチンは読み取りのために暗黙のオープンを行います。 SEC_CHAR および SEC_LIST タイプの属性の場合、 getcmdattr サブルーチンは割り当てられたメモリーに値を戻します。 呼び出し元はこのメモリーを解放する必要があります。

パラメーター

項目 説明
Command コマンド名を指定します。 値は、システム上のコマンドへの絶対パスでなければなりません。
属性 読み取る属性を指定します。 以下の可能な属性は、 usersec.h ファイルに定義されています。
S_ACCESSAUTHS
アクセス許可。 属性タイプは SEC_LIST で、許可名をヌルで区切ったリストです。 16 個の許可を指定できます。 いずれかの権限を持つユーザーは、コマンドの実行を許可されます。 システムで使用可能なユーザー定義およびシステム定義の権限に加えて、以下の 3 つの特殊値が許可されます。
所有者の許可
コマンド所有者がアクセス許可を検査せずにコマンドを実行できるようにします。
グループの許可
コマンド・グループがアクセス許可を検査せずにコマンドを実行できるようにします。
すべて許可 (_ALL)
すべてのユーザーがアクセス許可を検査せずにコマンドを実行できるようにします。
AUTHPRIVS
許可された特権。 属性タイプは SEC_LISTです。 特権許可と許可特権のペアは、親プロセスが所有する許可に対応するコマンドの実行中のプロセス特権を示します。 次の図に示すように、許可とそれに対応する特権は等号 (=) で区切られ、個々の特権は正符号 (+) で区切られ、許可と特権のペアはコンマ (,) で区切られます。
auth=priv+priv+...,auth=priv+priv...,...
許可と特権のペアの数は 16 に制限されています。
AUTHROLES
ロールまたはロールのリスト。これらのロールを持つユーザーは、コマンドの実行を許可するために認証される必要があります。 属性タイプは SEC_LISTです。
INNATEPRIVS
特権を追加します。 これは、コマンドの実行時にプロセスに割り当てられる特権のヌル区切りリストです。 属性タイプは SEC_LISTです。
S_INHERITPRIVS
継承可能な特権。 これは、子プロセス特権に渡される特権のヌル区切りリストです。 属性タイプは SEC_LISTです。
S_EUID (_E)
コマンドの実行時に想定される有効ユーザー ID。 属性タイプは SEC_INTです。
S_EGID (G)
コマンドの実行時に想定される有効グループ ID。 属性タイプは SEC_INTです。
RUID
コマンドの実行時に想定される実ユーザー ID。 属性タイプは SEC_INTです。
VALUE Attribute および Type パラメーターに指定された値に応じて、ポインター、またはポインターへのポインターを指定します。 詳しくは、 Type パラメーターを参照してください。
Type 属性のタイプを指定します。 usersec.h ファイルには、以下の有効なタイプが定義されています。
整数 (SEC_INT) 型
この属性の形式は整数です。 サブルーチンの場合、ユーザーは定義された整数変数へのポインターを提供する必要があります。
SEC_CHAR (文字)
この属性の形式は、ヌル終了文字ストリングです。 サブルーチンの場合、ユーザーは定義された文字ポインター変数へのポインターを提供する必要があります。 呼び出し元はこのメモリーを解放する必要があります。
リストの SEC_LIST
属性のフォーマットは、それぞれがヌル終了である、一連の連結されたストリングです。 シリーズの最後のストリングは、2 つの連続するヌル文字で終了します。 サブルーチンの場合、ユーザーは定義された文字ポインター変数へのポインターを提供する必要があります。 呼び出し元はこのメモリーを解放する必要があります。

セキュリティー

アクセスされるファイル:
ファイル モード
/etc/security/privcmds rw

戻り値

正常に実行された場合、 getcmdattr サブルーチンはゼロを戻します。 そうでない場合は-1が返され、エラーを示すerrnoグローバル値が設定される。

エラー・コード

getcmdattr サブルーチンが失敗すると、以下の errno 値のいずれかが設定されます。

項目 説明
EINVAL Command パラメーターが NULL または defaultである。
EINVAL Attribute 配列または Type パラメーターが NULL であるか、定義された値の 1 つが含まれていません。
ENOATTR (ENOATTR) Attribute 配列は S_PRIVCMDSですが、 Command パラメーターが ALLではありません。
ENOENT Command パラメーターに指定されたコマンドが存在しません。
ENOATTR (ENOATTR) Attribute 配列に指定された属性は有効ですが、コマンドに値が定義されていません。
EPERM 操作が許可されていません。
EIO リモート・コマンド・データベースへのアクセスに失敗しました。