fchown(2) FreeBSD 一般コマンドマニュアル

fchown

前のページ 上に戻る 次のページ

fchown




書式

     #include <unistd.h>

     int
     chown(const char *path, uid_t owner, gid_t group);

     int
     fchown(int fd, uid_t owner, gid_t group);

     int
     lchown(const char *path, uid_t owner, gid_t group);


解説

     path で指定された、または fd で参照されたファイルの所有者 ID およびグルー
     プ ID を、引数に指定された owner および group に変更します。ファイルの所
     有者は、 group に自分が所属している任意のグループを指定できます。しかし、
     owner を変更することができるのはスーパユーザのみです。

     chown() は、スーパユーザによって実行される場合をのぞいて、ファイル上の
     set-user-id ビットと set-group-id ビットをクリアします。これは、set-user-
     id あるいは set-group-id されたプログラムが偶然、またはいたずらで作成され
     るのを防止するためです。 chown() は、シンボリックリンクをたどり、リンク自
     体ではなくリンクのターゲットに作用します。

     fchown() が特に便利なのは、ファイルロッキングプリミティブとともに使用する
     ときです (flock(2) を参照)。

     lchown() は、 chown() に類似していますが、シンボリックリンクをたどりませ
     ん。

     所有者 ID またはグループ ID として -1 を指定した場合、その ID は変更され
     ません。


戻り値

     成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、
     グローバル変数 errno が設定されてエラーを示します。


エラー

     chown() と lchown() は、次の場合に処理を失敗して、ファイルは変更されませ
     ん。

     [ENOTDIR]          パスの構成要素中にディレクトリ以外のものが含まれていま
                        す。

     [ENAMETOOLONG]     パス名の構成要素が 255 文字を越えているか、またはパス
                        名全体が 1023 文字を越えています。

     [ENOENT]           指定されたファイルが存在しません。

     [EACCES]           指定されたパスには、検索が許可されていないディレクトリ
                        が含まれています。

     Fchown() は次の場合に失敗します。

     [EBADF]            fd が有効な記述子ではありません。

     [EINVAL]           fd がファイルではなくソケットを参照しています。

     [EPERM]            実効ユーザ ID がスーパユーザではありません。

     [EROFS]            指定のファイルは読取り専用ファイルシステムに常駐してい
                        ます。

     [EIO]              ファイルシステムに読み書きしている間に入出力エラーが発
                        生しました。


関連項目

     chgrp(1), chmod(2), flock(2), chown(8)


規格

     chown() 関数は ISO/IEC 9945-1:1990 (``POSIX.1'') に準拠しています。


歴史

     chown() 関数は Version 7 AT&T UNIX で登場しました。 fchown() 関数は
     4.2BSD で登場しました。

     chown() 関数は 4.4BSD でシンボリックリンクをたどるように変更されました。
     lchown() 関数は、機能の欠落を補充するために FreeBSD 3.0 で追加されまし
     た。

FreeBSD 4.4                     April 19, 1994                     FreeBSD 4.4

ABELNET VPSサービス