SUSER(9)

名称
suser, suser_cred - プロセスがスーパユーザの権限を持っているかどうかのチェック

書式
<sys/param.h> <sys/systm.h> int suser(struct thread *td) int suser_cred(struct ucred *cred, int flags)

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

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

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

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

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

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

関連項目
chroot(2), jail(2)