chown、fchown、lchown、chownx、fchownx、chownxat、または fchownat サブルーチン
目的
ファイル所有権を変更します。
ライブラリー
標準 C ライブラリー (libc.a)
構文
#include <sys/types.h> #include <unistd.h>
int chown ( Path, Owner, Group ) const char *Path; uid_t Owner; gid_t Group;
int fchown ( FileDescriptor, Owner, Group )
int FileDescriptor; uid_t Owner; gid_t Group;
const char * fname uid_t uid gid_tgid
#include <sys/types.h>
#include <sys/chownx.h>
int chownx ( Path, Owner, Group, Flags )
char *パス; uid_t 所有者; gid_t Group; int Flags;
int fchownx ( FileDescriptor, Owner, Group, Flags )
int FileDescriptor; uid_t Owner; gid_t Group; int Flags;
int chownxat ( DirFileDescriptor, Path, Owner, Group, Flags)
int DirFileDescriptor;
char * パス;
uid_t 所有者;
gid_t グループ;
int フラグ;
int fchownat (DirFileDescriptor, Path, Owner, Group, Flag)
int DirFileDescriptor;
char *パス;
uid_t 所有者;
gid_t グループ;
int フラグ;
説明
chown、 chownx、 fchown、 fchownx、 chownxat、 fchownat、および lchown サブルーチンは、指定されたファイル・システム・オブジェクトのファイル所有者とグループ ID を設定します。 ファイルの所有者を変更するには、root ユーザー権限が必要です。
関数 lchown 関数は、指定されたファイルの所有者 ID とグループ ID を chown 関数に設定します。ただし、指定されたファイルがシンボリック・リンクである場合を除きます。 この場合、 lchown 関数はシンボリック・リンク・ファイル自体の所有権を変更し、 chown 関数はシンボリック・リンクが参照するファイルまたはディレクトリーの所有権を変更します。
chownxatサブルーチンはchownxサブルーチンと等価であり、fchownatサブルーチンは、Pathパラメーターが絶対パスを指定している場合、またはDirFileDescriptorパラメーターがAT_FDCWDに設定されている場合、chownまたはlchownサブルーチンと等価である。 変更されるファイルは、現在の作業ディレクトリではなく、DirFileDescriptorパラメータに関連付けられたディレクトリへの相対パスによって決定される。 ディレクトリーが O_SEARCH オープン・フラグなしでオープンされた場合、サブルーチンは、ディレクトリーの現行許可を使用してディレクトリー検索が許可されているかどうかを判別します。 ディレクトリーが O_SEARCH オープン・フラグでオープンされている場合、サブルーチンは検査を実行しません。
パラメーター
| 項目 | 説明 |
|---|---|
| FileDescriptor | これは、オープン・ファイルのファイル・ディスクリプターを指定します。 |
| flags | ファイル所有者 ID またはグループ ID のどちらを変更するかを指定します。 このパラメーターは、以下の値を論理 OR することによって構成されます。
|
| フラグ | ビット・フィールドを指定します。 AT_SYMLINK_NOFOLLOW ビットが設定されていて、パスがシンボリック・リンクを指定している場合は、シンボリック・リンクの所有者とグループが変更されます。 |
| Group | ファイルの新規グループを指定します。 chown、fchown、fchownat、lchownコマンドでは、この値が-11の場合、グループは変更されない。 (-1という値は、グループが変更されていないことだけを示し、有効でないグループを示すものではありません。 所有者またはグループ ID を無効にすることはできません。) chownx、chownxat、fchownxコマンドでは、Groupに-1が与えられ、T_GROUP_AS_ISが設定されていない場合、サブルーチンはGroupを-1に変更する。 |
| owner | ファイルの新規所有者を指定します。 chown、fchown、fchownat、lchownコマンドでは、この値が-11の場合、グループは変更されない。 (-1という値は、グループが変更されていないことだけを示し、有効でないグループを示すものではありません。 所有者またはグループ ID を無効にすることはできません。) chownx、chownxat、fchownxコマンドでは、Ownerに-1が与えられ、T_OWNER_AS_ISが設定されていない場合、サブルーチンはOwnerを-1に変更する。 |
| パス | ファイルのパス名を指定します。 chownxatとfchownat では、DirFileDescriptor指定され、Path が相対の場合、DirFileDescriptorは、Path の有効な現在の作業ディレクトリを指定します。 |
| DirFileDescriptor | Path パラメーターの有効な現行作業ディレクトリーとして使用される、オープン・ディレクトリーのファイル記述子を指定します。 DirFileDescriptorパラメータがAT_FDCWDと等しい場合、DirFileDescriptorパラメータは無視され、Path引数は完全なファイルを指定する。 |
戻り値
正常終了すると、 chown、 chownx、 fchown、 fchownx、 chownxat、 fchownat、および lchown サブルーチンは、値 0 を戻します。 chown、chownx、fchown、fchownx、chownxat、fchownat、またはlchownサブルーチンが失敗した場合、値-1が返され、エラーを示すerrnoグローバル変数が設定される。
エラー・コード
以下のいずれかに該当する場合、 chown、 fchownat、 chownx、 chownxat、または lchown サブルーチンは失敗し、ファイルの所有者とグループは変更されません。
| 項目 | 説明 |
|---|---|
| EACCES | Path パラメーターのコンポーネントに対する検索許可が拒否されました。 |
| EDQUOT | ファイル・システム上でディスク・ブロックまたは i ノードのグループの割り当て量が使い尽くされたため、ファイル・システム・オブジェクトの新規グループを設定できません。 |
| EFAULT | Path パラメーターが、プロセスの割り振られたアドレス・スペースの外部の場所を指しています。 |
| EINVAL | 指定された所有者またはグループ ID が無効です。 |
| ELOOP | Path パラメーターの変換中に検出されたシンボリック・リンクが多すぎます。 |
| ENAMETOOLONG | Path パラメーターのコンポーネントが 255 文字を超えているか、または Path パラメーター全体が 1023 文字を超えています。 |
| ENOENT | シンボリック・リンクが指定されましたが、それが参照するファイルが存在しないか、 Path パラメーターのコンポーネントが存在しないか、プロセスに disallow truncation 属性が設定されているか、または Path パラメーターがヌルです。 |
| ENOTDIR | パス接頭部のコンポーネントがディレクトリーではありません。 |
| EPERM | 有効ユーザー ID がファイルの所有者と一致せず、呼び出しプロセスに適切な特権がありません。 |
| EROFS | 指定されたファイルは、読み取り専用ファイル・システム上にあります。 |
| ESTALE | プロセスのルート・ディレクトリーまたは現行ディレクトリーは、アンマウントされた仮想ファイル・システム内にあります。 |
以下のいずれかが該当する場合、 fchown または fchownx サブルーチンは失敗し、ファイル所有者およびグループは変更されません。
| 項目 | 説明 |
|---|---|
| EBADF | 指定されたファイルは、読み取り専用ファイル・システム上にあります。 |
| EDQUOT | ファイル・システム上でディスク・ブロックまたは i ノードのグループの割り当て量が使い尽くされたため、ファイル・システム・オブジェクトの新規グループを設定できません。 |
| EIO | 操作中に入出力エラーが発生しました。 |
以下のいずれかが該当する場合、 chownxat または fchownat サブルーチンは失敗し、ファイル所有者およびグループは変更されません。
| 項目 | 説明 |
|---|---|
| EBADF | Pathパラメータは絶対パスを指定しておらず、DirFileDescriptor引数はAT_FDCWDでも有効なファイル記述子でもない。 |
| EINVAL | Flag パラメーターの値が無効です。 |
| ENOTDIR | Pathパラメータは絶対パスではなく、DirFileDescriptorはファイル記述子であるが、ディレクトリに関連付けられていない。 |
セキュリティー
アクセス制御: 呼び出し側は、 Path パラメーターのすべてのコンポーネントに対する検索許可を持っている必要があります。