doc/ja_JP.eucJP/man/man9/acl.9
2003-02-03 05:22:43 +00:00

212 lines
6.2 KiB
Groff

.\"-
.\" Copyright (c) 1999-2001 Robert N. M. Watson
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/acl.9,v 1.12 2002/12/12 17:25:58 ru Exp\ %
.\"
.\" $FreeBSD$
.Dd December 23, 1999
.Os
.Dt ACL 9
.Sh 名称
.Nm acl
.Nd 仮想ファイルシステムアクセス制御リスト
.Sh 書式
.In sys/param.h
.In sys/vnode.h
.In sys/acl.h
.Pp
カーネルコンフィギュレーションファイルの中に、
.Cd "options UFS_ACL"
.Sh 解説
アクセス制御リスト、すなわち ACL は、
ファイルおよびディレクトリを表現する vnode に対する権限を、
きめ細かく指定可能とします。
しかしながら、
異なる ACL のセマンティクスを持つファイルシステムが過多にあるため、
vnode インタフェースは ACL の文法のみを理解し、基礎をなすファイルシステムが
細部を実装することを当てにしています。
基礎をなすファイルシステムに依存して、個々のファイルまたはディレクトリは、
関連付けられる 0 個以上の ACL を持つことが可能です。
それぞれ ACL の名前は、適切な vnode ACL 呼び出し
.Xr VOP_ACLCHECK 9 ,
.Xr VOP_GETACL 9
および
.Xr VOP_SETACL 9
.Fa type
フィールドを使用して指定されます。
.Pp
現在は、個々の ACL は以下に定義されるカーネル内で固定サイズの
.Vt acl
構造体によって表現されます。
.Bd -literal -offset indent
struct acl {
int acl_cnt;
struct acl_entry acl_entry[ACL_MAX_ENTRIES];
};
.Ed
.Pp
ACL は、ACL エントリの固定サイズ配列で構成されます。
各 ACL エントリは、
パーミッションの組、主要な名前空間、主要な識別子から構成されます。
.Pp
個別の ACL エントリは、以下のメンバを持つ構造体の
.Vt acl_entry_t
型です。
.Bl -tag -width 2n
.It Vt acl_tag_t Va ae_tag
以下は
.Va ae_tag
に設定されるべき ACL の型の定義のリストです。
.Pp
.Bl -tag -width ".Dv ACL_UNDEFINED_FIELD" -offset indent -compact
.It Dv ACL_UNDEFINED_FIELD
未定義の ACL 型。
.It Dv ACL_USER_OBJ
実効ユーザ ID がファイルの所有者のユーザ ID と
一致するプロセスのための任意のアクセス権。
.It Dv ACL_USER
実効ユーザ ID が ACL エントリの権限と
一致するプロセスのための任意のアクセス権。
.It Dv ACL_GROUP_OBJ
実効グループ ID または全ての追加のグループがファイルの所有者のグループ ID と
一致するプロセスのための任意のアクセス権。
.It Dv ACL_GROUP
実効グループ ID または全ての追加のグループが ACL エントリの権限と
一致するプロセスのための任意のアクセス権。
.It Dv ACL_MASK
ファイルグループクラスの中のプロセスが許可されることができる
任意のアクセス権の最高限度。
.It Dv ACL_OTHER
その他の ACL エントリによって保護されていない
プロセスのための任意のアクセス権。
.It Dv ACL_OTHER_OBJ
.Dv ACL_OTHER
と同じです。
各々の ACL エントリは、厳密に、1 つの
.Dv ACL_USER_OBJ
と 1 つの
.Dv ACL_GROUP_OBJ
と 1 つの
.Dv ACL_OTHER
を含まなければなりません。
.Dv ACL_USER ,
.Dv ACL_GROUP
または
.Dv ACL_OTHER
が存在する場合には、厳密に 1 つの
.Dv ACL_MASK
エントリが存在するべきです。
.El
.It Vt uid_t Va ae_id
この ACL がアクセスパーミッションを記述しているユーザのユーザ ID。
.It Vt acl_perm_t Va ae_perm
このフィールドは、この ACL に適合するプロセスが関連したファイルの
アクセスのために、どの種類のアクセスかを定義します。
.Bl -tag -width ".Dv ACL_POSIX1E_BITS"
.It Dv ACL_EXECUTE
プロセスは関連したファイルの実行が可能です。
.It Dv ACL_WRITE
プロセスは関連したファイルへの書込みが可能です。
.It Dv ACL_READ
プロセスは関連したファイルからの読込みが可能です。
.It Dv ACL_PERM_NONE
プロセスは関連したファイルへの読込み、書込みまたは実行のパーミッションを
所有していません。
.El
.El
.Pp
.Sh 実装に関する注
.Bd -literal
typedef mode_t *acl_permset_t;
/* 内部の ACL 構造体 */
struct acl {
int acl_cnt;
struct acl_entry acl_entry[ACL_MAX_ENTRIES];
};
/* 外部の ACL 構造体 */
struct acl_t_struct {
struct acl ats_acl;
int ats_cur_entry;
};
typedef struct acl_t_struct *acl_t;
/*
* ae_tag フィールドに有効な値
*/
#define ACL_UNDEFINED_TAG 0x00000000
#define ACL_USER_OBJ 0x00000001
#define ACL_USER 0x00000002
#define ACL_GROUP_OBJ 0x00000004
#define ACL_GROUP 0x00000008
#define ACL_MASK 0x00000010
#define ACL_OTHER 0x00000020
#define ACL_OTHER_OBJ ACL_OTHER
/*
* acl_type_t 引数のために有効な値
*/
#define ACL_TYPE_ACCESS 0x00000000
#define ACL_TYPE_DEFAULT 0x00000001
#define ACL_TYPE_AFS 0x00000002
#define ACL_TYPE_CODA 0x00000003
#define ACL_TYPE_NTFS 0x00000004
#define ACL_TYPE_NWFS 0x00000005
/*
* ae_perm フィールドに可能なフラグ
*/
#define ACL_EXECUTE 0x0001
#define ACL_WRITE 0x0002
#define ACL_READ 0x0004
#define ACL_PERM_NONE 0x0000
#define ACL_PERM_BITS (ACL_EXECUTE | ACL_WRITE | ACL_READ)
#define ACL_POSIX1E_BITS (ACL_EXECUTE | ACL_WRITE | ACL_READ)
/*
* acl_get_entry() のための entry_id に可能な値
*/
#define ACL_FIRST_ENTRY 0
#define ACL_NEXT_ENTRY 1
/*
* ae_id フィールドの中の未定義の値
*/
#define ACL_UNDEFINED_ID ((uid_t)-1)
.Ed
.Sh 関連項目
.Xr acl 3 ,
.Xr vaccess_acl_posix1e 9 ,
.Xr VFS 9 ,
.Xr vaccess 9 ,
.Xr VOP_ACLCHECK 9 ,
.Xr VOP_GETACL 9 ,
.Xr VOP_SETACL 9
.Sh 作者
このマニュアルページは
.An Robert Watson
が書きました。