1 .\" Hey Emacs! This file is -*- nroff -*- source.
3 .\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
4 .\" and Copyright (c) 1998 Andries Brouwer (aeb@cwi.nl)
5 .\" and Copyright (c) 2007, 2008 Michael Kerrisk <mtk.manpages@gmail.com>
7 .\" Permission is granted to make and distribute verbatim copies of this
8 .\" manual provided the copyright notice and this permission notice are
9 .\" preserved on all copies.
11 .\" Permission is granted to copy and distribute modified versions of this
12 .\" manual under the conditions for verbatim copying, provided that the
13 .\" entire resulting derived work is distributed under the terms of a
14 .\" permission notice identical to this one.
16 .\" Since the Linux kernel and libraries are constantly changing, this
17 .\" manual page may be incorrect or out-of-date. The author(s) assume no
18 .\" responsibility for errors or omissions, or for damages resulting from
19 .\" the use of the information contained herein. The author(s) may not
20 .\" have taken the same level of care in the production of this manual,
21 .\" which is licensed free of charge, as they might when working
24 .\" Formatted or processed versions of this manual, if unaccompanied by
25 .\" the source, must acknowledge the copyright and authors of this work.
27 .\" Modified by Michael Haardt <michael@moria.de>
28 .\" Modified 1993-07-21 by Rik Faith <faith@cs.unc.edu>
29 .\" Modified 1996-07-09 by Andries Brouwer <aeb@cwi.nl>
30 .\" Modified 1996-11-06 by Eric S. Raymond <esr@thyrsus.com>
31 .\" Modified 1997-05-18 by Michael Haardt <michael@cantor.informatik.rwth-aachen.de>
32 .\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
33 .\" 2007-07-08, mtk, added an example program; updated SYNOPSIS
34 .\" 2008-05-08, mtk, Describe rules governing ownership of new files
35 .\" (bsdgroups versus sysvgroups, and the effect of the parent
36 .\" directory's set-group-ID permission bit).
38 .\" Japanese Version Copyright (c) 1996 Yosiaki Yanagihara
39 .\" all rights reserved.
40 .\" Translated 1996-06-24, Yosiaki Yanagihara <yosiaki@bsd2.kbnes.nec.co.jp>
41 .\" Modified 1998-05-11, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
42 .\" Modified 2004-02-29, Yuichi SATO <ysato444@yahoo.co.jp>
43 .\" Updated & Modified Wed Dec 29 06:48:16 JST 2004 by Yuichi SATO
44 .\" Updated 2007-09-04, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.64
45 .\" Updated 2008-08-09, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.05
47 .TH CHOWN 2 2010-09-26 "Linux" "Linux Programmer's Manual"
50 .\"O chown, fchown, lchown \- change ownership of a file
51 chown, fchown, lchown \- ファイルの所有者を変更する
54 .B #include <unistd.h>
56 .BI "int chown(const char *" path ", uid_t " owner ", gid_t " group );
58 .BI "int fchown(int " fd ", uid_t " owner ", gid_t " group );
60 .BI "int lchown(const char *" path ", uid_t " owner ", gid_t " group );
63 .\"O Feature Test Macro Requirements for glibc (see
64 .\"O .BR feature_test_macros (7)):
66 .RB ( feature_test_macros (7)
75 _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
76 _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
78 .\"O || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
79 || /* glibc 2.12 以降: */ _POSIX_C_SOURCE\ >=\ 200809L
85 .\"O These system calls change the owner and group of a file.
86 .\"O The differ only in how the file is specified:
87 これらのシステムコールは、ファイルの所有者 (owner) とグループを変更する。
88 システムコール間の違いは、ファイルの指定の仕方だけである。
91 .\"O changes the ownership of the file specified by
93 .\"O which is dereferenced if it is a symbolic link.
99 がシンボリック・リンクの場合は、リンクの展開が行われる。
102 .\"O changes the ownership of the file referred to by the open file descriptor
107 により参照されるファイルの所有権を変更する。
112 .\"O but does not dereference symbolic links.
116 と同じだが、シンボリック・リンクを展開しない点が異なる。
118 .\"O Only a privileged process (Linux: one with the
120 .\"O capability) may change the owner of a file.
123 ケーパビリティ (capability) を持つプロセス) だけが
125 .\"O The owner of a file may change the group of the file
126 .\"O to any group of which that owner is a member.
127 ファイルの所有者は、その所有者が属しているグループのいずれかに
128 ファイルのグループを変更することができる。
129 .\"O A privileged process (Linux: with
131 .\"O may change the group arbitrarily.
134 を持つプロセスは、任意のグループに変更できる。
140 .\"O is specified as \-1, then that ID is not changed.
144 に \-1 が指定された場合、それらの ID は変更されない。
146 .\"O When the owner or group of an executable file are
147 .\"O changed by an unprivileged user the
151 .\"O mode bits are cleared.
152 .\"O POSIX does not specify whether
153 .\"O this also should happen when root does the
155 非特権ユーザーにより実行ファイルの所有者またはグループが
163 を行なった場合については特に指定されていない。
164 .\"O the Linux behavior depends on the kernel version.
165 Linux における動作はカーネルのバージョンに依存する。
166 .\"O .\" In Linux 2.0 kernels, superuser was like everyone else
167 .\"O .\" In 2.2, up to 2.2.12, these bits were not cleared for superuser.
168 .\"O .\" Since 2.2.13, superuser is once more like everyone else.
169 .\" Linux 2.0 カーネルでは、スーパー・ユーザーでの動作は
170 .\" 他のユーザーの場合と同じであった。
171 .\" 2.2 では、2.2.12 までは、スーパー・ユーザーの場合には
172 .\" これらのビットはクリアされなくなった。
173 .\" 2.2.13 以降では、スーパー・ユーザーでの動作は
174 .\" 再び他のユーザーの場合と同じになった。
175 .\"O In case of a non-group-executable file (i.e., one for which the
177 .\"O bit is not set) the
179 .\"O bit indicates mandatory locking, and is not cleared by a
183 ビットが設定されていないファイル) の場合には
185 ビットは強制ロック (mandatory locking) を意味している。
189 .\"O .SH "RETURN VALUE"
191 .\"O On success, zero is returned.
192 .\"O On error, \-1 is returned, and
194 .\"O is set appropriately.
201 .\"O Depending on the file system, other errors can be returned.
202 .\"O The more general errors for
204 .\"O are listed below.
205 ファイルシステムによっては他のエラーが返される事がある。
210 .\"O Search permission is denied on a component of the path prefix.
212 .\"O .BR path_resolution (7).)
214 の構成要素に検索許可 (search permission) がない
215 .RB ( path_resolution (7)
220 .\"O points outside your accessible address space.
222 が割り当てられたアドレス空間外を指している。
225 .\"O Too many symbolic links were encountered in resolving
228 を解決する際に遭遇したシンボリック・リンクが多過ぎる。
237 .\"O The file does not exist.
241 .\"O Insufficient kernel memory was available.
245 .\"O A component of the path prefix is not a directory.
250 .\"O The calling process did not have the required permissions
251 .\"O (see above) to change owner and/or group.
252 呼び出したプロセスに所有者またはグループ (もしくはその両方) を変更するために
256 .\"O The named file resides on a read-only file system.
257 指定したファイルが読み込み専用 (read-only) のファイル・システム上にある。
259 .\"O The general errors for
261 .\"O are listed below:
266 .\"O The descriptor is not valid.
270 .\"O A low-level I/O error occurred while modifying the inode.
271 i ノード (inode) を変更する際に低レベル I/O エラーが発生した。
284 .\"O .SH "CONFORMING TO"
286 4.4BSD, SVr4, POSIX.1-2001.
288 .\"O The 4.4BSD version can only be
289 .\"O used by the superuser (that is, ordinary users cannot give away files).
290 4.4BSD 版ではスーパー・ユーザーのみが使用できる
291 (つまり、普通のユーザーはファイルを手放すことはできない)。
293 .\"O .\" SVr4 documents EINVAL, EINTR, ENOLINK and EMULTIHOP returns, but no
294 .\"O .\" ENOMEM. POSIX.1 does not document ENOMEM or ELOOP error conditions.
296 .\" SVr4 には EINVAL, EINTR, ENOLINK, EMULTIHOP を返すと記載されているが、
298 .\" POSIX.1 には ENOMEM, ELOOP について記載はない。
300 .\"O .\" SVr4 documents additional EINVAL, EIO, EINTR, and ENOLINK
301 .\"O .\" error conditions.
303 .\" SVr4 には他に EINVAL, EIO, EINTR, ENOLINK エラー状態についての記載がある。
306 .\"O When a new file is created (by, for example,
310 .\"O its owner is made the same as the file system user ID of the
311 .\"O creating process.
315 などにより) 新しいファイルが作成されるとき、
316 その所有者は呼び出したプロセスのファイルシステム・ユーザ ID と
318 .\"O The group of the file depends on a range of factors,
319 .\"O including the type of file system,
320 .\"O the options used to mount the file system,
321 .\"O and whether or not the set-group-ID permission bit is enabled
322 .\"O on the parent directory.
323 そのファイルのグループはいくつかの要因により決定される。
325 ファイルシステムの種類、そのファイルシステムのマウント時に
326 使用されたオプション、親ディレクトリで set-group-ID 許可ビットが
328 .\"O If the file system supports the
330 .\"O (or, synonymously
331 .\"O .IR "\-o\ bsdgroups" )
333 .\"O .I "\-o\ nogrpid"
334 .\"O (or, synonymously
335 .\"O .IR "\-o\ sysvgroups" )
337 .\"O options, then the rules are as follows:
342 .RI ( "\-o\ bsdgroups"
345 .RI ( "\-o sysvgroups"
346 も同義語) に対応している場合、ルールは以下の通りとなる。
348 .\"O If the file system is mounted with
349 .\"O .IR "\-o\ grpid" ,
350 .\"O then the group of a new file is made
351 .\"O the same as that of the parent directory.
354 付きでマウントされている場合、新しいファイルのグループは
357 .\"O If the file system is mounted with
358 .\"O .IR "\-o\ nogrpid"
359 .\"O and the set-group-ID bit is disabled on the parent directory,
360 .\"O then the group of a new file is made the same as the
361 .\"O process's file system GID.
364 付きでマウントされており、親ディレクトリでは set-group-ID ビットが
365 無効になっている場合、新しいファイルのグループは
366 プロセスのファイルシステム GID と同じになる。
368 .\"O If the file system is mounted with
369 .\"O .IR "\-o\ nogrpid"
370 .\"O and the set-group-ID bit is enabled on the parent directory,
371 .\"O then the group of a new file is made
372 .\"O the same as that of the parent directory.
375 付きでマウントされており、親ディレクトリでは set-group-ID ビットが
376 有効になっている場合、新しいファイルのグループは
379 .\"O As at Linux 2.6.25,
381 .\"O .IR "\-o\ grpid"
383 .\"O .IR "\-o\ nogrpid"
384 .\"O mount options are supported by ext2, ext3, ext4, and XFS.
385 .\"O File systems that don't support these mount options follow the
386 .\"O .IR "\-o\ nogrpid"
388 Linux 2.6.25 では、マウントオプション
393 ext2, ext3, ext4, XFS である。
394 これらのマウントオプションに対応していないファイルシステムでは、
400 .\"O semantics are deliberately violated on NFS file systems
401 .\"O which have UID mapping enabled.
402 .\"O Additionally, the semantics of all system
403 .\"O calls which access the file contents are violated, because
405 .\"O may cause immediate access revocation on already open files.
407 .\"O caching may lead to a delay between the time where ownership have
408 .\"O been changed to allow access for a user and the time where the file can
409 .\"O actually be accessed by the user on other clients.
413 さらにファイルの内容にアクセスする全てのシステム・コールを侵害する。
418 クライアント側のキャッシュにより所有権が変更されて
419 ユーザーのアクセスが許した時点と、実際に他のクライアントでユーザーによって
420 ファイルにアクセスできる時点との間に時間差があるかもしれない。
422 .\"O In versions of Linux prior to 2.1.81 (and distinct from 2.1.46),
424 .\"O did not follow symbolic links.
425 Linux の 2.1.81 より前のバージョン (特に 2.1.46 以前) では、
428 .\"O Since Linux 2.1.81,
430 .\"O does follow symbolic links, and there is a new system call
432 .\"O that does not follow symbolic links.
435 はシンボリック・リンクを追跡し、新たなシステム・コール
438 .\"O Since Linux 2.1.86, this new call (that has the same semantics
441 .\"O has got the same syscall number, and
443 .\"O got the newly introduced number.
444 Linux 2.1.86 以降ではこの新しいコール (古い
446 と全く同じ動作を行なう) は同じシステムコール番号を持ち
452 .\"O The following program changes the ownership of the file named in
453 .\"O its second command-line argument to the value specified in its
454 .\"O first command-line argument.
455 .\"O The new owner can be specified either as a numeric user ID,
456 .\"O or as a username (which is converted to a user ID by using
457 .\"O .BR getpwnam (3)
458 .\"O to perform a lookup in the system password file).
460 二つ目のコマンドライン引き数で指定された名前のファイルの所有者を、
461 一つ目のコマンドライン引き数で指定された値に変更する。
462 新しい所有者は、数字のユーザ ID かユーザ名のいずれかで指定できる
465 を使ってシステムのパスワードファイルの検索が行われ、
475 main(int argc, char *argv[])
481 if (argc != 3 || argv[1][0] == \(aq\\0\(aq) {
482 fprintf(stderr, "%s <owner> <file>\\n", argv[0]);
486 uid = strtol(argv[1], &endptr, 10); /* Allow a numeric string */
488 if (*endptr != \(aq\\0\(aq) { /* Was not pure numeric string */
489 pwd = getpwnam(argv[1]); /* Try getting UID for username */
498 if (chown(argv[2], uid, \-1) == \-1) {
511 .BR path_resolution (7),