スポンサーリンク

SUSER(9) FreeBSD カーネル開発者マニュアル SUSER(9)

名称

suser, suser_cred − 証明がスーパユーザの権限を持っているかどうかのチェッ ク

書式

#include <sys/param.h>
#include <sys/systm.h>

int

suser(struct thread *td);

int

suser_cred(struct ucred *cred, int flag);

解説

suser() および suser_cred() 関数は、スーパユーザの権限を含む証明が与えら れているかどうかをチェックします。

suser() 関数は最も普通で、特別な事情がその他の方法を要求するのでなけれ ば、これが使用されるべきです。

suser_cred() 関数は、チェックされるべき証明がそのスレッド自身のものでない 時、スレッドが存在しない時、スーパユーザの権限が閉じ込められた root に拡 大されるべき時、またはチェックされるべき証明が実効ユーザというよりは実際 のユーザである時に、使用されるべきです。

デフォルトでは、 jail(2) システムコールによって閉じ込められている場合に は、プロセスはスーパユーザの権限を持ちません。しかしながら、これが適切な 場合があり、 suser_cred() 関数へ渡す flag 引数に SUSER_ALLOWJAIL ビットを 設定することによって実現されます。これが牢屋を弱くしないことを、注意深く 再調査することが重要です。一般的には jail(2) 呼び出しの中の暗黙の chroot(2) によって行動が保護されている場所のみにおいて、このような権限を 承諾されるべきです。

デフォルトでは、チェックされる証明は実効ユーザです。代わりに実際のユーザ をチェックする必要がある場合 (例えば、リソースリミットが適用された場合の 決定のとき) があります。そして、これは suser_cred() 関数への flag 引数に SUSER_RUID を渡すことによって行うことが可能です。

suser() および suser_cred() 関数は、スーパユーザの権限が使用された事を、 指定されたプロセスのプロセス構造体中に記録します。これらの関数の機能の一 部は、スーパユーザの権限が使用されたかどうかを通知することにありますの で、他のパーミッションの可能性が使い尽くされた後でのみ、これら関数を呼び 出すべきです。

戻り値

suser() および suser_cred() 関数は、そのユーザがスーパユーザの権限を持っ ている場合には 0 を返し、そうでない場合には EPERM を返します。これ は、TRUE の応答がスーパユーザ権限を持つことを示すような他の実装とは 逆の 論理になっています。 TRUE の応答の suser() はスーパユーザの権限を示しま す。

関連項目

chroot(2), jail(2)

バグ

suser() および suser_cred() 関数は事実上は 2000 年の 8 月から、スーパユー ザの特権が使用されたことおよびされなかったことを記録しません。

FreeBSD 10.0 April 2, 2002 FreeBSD 10.0

スポンサーリンク