スポンサーリンク

LOGIN_CLASS(3) FreeBSD ライブラリ関数マニュアル LOGIN_CLASS(3)

名称

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

ライブラリ

システムユーティリティライブラリ (libutil, −lutil)

書式

#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) のマニュア ルに記載されているインタフェースより高次のインタフェースを提供します。こ れらの関数が使用されるのは、リソースに関する限界値や、環境およびシステム にログインするユーザへの課金の設定、およびログインクラスに基づくシステム デーモンの設定と環境の適切な組を設定するときです。これらの関数呼び出し は、現在のプロセスが root 権限で実行されているときだけ可能で す。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)

FreeBSD 10.0 December 28, 1996 FreeBSD 10.0

スポンサーリンク