LOGIN_CLASS(3)

名称
setclasscontext, setclassenvironment, setclassresources, setusercontext - ログインクラスデータベースにアクセスする能力をもつ関数群

ライブラリ
libutil

書式
#include <sys/types.h> #include <login_cap.h> int setclasscontext(const char *classname, unsigned int flags) int setusercontext(login_cap_t *lc, const struct passwd *pwd, uid_t uid, unsigned int flags) void setclassresources(login_cap_t *lc) void setclassenvironment(login_cap_t *lc, const struct passwd *pwd, int paths)

解説
これらの関数は、ログインクラスデータベース関して login_cap(3) のマニュアルに記載されているインターフェスより高次のインターフェスを 提供します。これらの関数が使用されるのは、リソースに関する限界値や、 環境およびシステムにログインするユーザへの課金の設定、およびログインクラス に基づくシステムデーモンの設定と環境の適切な組を設定するときです。これらの 関数呼び出しは、現在のプロセスがルート権限で実行されているときだけ 可能です。LOGIN_SETLOGIN フラグが使用される場合、この関数は setlogin(2) の呼び出しを実行し、当該関数についてはマニュアルページに説明してある注意を 払う必要があります。これは同一のセッションで実行されているすべてのプロセス に影響をあたえますが、現在のプロセスが影響を受けることはありません。

setclasscontext() は、種々の、指定された名前付クラスの値に基づくクラス のコンテキスト値 (リソースの限界値、umask やプロセスの優先順位) を 設定します。

setusercontext() は、指定された login_cap_t オブジェクト、 指定された passwd レコード ( login_cap_t が nullの場合) に基づく、クラスのコンテキストバリューを設定します。 また最新のセッションへのログインや、 最新のプロセスのユーザおよびグループの所有者を設定します。 これらの関数は、それぞれ flags パラメタで渡されたビットフラグにより選択でき、次に示す中の 複数のものから構成されます。

LOGIN_SETLOGIN
    現在のセッションと関連を持つログインに passwd 構造で定義されたユーザを対応させます。 setlogin(2) このオプションが使用される場合、 pwd パラメタは NULL 値以外を指定する必要があります。

LOGIN_SETUSER
    現在のプロセスの所有者に、 setuid(2) を使用して uid パラメータで指定された uid を設定します。

LOGIN_SETGROUP
    現在のプロセスのグループとしての所有者に、 setgid(2) を使用して passwd 構造で定義されたグループ識別子を設定します。 また、 initgroups(3) 呼出を実行して現在のプロセスに 関するグループのアクセスリストを整えます。 pwd パラメータは、このオプションが使用される場合、 NULL 以外の値を指定する必要があります。

LOGIN_SETRESOURCES
    システムのログインクラスデータベースで定義される 設定値に基づき現在のプロセスのリソースの限界値を設定します。クラス権限タグ は、-cur (ソフトリミット) または -max (ハードリミット)の接尾語と次に示す リソース設定子を適切に組み合わせて使用します。

        cputime         RLIMIT_CPU
        filesize        RLIMIT_FSIZE
        datasize        RLIMIT_DATA
        stacksize       RLIMIT_STACK
        coredumpsize    RLIMIT_CORE
        memoryuse       RLIMIT_RSS
        memorylocked    RLIMIT_MEMLOCK
        maxproc         RLIMIT_NPROC
        openfiles	RLIMIT_NOFILE
        sbsize		RLIMIT_SBSIZE

LOGIN_SETPRIORITY
    システムのログインクラスデータベースで定義された 値に基づき、現プロセスのスケジュール時の優先順位を設定します。使用される クラス権限タグは次のとおりです。

        Priority

LOGIN_SETUMASK
    現在のプロセスの umask にユーザまたはシステムの ログインクラスデータベースでの値を設定します。 使用されるクラス権限タグは次のとおりです。

        umask

LOGIN_SETPATH
    ユーザまたはシステムのログインクラスデータベースに基づく値を 'path' および 'manpath' 環境変数に設定します。該当する環境変数 セットとともに使用されるクラス権限タグは次のとおりです。

        path            PATH
        manpath         MANPATH

LOGIN_SETENV
    ユーザまたはシステムのログインクラスデータベースに 基づく値を種々の環境変数に設定します。該当する環境変数セットとともに 使用されるクラス権限タグは次のとおりです。

        lang            LANG
        charset         MM_CHARSET
        timezone        TZ
        term            TERM

    環境変数の追加として、リスト型の 権限設定 'setenv=var1 val1,var2 val2..,varN valN ' を使用できます。

LOGIN_SETALL
    上記の設定をすべて可能にします。

環境変数の設定時と適切な passwd ポインタが pwd により与えられる場合、文字 ‘~’ と ‘$’ はそれぞれユーザのホームディレクトリおよびログイン名と 置きかえられことがあることに注意してください。

関数 setclassresources() および setclassenvironment() は、上記コンテキスト設定の関数の サブセットですが、単独でも使用できます。

戻り値
setclasscontext() および setusercontext() は、エラーが起きた場合 -1 を返します。 正常終了の場合 0 を返します。 ユーザ、ログイン、グループまたはリソースの設定を行っている最中に エラーが起きた場合、LOG_ERR の優先順位によりメッセージが syslog(3) に通知され、現在アクティブ状態の機能に通知されます。

関連項目
setgid(2), setlogin(2), setuid(2), getcap(3), initgroups(3), login_cap(3), login.conf(5), termcap(5)