OSDN Git Service

(split) LDP: Release pages for LDP v3.39.
[linuxjm/LDP_man-pages.git] / release / man3 / getlogin.3
index 4df8c4b..ef5152c 100644 (file)
 .\" Changed Tue Sep 19 01:49:29 1995, aeb: moved from man2 to man3
 .\"  added ref to /etc/utmp, added BUGS section, etc.
 .\" modified 2003 Walter Harms, aeb - added getlogin_r, note on stdin use
+.\"*******************************************************************
 .\"
-.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved.
-.\" Translated 1998-03-01, NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated & Modified 1999-08-21, NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated & Modified 2005-03-18, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH GETLOGIN 3 2008-06-29 "GNU" "Linux Programmer's Manual"
-.SH Ì¾Á°
-getlogin, getlogin_r, cuserid \- ¥æ¡¼¥¶¡¼Ì¾¤ò¼èÆÀ¤¹¤ë
-.SH ½ñ¼°
-.B #include <unistd.h>
+.\"*******************************************************************
+.TH GETLOGIN 3 2008\-06\-29 GNU "Linux Programmer's Manual"
+.SH 名前
+getlogin, getlogin_r, cuserid \- ユーザー名を取得する
+.SH 書式
+\fB#include <unistd.h>\fP
 .sp
-.B "char *getlogin(void);"
+\fBchar *getlogin(void);\fP
 .br
-.BI "int getlogin_r(char *" buf ", size_t " bufsize );
+\fBint getlogin_r(char *\fP\fIbuf\fP\fB, size_t \fP\fIbufsize\fP\fB);\fP
 .sp
-.B #include <stdio.h>
+\fB#include <stdio.h>\fP
 .sp
-.BI "char *cuserid(char *" string );
+\fBchar *cuserid(char *\fP\fIstring\fP\fB);\fP
 .sp
 .in -4n
-glibc ¸þ¤±¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÍ×·ï
-.RB ( feature_test_macros (7)
-»²¾È):
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
 .in
 .sp
-.BR getlogin_r ():
-_REENTRANT || _POSIX_C_SOURCE\ >=\ 199506L
+\fBgetlogin_r\fP(): _REENTRANT || _POSIX_C_SOURCE\ >=\ 199506L
 .br
-.BR cuserid ():
-_XOPEN_SOURCE
-.SH ÀâÌÀ
-.BR getlogin ()
-¤Ï¡¢¸½ºß¤Î¥×¥í¥»¥¹¤ÎÀ©¸æüËö¤Ë¥í¥°¥¤¥ó¤·¤Æ¤¤¤ë¥æ¡¼¥¶¡¼Ì¾¤Îʸ»úÎó¤Ø¤Î
-¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£¥æ¡¼¥¶¡¼Ì¾¤¬·èÄê¤Ç¤­¤Ê¤¤¾ì¹ç¤Ï null ¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£
-ʸ»úÎó¤ÏÀÅŪÎΰè¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤ª¤ê¡¢¤³¤Î¸å¤Ç¤³¤Î´Ø¿ô¤ä
-.BR cuserid ()
-¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿ºÝ¤Ë¾å½ñ¤­¤µ¤ì¤ë¤³¤È¤¬¤¢¤ë¡£
+\fBcuserid\fP(): _XOPEN_SOURCE
+.SH 説明
+\fBgetlogin\fP()  は、現在のプロセスの制御端末にログインしているユーザー名の文字列への ポインタを返す。ユーザー名が決定できない場合は
+NULL ポインタを返す。 文字列は静的領域に割り当てられており、この後でこの関数や \fBcuserid\fP()
+が呼び出された際に上書きされることがある。
 .PP
-.BR getlogin_r ()
-¤Ï¡¢¾åµ­¤ÎƱ¤¸¥æ¡¼¥¶Ì¾¤ò¡¢Â礭¤µ
-.I bufsize
-¤ÎÇÛÎó
-.I buf
-¤ËÆþ¤ì¤ÆÊÖ¤¹¡£
+\fBgetlogin_r\fP()  は、上記の同じユーザ名を、大きさ \fIbufsize\fP の配列 \fIbuf\fP に入れて返す。
 .PP
-.BR cuserid ()
-¤Ï¡¢¸½ºß¤Î¥×¥í¥»¥¹¤Î¼Â¸ú¥æ¡¼¥¶¡¼ID ¤ËÂбþ¤¹¤ë¥æ¡¼¥¶¡¼Ì¾¤Î
-ʸ»úÎó¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£
-\fIstring\fP ¤¬ null ¥Ý¥¤¥ó¥¿°Ê³°¤Î¾ì¹ç¡¢\fIstring\fP ¤Ï¾¯¤Ê¤¯¤È¤â
-\fBL_cuserid\fP Ê¸»ú¤òÊÝ»ý¤Ç¤­¤ëÇÛÎó¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-\fIstring\fP ¤¬ null ¥Ý¥¤¥ó¥¿¤Î¾ì¹ç¤Ë¤Ï¡¢ÀÅŪÎΰè¤ËÃÖ¤«¤ì¤¿Ê¸»úÎó¤Ø¤Î
-¥Ý¥¤¥ó¥¿¤¬ÊÖ¤µ¤ì¤ë¡£¤³¤Îʸ»úÎó¤ÏÀÅŪÎΰè¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤ª¤ê¡¢¸å¤Ç
-¤³¤Î´Ø¿ô¤ä
-.BR getlogin ()
-¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿ºÝ¤Ë¾å½ñ¤­¤µ¤ì¤ë¤³¤È¤¬¤¢¤ë¡£
+\fBcuserid\fP()  は、現在のプロセスの実効ユーザーID に対応するユーザー名の 文字列へのポインタを返す。 \fIstring\fP が NULL
+ポインタ以外の場合、\fIstring\fP は少なくとも \fBL_cuserid\fP 文字を保持できる配列でなければならない。 \fIstring\fP が
+NULL ポインタの場合には、静的領域に置かれた文字列への ポインタが返される。この文字列は静的領域に割り当てられており、後で この関数や
+\fBgetlogin\fP()  が呼び出された際に上書きされることがある。
 .PP
-¥Þ¥¯¥í \fBL_cuserid\fP ¤Ï integer ¤ÎÄê¿ô¤Ç¡¢¥æ¡¼¥¶¡¼Ì¾¤òÊÝ»ý¤¹¤ë¤¿¤á¤Ë
-ɬÍפÊÇÛÎó¤ÎŤµ¤ò¼¨¤¹¡£ \fBL_cuserid\fP ¤Ï \fBstdio.h\fP ¤ÇÀë¸À¤µ¤ì¤Æ
-¤¤¤ë¡£
+マクロ \fBL_cuserid\fP は integer の定数で、ユーザー名を保持するために 必要な配列の長さを示す。 \fBL_cuserid\fP は
+\fBstdio.h\fP で宣言されて いる。
 .PP
-¤³¤ì¤é¤Î´Ø¿ô¤ò»È¤¦¤È¡¢¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤·¤Æ¤¤¤ë¥æ¡¼¥¶¡¼
-.RB ( cuserid ())
-¤ä
-¤³¤Î¥»¥Ã¥·¥ç¥ó¤Ë¥í¥°¥¤¥ó¤·¤Æ¤¤¤ë¥æ¡¼¥¶¡¼
-.RB ( getlogin ())
-¤òÌÀ³Î¤ËÆÃÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤ë
-(¤¿¤À¤· set-user-ID ¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¾õ¶·¤¬°ã¤¦¤³¤È¤â¤¢¤ë)¡£
+これらの関数を使うと、プログラムを実行しているユーザー (\fBcuserid\fP())  や このセッションにログインしているユーザー
+(\fBgetlogin\fP())  を明確に特定することができる (ただし set\-user\-ID プログラムでは、状況が違うこともある)。
 .PP
-¤¿¤¤¤Æ¤¤¤ÎÌÜŪ¤Ç¤Ï¡¢¥æ¡¼¥¶¡¼¤ÎÆÃÄê¤Ë¤Ï´Ä¶­ÊÑ¿ô \fBLOGNAME\fP ¤òÄ´¤Ù
-¤ë¤Û¤¦¤¬ÊØÍø¤Ç¤¢¤ë¡£LOGNAME ÊÑ¿ô¤Ï¥æ¡¼¥¶¡¼¤¬¼«Í³¤ËÀßÄê¤Ç¤­¤ë¤Î¤Ç
-¤è¤ê½ÀÆð¤ÊÂбþ¤¬²Äǽ¤Ë¤Ê¤ë¡£
-.SH ÊÖ¤êÃÍ
-.BR getlogin ()
-¤ÏÀ®¸ù¤·¤¿¾ì¹ç¤Ï¥æ¡¼¥¶Ì¾¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤·¡¢¼ºÇÔ¤·¤¿¾ì¹ç¤Ï NULL ¤òÊÖ¤¹¡£
-.BR getlogin_r ()
-¤ÏÀ®¸ù¤¹¤ë¤È 0 ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ë¤È 0 °Ê³°¤òÊÖ¤¹¡£
-.SH ¥¨¥é¡¼
-POSIX ¤Ç¤Ï°Ê²¼¤Î¥¨¥é¡¼¤¬µ¬Äꤵ¤ì¤Æ¤¤¤ë:
-.TP
-.B EMFILE
-¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤¬¥ª¡¼¥×¥ó¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¿ô¤¬¤¹¤Ç¤Ë¥×¥í¥»¥¹¤¢¤¿¤ê¤Î
-¾å¸Â¤Ë㤷¤Æ¤¤¤ë¡£
-.TP
-.B ENFILE
-¥·¥¹¥Æ¥àÁ´ÂΤǥª¡¼¥×¥ó¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¿ô¤¬¤¹¤Ç¤Ë¾å¸Â¤Ë㤷¤Æ¤¤¤ë¡£
-.TP
-.B ENXIO
-¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Ë¤ÏÀ©¸æüËö¤¬¤Ê¤¤¡£
-.TP
-.B ERANGE
-(getlogin_r)
-(½ªÃ¼¤Î NULL ¥Ð¥¤¥È¤â´Þ¤á¤¿) ¥æ¡¼¥¶Ì¾¤ÎŤµ¤¬
-.I bufsize
-¤è¤ê¤âŤ¤¡£
+たいていの目的では、ユーザーの特定には環境変数 \fBLOGNAME\fP を調べ るほうが便利である。LOGNAME 変数はユーザーが自由に設定できるので
+より柔軟な対応が可能になる。
+.SH 返り値
+\fBgetlogin\fP()  は成功した場合はユーザ名へのポインタを返し、失敗した場合は NULL を返す。 \fBgetlogin_r\fP()
+は成功すると 0 を返し、失敗すると 0 以外を返す。
+.SH エラー
+POSIX では以下のエラーが規定されている:
+.TP 
+\fBEMFILE\fP
+呼び出し元プロセスがオープンしているファイル数がすでにプロセスあたりの 上限に達している。
+.TP 
+\fBENFILE\fP
+システム全体でオープンしているファイル数がすでに上限に達している。
+.TP 
+\fBENXIO\fP
+呼び出し元プロセスには制御端末がない。
+.TP 
+\fBERANGE\fP
+(getlogin_r)  (終端の NULL バイトも含めた) ユーザ名の長さが \fIbufsize\fP よりも長い。
 .LP
-Linux/glibc ¤Ë¤Ï°Ê²¼¤Î¥¨¥é¡¼¤â¤¢¤ë¡£
-.TP
-.B ENOENT
-utmp ¥Õ¥¡¥¤¥ë¤ËÂбþ¤¹¤ë¥¨¥ó¥È¥ê¤¬¤Ê¤«¤Ã¤¿¡£
-.TP
-.B ENOMEM
-passwd ¹½Â¤ÂΤò³ä¤êÅö¤Æ¤ë¤Î¤Ë½½Ê¬¤Ê¥á¥â¥ê¤¬¤Ê¤¤¡£
-.TP
-.B ENOTTY
-ɸ½àÆþÎϤ¬Ã¼Ëö¤ò»²¾È¤·¤Æ¤¤¤Ê¤¤ (¡Ö¥Ð¥°¡×¤ÎÀá¤ò»²¾È)¡£
-.SH ¥Õ¥¡¥¤¥ë
-.TP
+Linux/glibc には以下のエラーもある。
+.TP 
+\fBENOENT\fP
+utmp ファイルに対応するエントリがなかった。
+.TP 
+\fBENOMEM\fP
+passwd 構造体を割り当てるのに十分なメモリがない。
+.TP 
+\fBENOTTY\fP
+標準入力が端末を参照していない (「バグ」の節を参照)。
+.SH ファイル
+.TP 
 \fI/etc/passwd\fP
-¥Ñ¥¹¥ï¡¼¥É¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Õ¥¡¥¤¥ë
-.TP
+パスワードデータベースのファイル
+.TP 
 \fI/var/run/utmp\fP
-(ÅÁÅýŪ¤Ë¤Ï \fI/etc/utmp\fP ¤¬»È¤ï¤ì¤Æ¤¤¤ë;
-libc ¤ÎÃæ¤Ë¤Ï \fI/var/adm/utmp\fP ¤ò»È¤¦¤â¤Î¤â¤¢¤ë)
-.SH ½àµò
-.BR getlogin ()
-¤È
-.BR getlogin_r ()
-¤Ï POSIX.1-2001 ¤Çµ¬Äꤵ¤ì¤Æ¤¤¤ë¡£
+(伝統的には \fI/etc/utmp\fP が使われている; libc の中には \fI/var/adm/utmp\fP を使うものもある)
+.SH 準拠
+\fBgetlogin\fP()  と \fBgetlogin_r\fP()  は POSIX.1\-2001 で規定されている。
 
-System V ¤Ë¤â
-.BR cuserid ()
-¤¬¤¢¤ë¤¬¡¢
-¤³¤ì¤Ï¼Â¸ú¥æ¡¼¥¶¡¼ ID ¤Ç¤Ï¤Ê¤¯¡¢¼Â¥æ¡¼¥¶¡¼ ID ¤ò»ÈÍѤ¹¤ë¡£
-.BR cuserid ()
-´Ø¿ô¤Ï 1988 Ç¯ÈǤΠPOSIX ¤Ë¤Ï´Þ¤Þ¤ì¤Æ¤¤¤¿¤¬¡¢
-1990 Ç¯ÈǤǤϺï½ü¤µ¤ì¤¿¡£
-SUSv2 ¤Ë¸ºß¤·¤¿¤¬¡¢POSIX.1-2001 ¤Çºï½ü¤µ¤ì¤¿¡£
+System V にも \fBcuserid\fP()  があるが、 これは実効ユーザー ID ではなく、実ユーザー ID を使用する。
+\fBcuserid\fP()  関数は 1988 年版の POSIX には含まれていたが、 1990 年版では削除された。 SUSv2
+に存在したが、POSIX.1\-2001 で削除された。
 .LP
-OpenBSD ¤Ë¤Ï
-.BR getlogin ()
-¤È
-.BR setlogin ()
-¤¬¤¢¤ê¡¢
-¥»¥Ã¥·¥ç¥ó¤ËÂбþ¤·¤¿¥æ¡¼¥¶Ì¾¤¬¤¢¤ë¡£À©¸æüËö¤¬¤Ê¤¤
-¥»¥Ã¥·¥ç¥ó¤Î¾ì¹ç¤Ç¤¢¤Ã¤Æ¤â¡¢Âбþ¤¹¤ë¥æ¡¼¥¶Ì¾¤¬¤¢¤ë¡£
-.SH ¥Ð¥°
-»ÄÇ°¤Ê¤¬¤é¡¢
-.BR getlogin ()
-¤ò¤À¤Þ¤¹¤Î¤Ï¤½¤ì¤Û¤ÉÆñ¤·¤¤¤³¤È¤Ç¤Ï¤Ê¤¤¡£ÊÌ¤Î¥×¥í¥°¥é¥à¤¬ utmp ¥Õ¥¡¥¤¥ë¤ò
-²õ¤·¤Æ¤·¤Þ¤¦¤È¡¢Á´¤¯Æ°ºî¤·¤Ê¤¤¤³¤È¤â¤¢¤ë¡£¤Þ¤¿¥í¥°¥¤¥ó̾¤ÎºÇ½é¤Î 8 Ê¸»ú
-¤·¤«ÊÖ¤µ¤Ê¤¤¤³¤È¤â¿¤¤¡£¤Þ¤¿¥×¥í¥°¥é¥à¤òÀ©¸æ¤·¤Æ¤¤¤ë tty ¤Ë
-¸½ºß¥í¥°¥¤¥ó¤·¤Æ¤¤¤ë¥æ¡¼¥¶¡¼¤Ï¡¢¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤·¤¿
-¥æ¡¼¥¶¡¼¤Ç¤Ê¤¤¾ì¹ç¤â¤¢¤ë¡£
-¥»¥­¥å¥ê¥Æ¥£¤ÎÍí¤àÍÑÅӤˤÏ
-.BR getlogin ()
-¤òÍѤ¤¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£
+OpenBSD には \fBgetlogin\fP()  と \fBsetlogin\fP()  があり、 セッションに対応したユーザ名がある。制御端末がない
+セッションの場合であっても、対応するユーザ名がある。
+.SH バグ
+残念ながら、 \fBgetlogin\fP()  をだますのはそれほど難しいことではない。別のプログラムが utmp ファイルを
+壊してしまうと、全く動作しないこともある。またログイン名の最初の 8 文字 しか返さないことも多い。またプログラムを制御している tty に
+現在ログインしているユーザーは、プログラムを実行した ユーザーでない場合もある。 セキュリティの絡む用途には \fBgetlogin\fP()
+を用いるべきではない。
 .LP
-glibc ¤Ï POSIX »ÅÍͤˤϽ¾¤Ã¤Æ¤ª¤é¤º¡¢
-.I /dev/tty
-¤Ç¤Ï¤Ê¤¯
-.I "ɸ½àÆþÎÏ (stdin)"
-¤ò»È¤¦¡£¤³¤ì¤Ï¥Ð¥°¤Ç¤¢¤ë¡£
-(SunOS 5.8 ¤ä HP-UX 11.11 ¤ä FreeBSD 4.8 ¤È¤¤¤Ã¤¿Â¾¤ÎºÇ¶á¤Î¥·¥¹¥Æ¥à¤Ï¤¤¤º¤ì¤â¡¢
-.I É¸½àÆþÎÏ
-¤¬¥ê¥À¥¤¥ì¥¯¥È¤µ¤ì¤¿¾ì¹ç¤Ç¤â¥í¥°¥¤¥ó̾¤òÊÖ¤¹¡£)
+glibc は POSIX 仕様には従っておらず、 \fI/dev/tty\fP ではなく \fI標準入力 (stdin)\fP を使う。これはバグである。
+(SunOS 5.8 や HP\-UX 11.11 や FreeBSD 4.8 といった他の最近のシステムはいずれも、 \fI標準入力\fP
+がリダイレクトされた場合でもログイン名を返す。)
 .LP
-.BR cuserid ()
-¤¬²¿¤ò¹Ô¤Ã¤Æ¤¤¤ë¤Î¤«¡¢¼ÂºÝ¤Î¤È¤³¤í¤òÃΤäƤ¤¤ë¼Ô¤Ïï¤â¤¤¤Ê¤¤;
-°Ü¿¢À­¤¬µá¤á¤é¤ì¤ë¥×¥í¥°¥é¥à¤Ç¤Ï
-.BR cuserid ()
-¤Ï»È¤¦¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£
-¤È¤¤¤¦¤«¤É¤ó¤Ê¥×¥í¥°¥é¥à¤Ç¤â»È¤¦¤Ù¤­¤Ç¤Ï¤Ê¤¤:
-Âå¤ï¤ê¤Ë
-.I getpwuid(geteuid())
-¤òÍѤ¤¤ë¤Ù¤­¤Ç¤¢¤ë
-(¤³¤ì¤¬°Õ¿Þ¤·¤Æ¤¤¤ë¤³¤È¤Ê¤é¤Ð¡¢¤À¤¬)¡£
-.BR cuserid ()
-¤Ï¡Ö»È¤ï¤Ê¤¤¡×¤³¤È¡£
-.SH ´ØÏ¢¹àÌÜ
-.BR geteuid (2),
-.BR getuid (2),
-.BR utmp (5)
+\fBcuserid\fP()  が何を行っているのか、実際のところを知っている者は誰もいない; 移植性が求められるプログラムでは \fBcuserid\fP()
+は使うべきではない。 というかどんなプログラムでも使うべきではない: 代わりに \fIgetpwuid(geteuid())\fP を用いるべきである
+(これが意図していることならば、だが)。 \fBcuserid\fP()  は「使わない」こと。
+.SH 関連項目
+\fBgeteuid\fP(2), \fBgetuid\fP(2), \fButmp\fP(5)