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

int lchown ( パス 所有者 グループ )

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 フラグ;

説明

chownchownxfchownfchownxchownxatfchownat、および 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 することによって構成されます。
所有者 AS_IS
Owner パラメーターで指定された値を無視し、ファイルの所有者 ID を変更しないままにします。
現状のままの状態のグループ
Group パラメーターで指定された値を無視し、ファイルのグループ ID を変更しないままにします。
フラグ ビット・フィールドを指定します。 AT_SYMLINK_NOFOLLOW ビットが設定されていて、パスがシンボリック・リンクを指定している場合は、シンボリック・リンクの所有者とグループが変更されます。
Group ファイルの新規グループを指定します。 chownfchownfchownatlchownコマンドでは、この値が-11の場合、グループは変更されない。 (-1という値は、グループが変更されていないことだけを示し、有効でないグループを示すものではありません。 所有者またはグループ ID を無効にすることはできません。) chownxchownxatfchownxコマンドでは、Groupに-1が与えられ、T_GROUP_AS_ISが設定されていない場合、サブルーチンはGroupを-1に変更する。
owner ファイルの新規所有者を指定します。 chownfchownfchownatlchownコマンドでは、この値が-11の場合、グループは変更されない。 (-1という値は、グループが変更されていないことだけを示し、有効でないグループを示すものではありません。 所有者またはグループ ID を無効にすることはできません。) chownxchownxatfchownxコマンドでは、Ownerに-1が与えられ、T_OWNER_AS_ISが設定されていない場合、サブルーチンはOwnerを-1に変更する。
パス ファイルのパス名を指定します。 chownxatfchownat では、DirFileDescriptor指定され、Path が相対の場合、DirFileDescriptorは、Path の有効な現在の作業ディレクトリを指定します。
DirFileDescriptor Path パラメーターの有効な現行作業ディレクトリーとして使用される、オープン・ディレクトリーのファイル記述子を指定します。 DirFileDescriptorパラメータがAT_FDCWDと等しい場合、DirFileDescriptorパラメータは無視され、Path引数は完全なファイルを指定する。

戻り値

正常終了すると、 chownchownxfchownfchownxchownxatfchownat、および lchown サブルーチンは、値 0 を戻します。 chownchownxfchownfchownxchownxatfchownat、またはlchownサブルーチンが失敗した場合、値-1が返され、エラーを示すerrnoグローバル変数が設定される。

エラー・コード

以下のいずれかに該当する場合、 chownfchownatchownxchownxat、または 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 パラメーターのすべてのコンポーネントに対する検索許可を持っている必要があります。