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) に報告されます。関連項目
cpuset(1), ps(1), cpuset(2), setgid(2), setlogin(2), setloginclass(2), setuid(2), getcap(3), initgroups(3), login_cap(3), mac_set_proc(3), login.conf(5), termcap(5)March 24, 2011 | FreeBSD |