diff options
Diffstat (limited to 'ja_JP.eucJP/man/man2/nfssvc.2')
-rw-r--r-- | ja_JP.eucJP/man/man2/nfssvc.2 | 250 |
1 files changed, 250 insertions, 0 deletions
diff --git a/ja_JP.eucJP/man/man2/nfssvc.2 b/ja_JP.eucJP/man/man2/nfssvc.2 new file mode 100644 index 0000000000..81fe18c089 --- /dev/null +++ b/ja_JP.eucJP/man/man2/nfssvc.2 @@ -0,0 +1,250 @@ +.\" Copyright (c) 1989, 1991, 1993 +.\" The Regents of the University of California. 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. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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. +.\" +.\" @(#)nfssvc.2 8.1 (Berkeley) 6/9/93 +.\" %FreeBSD: src/lib/libc/sys/nfssvc.2,v 1.6.2.1 1999/08/29 14:49:16 peter Exp % +.\" +.\" WORD: principal 主体名 +.Dd June 9, 1993 +.Dt NFSSVC 2 +.Os +.Sh 名称 +.Nm nfssvc +.Nd NFS nfssvc - NFS サービス +.Sh 書式 +.Fd #include <sys/param.h> +.Fd #include <sys/mount.h> +.Fd #include <sys/time.h> +.Fd #include <nfs/rpcv2.h> +.Fd #include <nfs/nfs.h> +.Fd #include <unistd.h> +.Ft int +.Fn nfssvc "int flags" "void *argstructp" +.Sh 解説 +.Fn nfssvc +関数は、NFS デーモンが、情報をカーネルの中に渡したり +カーネルから外に渡したりするのに使用され、また、 +NFS デーモンがサーバデーモンとしてカーネルに入るのにも +使用されます。 +.Fa flags +引数は、カーネル内でどのような処理を実行するかを示す +いくつかのビットで構成されており、 +.Fa argstructp +は、flags 引数でどのビットが設定されたかに従って +3 つある構造体のうちの 1 つを指します。 +.Pp +クライアント側では、 +.Xr nfsiod 8 +は +.Fa flags +引数を +.Dv NFSSVC_BIOD +に設定し、 +.Fa argstructp +を +.Dv NULL +に設定して +.Fn nfssvc +を呼び出し、ブロック入出力サーバデーモンとしてカーネルに入ります。 +.Nm NQNFS +の場合、 +.Xr mount_nfs 8 +は +.Dv NFSSVC_MNTD +フラグを、また、オプションで +.Dv NFSSVC_GOTAUTH +と +.Dv NFSSVC_AUTHINFAIL +の論理和 (or) を取ったものを設定し、 +次の構造体を指すポインタとともに +.Fn nfssvc +を呼び出します。 +.Bd -literal +struct nfsd_cargs { + char *ncd_dirp; /* マウントディレクトリパス */ + uid_t ncd_authuid; /* 実効 uid */ + int ncd_authtype; /* 認証のタイプ */ + int ncd_authlen; /* 認証文字列の長さ */ + u_char *ncd_authstr; /* 認証文字列 */ + int ncd_verflen; /* および検証機能 */ + u_char *ncd_verfstr; + NFSKERBKEY_T ncd_key; /* セッションキー */ +}; +.Ed +.Pp +最初の呼び出しでは、マウントポイントに対するサービスを指定する +.Dv NFSSVC_MNTD +フラグだけが設定されています。 +マウントポイントが Kerberos を使用している場合、 +クライアント側がユーザ用の ``rcmd'' 認証チケットを要求するたびに、 +.Xr mount_nfs 8 +デーモンは、errno == ENEEDAUTH で +.Fn nfssvc +から戻ります。 +.Xr mount_nfs 8 +は、Kerberos チケットを取得しようとし、成功すると、 +nfsd_cargs 構造体の ncd_authstr フィールドにチケットを入れ、 +ncd_authlen フィールドと ncd_authtype フィールドを +設定した後で、フラグ +.Dv NFSSVC_MNTD +および +.Dv NFSSVC_GOTAUTH +を指定して +.Fn nfssvc +を呼び出します。 +.Xr mount_nfs 8 +がチケットを取得するのに失敗した場合、 +.Fn nfssvc +は、フラグ +.Dv NFSSVC_MNTD , +.Dv NFSSVC_GOTAUTH +および +.Dv NFSSVC_AUTHINFAIL +を指定して呼び出されて、認証の試みが +失敗したことを示します。 +.Pp +サーバ側では、 +.Fn nfssvc +がフラグ +.Dv NFSSVC_NFSD +と次の構造体を指すポインタとともに呼び出されて、 +.Xr nfsd 8 +デーモンとしてカーネルに入ります。 +.Bd -literal +struct nfsd_srvargs { + struct nfsd *nsd_nfsd; /* カーネル内の nfsd struct を指すポインタ */ + uid_t nsd_uid; /* cred にマップされる実効 uid*/ + u_long nsd_haddr; /* クライアントの IP アドレス */ + struct ucred nsd_cr; /* Cred. uid のマップ宛先 */ + int nsd_authlen; /* 認証文字列の長さ (戻り) */ + u_char *nsd_authstr; /* 認証文字列 (戻り) */ + int nsd_verflen; /* および検証機能 */ + u_char *nsd_verfstr; + struct timeval nsd_timestamp; /* 検証機能からのタイムスタンプ */ + u_long nsd_ttl; /* 証書の持続時間 (秒) */ + NFSKERBKEY_T nsd_key; /* セッションキー */ +}; +.Ed +.Pp +.Xr nfsd 8 +デーモンは、Kerberos 認証チケットを受信するたびに、 +.Fn nfssvc +から errno == ENEEDAUTH で戻ります。 +.Xr nfsd 8 +は、チケットを認証し、フィールド nsd_uid で指定された +``user id'' 用の一連の証書をサーバ上で生成しようとします。 +これを行うには、最初に Kerberos チケットを認証してから、 +Kerberos の主体名 (principal) を +ローカル名にマップし、 +.Xr getpwnam 3 +と +.Xr getgrouplist 3 +経由でそのユーザについての一連の証書を得ます。 +正常に完了すると、 +.Xr nfsd 8 +は、 +.Dv NFSSVC_NFSD +フラグと +.Dv NFSSVC_AUTHIN +フラグを設定して +.Fn nfssvc +を呼び出し、 +nsd_cr 内の証書のマッピングをカーネルに渡し、 +そのクライアント用のサーバソケット上でマップが +キャッシュされるようにします。認証が失敗した場合、 +.Xr nfsd 8 +はフラグ +.Dv NFSSVC_NFSD +および +.Dv NFSSVC_AUTHINFAIL +を設定して +.Fn nfssvc +を呼び出し、認証が失敗したことを示します。 +.Pp +.Xr nfsd 8 +マスタサーバデーモンは、フラグ +.Dv NFSSVC_ADDSOCK +および次の構造体を指すポインタを設定して +.Fn nfssvc +を呼び出し、 +.Xr nfsd 8 +デーモンがサービスを行えるようにサーバ側の +.Tn NFS +ソケットをカーネルに渡します。 +.Bd -literal +struct nfsd_args { + int sock; /* サービスを行うソケット */ + caddr_t name; /* 接続をベースとしたソケットのクライアントアドレス */ + int namelen;/* 名前の長さ */ +}; +.Ed +.Sh 戻り値 +通常、 +.Fn nfssvc +は、サーバがシグナルによって終了されるときを除いて戻りません。 +このときには、値 0 が返されます。 +そうでない場合は、-1 が返され、エラーを指定するためにグローバル変数 +.Va errno +が設定されます。 +.Sh エラー +.Bl -tag -width [ENEEDAUTH] +.It Bq Er ENEEDAUTH +この特殊なエラー値は、実際には認証サポート用、 +特に、前述した Kerberos 用に使用されます。 +.It Bq Er EPERM +呼び出し側がスーパユーザではありません。 +.El +.Sh 関連項目 +.Xr mount_nfs 8 , +.Xr nfsd 8 , +.Xr nfsiod 8 +.Sh 歴史 +.Fn nfssvc +関数は +.Bx 4.4 +ではじめて登場しました。 +.Sh バグ +.Fn nfssvc +システムコールは +.Tn NFS +サポート用に特別に設計されています。 +そのようなものですから、NFS の要求定義に特に従ったものに +なっています。 +本来ならば、認証サポートが必要であることを示す値を返す必要があります。 +なぜなら、 +.Dv ENEEDAUTH +は本来ならエラーではないからです。 +引数である構造体のいくつかのフィールドは +正当なものであると仮定されており、直前の呼び出しから +変更されないことが時々あります。 +このようであるので、 +.Fn nfssvc +はとりわけ注意を払って使用しなくてはなりません。 |