212 lines
		
	
	
	
		
			6.2 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			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
 | |
| が書きました。
 |