OSDN Git Service

Update README
[linuxjm/LDP_man-pages.git] / draft / man2 / setuid.2
index f490a1e..55ab708 100644 (file)
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH SETUID 2 2010\-11\-22 Linux "Linux Programmer's Manual"
+.\"
+.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
+.\"         all rights reserved.
+.\" Translated Sat Mar  1 16:32:11 JST 1997
+.\"         by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
+.\" Modified Sun Sep 28 20:26:49 JST 1997
+.\"         by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
+.\" Updated & Modified Sat May 22 18:21:45 JST 2004
+.\"         by Yuichi SATO <ysato444@yahoo.co.jp>
+.\" Updated & Modified Wed Jan  5 00:51:28 JST 2005 by Yuichi SATO
+.\" Updated 2010-04-10, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.24
+.\" Updated 2012-04-30, Akihiro MOTOKI <amotoki@gmail.com>
+.\"
+.TH SETUID 2 2014\-09\-21 Linux "Linux Programmer's Manual"
 .SH 名前
 setuid \- ユーザー識別 (identity) を設定する
 .SH 書式
@@ -54,14 +67,26 @@ Linux では、 \fBsetuid\fP()  は \fB_POSIX_SAVED_IDS\fP をもった POSIX 
 を設定する。 これが行なわれた後にはプログラムが再びルートの特権を得ることはできない。
 .PP
 したがって、set\-user\-ID\-root プログラムで、一時的にルート特権を解除し、
-非特権ユーザであるかのように振舞い、後でルート権限をもう一度得ようと する場合には、 \fBsetuid\fP()  を使うことができない。その場合には、
\9d\9eç\89¹æ¨©ã\83¦ã\83¼ã\82¶ã\83¼ã\81§ã\81\82ã\82\8bã\81\8bã\81®ã\82\88ã\81\86ã\81«æ\8c¯è\88\9eã\81\84ã\80\81å¾\8cã\81§ã\83«ã\83¼ã\83\88権é\99\90ã\82\92ã\82\82ã\81\86ä¸\80度å¾\97ã\82\88ã\81\86ã\81¨ ã\81\99ã\82\8bå ´å\90\88ã\81«ã\81¯ã\80\81 \fBsetuid\fP()  ã\82\92使ã\81\86ã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81ªã\81\84ã\80\82ã\81\9dã\81®å ´å\90\88ã\81«ã\81¯ã\80\81
 \fBseteuid\fP(2)  を使う必要がある。
 .SH 返り値
 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
+
+\fI注意\fP: 呼び出し元が UID 0 であっても \fBsetuid\fP() が失敗する場合がある。 \fBsetuid\fP()
+からのリターンが失敗かどうかの確認を省略することは重大なセキュリティ上のエラーとなる。
 .SH エラー
 .TP 
 \fBEAGAIN\fP
-\fIuid\fP が現在のユーザー ID とマッチせず、この \fIuid\fP によってプロセスがリソース上限 \fBRLIMIT_NPROC\fP を超えた。
+この呼び出しで呼び出し元の実 UID が変更されるはずだったが (つまり、 \fIuid\fP が呼び出し元の実 UID と一致していない)、
+必要なカーネルのデータ構造体の割り当てで一時的な失敗があった。
+.TP 
+\fBEAGAIN\fP
+\fIuid\fP は呼び出し元の実 UID と一致しておらず、 この呼び出しで実ユーザー ID \fIruid\fP に属するプロセス数が呼び出し元の
+\fBRLIMIT_NPROC\fP リソース上限を超過するところであった。 Linux 3.1 以降では、このエラーはもはや発生することはない
+(しかし、堅牢性が求められるアプリケーションではこのエラーを確認すべきである)。 \fBexecve\fP(2) の \fBEAGAIN\fP の説明を参照。
+.TP 
+\fBEINVAL\fP
+\fIuid\fP で指定されたユーザー ID がこのユーザー名前空間では有効ではない。
 .TP 
 \fBEPERM\fP
 ユーザーが特権を持たず (Linux では \fBCAP_SETUID\fP ケーパビリティ (capability) を持たず)、 \fIuid\fP
@@ -71,10 +96,10 @@ Linux では、 \fBsetuid\fP()  は \fB_POSIX_SAVED_IDS\fP をもった POSIX 
 SVr4, POSIX.1\-2001.  4.4BSD のコールとは完全な互換性はない、 BSD のコールは実 (real)、保存 (saved)、実効
 (effective) ID の全てを設定する。
 .SH 注意
-Linux ã\81¯ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\83»ã\83¦ã\83¼ã\82¶ã\83¼ ID ã\81®æ¦\82念ã\82\92æ\8c\81ã\81¤ã\80\82
+Linux はファイルシステムユーザー ID の概念を持つ。
 通常、これは実効ユーザー ID に等しい。
 \fBsetuid\fP()  コールは呼び出し元のプロセスの
\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\83»ã\83¦ã\83¼ã\82¶ã\83¼ ID ã\82\82設å®\9aã\81\99ã\82\8bã\80\82
+ファイルシステムユーザー ID も設定する。
 \fBsetfsuid\fP(2) も参照すること。
 .PP
 \fIuid\fP が前の実効 UID と異っていた場合、
@@ -88,8 +113,8 @@ glibc の \fBsetuid\fP() のラッパー関数は
 カーネルバージョンによるこの違いを吸収している。
 .SH 関連項目
 \fBgetuid\fP(2), \fBseteuid\fP(2), \fBsetfsuid\fP(2), \fBsetreuid\fP(2),
-\fBcapabilities\fP(7), \fBcredentials\fP(7)
+\fBcapabilities\fP(7), \fBcredentials\fP(7), \fBuser_namespaces\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.53 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。