EN JA
LOGIN_CLASS(3)
LOGIN_CLASS(3) FreeBSD Library Functions Manual LOGIN_CLASS(3)

名称

setclasscontext, setclasscpumask, setclassenvironment, setclassresources, setusercontextログインクラスケーパビリティデータベースを使用するための関数群

ライブラリ

System Utilities Library (libutil, -lutil)

書式

#include < sys/types.h>
#include < login_cap.h>

int
setclasscontext( const char *classname, unsigned int flags);

void
setclasscpumask( login_cap_t *lc);

void
setclassenvironment( login_cap_t *lc, const struct passwd *pwd, int paths);

void
setclassresources( login_cap_t *lc);

int
setusercontext( login_cap_t *lc, const struct passwd *pwd, uid_t uid, unsigned int flags);

解説

これらの関数は、 login_cap(3) で文書化されたものより高レベルのログインクラスデータベースへのインタフェースを提供しています。これらの関数は、リソースの制限を設定するため、システムのログインでのユーザのための環境とアカウントの設定、とログインクラスに基づくシステムデーモンのための環境の適切な設定とリソース設定を選択するとき、使用されます。これらの関数は、現在のプロセスが root の特権で実行している場合のみ呼び出されます。 LOGIN_SETLOGIN フラグが使用されるなら、この関数は、 setlogin(2) を呼び出し、その関数のためのマニュアルページで説明されているように、慎重さも必要で、これは、現在のプロセスだけでなく同じセッションに実行しているすべてのプロセスに影響します。

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

setusercontext() 関数は、与えられた login_cap_t オブジェクトと (login_cap_t が NULL なら) 指定された passwd レコードに基づくクラスのコンテキスト値、現在のセッションのログイン、現在のプロセスのユーザとグループの所有権を設定します。これらの動作は、それぞれ flags パラメータで渡されたビットフラグにより選択できます。次に示す 1 つ以上で構成されます:

LOGIN_SETLOGIN
現在のセッションと関連を持つログインを setlogin(2) を使用してユーザが指定した passwd 構造体に設定します。このオプションが使用されるなら、 pwd パラメータは NULL 値以外でなければなりません。
LOGIN_SETUSER
現在のプロセスの所有権を、 setuid(2) を使用して uid パラメータで指定された uid に設定します。
LOGIN_SETGROUP
現在のプロセスのグループ所有権を、 setgid(2) を使用して passwd 構造体で指定されたグループ ID に設定します。また、 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 
vmemoryuse       RLIMIT_VMEM 
pseudoterminals  RLIMIT_NPTS 
swapuse          RLIMIT_SWAP
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_SETMAC
現在のプロセスの MAC ラベルをシステムログインクラスデータベースで指定されたラベルに設定します。
LOGIN_SETCPUMASK
新しい cpuset(2) を作成し、cpu 類似性を指定されたマスクに設定します。文字列は、 cpuset(1) ユーティリティによって扱われる数値および/または数値の範囲のコンマで区切られたリストか、または大文字と小文字を区別しない文字列‘ default’を含みます。文字列が‘ default’であるなら、アクション (行動) は、取られません。
LOGIN_SETLOGINCLASS
setloginclass(2) を使用して、現在のプロセスのログインクラスを設定します。
LOGIN_SETALL
上記の設定をすべて可能にします。

環境変数の設定と有効な passwd ポインタが pwd パラメータにより提供されるとき、文字‘ ~’と‘ $’はそれぞれユーザのホームディレクトリとログイン名に置きかえられことに注意してください。

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

戻り値

setclasscontext() と setusercontext() 関数は、エラーが起こったなら、-1 を返し、成功すれば、0 を返します。ユーザ、ログイン、グループまたはリソースの設定を試みているとき、エラーが起きたなら、メッセージは、LOG_ERR のプライオリティを付けて、現在のアクティブ機能に向けて syslog(3) に報告されます。
March 24, 2011 FreeBSD