diff options
Diffstat (limited to 'documentation/manual-pages/ja/man9/VOP_ACCESS.9')
-rw-r--r-- | documentation/manual-pages/ja/man9/VOP_ACCESS.9 | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/documentation/manual-pages/ja/man9/VOP_ACCESS.9 b/documentation/manual-pages/ja/man9/VOP_ACCESS.9 new file mode 100644 index 0000000000..f65ac4af95 --- /dev/null +++ b/documentation/manual-pages/ja/man9/VOP_ACCESS.9 @@ -0,0 +1,153 @@ +.\" -*- nroff -*- +.\" +.\" Copyright (c) 1996 Doug Rabson +.\" +.\" All rights reserved. +.\" +.\" This program is free software. +.\" +.\" 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 DEVELOPERS ``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 DEVELOPERS 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/VOP_ACCESS.9,v 1.19 2003/05/31 14:07:25 hmp Exp % +.\" +.\" $FreeBSD$ +.Dd July 24, 1996 +.Os +.Dt VOP_ACCESS 9 +.Sh 名称 +.Nm VOP_ACCESS +.Nd ファイルまたは UNIX ドメインソケットのアクセス許可の調査 +.Sh 書式 +.In sys/param.h +.In sys/vnode.h +.Ft int +.Fn VOP_ACCESS "struct vnode *vp" "int mode" "struct ucred *cred" "struct thread *td" +.Sh 解説 +このエントリポイントは、与えられた証明に対する、ファイルの +アクセス許可を調査します。 +.Pp +引数は以下の通りです。 +.Bl -tag -width mode +.It Fa vp +調査対象ファイルの vnode。 +.It Fa mode +要求されたアクセスのタイプ。 +.It Fa cred +調査対象のユーザ証明。 +.It Fa td +調査しているスレッド。 +.El +.Pp +.Fa mode +は +.Dv VREAD , +.Dv VWRITE +または +.Dv VEXEC +を含むマスクです。 +.Sh ロック +vnode は、入る時にロックされ、戻る時にもロックされ続けます。 +.Sh 戻り値 +ファイルが指定された方法でアクセス可能な場合には、0 が返されます。 +そうでない場合には、適切なエラーコードが返されます。 +.Sh 疑似コード +.Bd -literal +int +vop_access(struct vnode *vp, int mode, struct ucred *cred, struct thread *td) +{ + int error; + + /* + * ファイルがソケット、FIFO、またはファイルシステムに存在する + * ブロック型または文字型デバイスでない場合には、読み込み専用 + * ファイルシステムへの書き込みは認められません。 + */ + if (mode & VWRITE) { + switch (vp->v_type) { + case VDIR: + case VLNK: + case VREG: + if (vp->v_mount->mnt_flag & MNT_RDONLY) + return EROFS; + + break; + } + } + + /* 不変ビットが設定されていれば、誰も書き込めません。 */ + if ((mode & VWRITE) && vp has immutable bit set) + return EPERM; + + /* そうでなければ、uid が 0 ならば常に許可。 */ + if (cred->cr_uid == 0) + return 0; + + mask = 0; + + /* そうでなければ、所有者を調べます。 */ + if (cred->cr_uid == owner of vp) { + if (mode & VEXEC) + mask |= S_IXUSR; + if (mode & VREAD) + mask |= S_IRUSR; + if (mode & VWRITE) + mask |= S_IWUSR; + return (((mode of vp) & mask) == mask ? 0 : EACCES); + } + + /* そうでなければ、グループを調べます。 */ + for (i = 0, gp = cred->cr_groups; i < cred->cr_ngroups; i++, gp++) + if (group of vp == *gp) { + if (mode & VEXEC) + mask |= S_IXGRP; + if (mode & VREAD) + mask |= S_IRGRP; + if (mode & VWRITE) + mask |= S_IWGRP; + return (((mode of vp) & mask) == mask ? 0 : EACCES); + } + + /* そうでなければ、その他を調べます。 */ + if (mode & VEXEC) + mask |= S_IXOTH; + if (mode & VREAD) + mask |= S_IROTH; + if (mode & VWRITE) + mask |= S_IWOTH; + return (((mode of vp) & mask) == mask ? 0 : EACCES); +} +.Ed +.Sh エラー +.Bl -tag -width Er +.It Bq Er EPERM +不変ファイルを変更しようとしました。 +.It Bq Er EACCES +パーミッションビットのファイルモードまたは ACL が要求されたアクセスを +許可しませんでした。 +.El +.Sh 関連項目 +.Xr vaccess 9 , +.Xr vaccess_acl_posix1e 9 , +.Xr vnode 9 +.Sh 作者 +このマニュアルページは +.An Doug Rabson +が書きました。 |