aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man2/nfssvc.2
diff options
context:
space:
mode:
Diffstat (limited to 'ja_JP.eucJP/man/man2/nfssvc.2')
-rw-r--r--ja_JP.eucJP/man/man2/nfssvc.2250
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
+はとりわけ注意を払って使用しなくてはなりません。