Unix-system-calls-fchown

提供:Dev Guides
移動先:案内検索

[top]#

[[File:]]

[[File:]]

|Web |This Site

  • 初心者向けのUnix *
  • 高度なUnix *

選択した読書

Copyright©2014 by finddevguides

  Home     References     Discussion Forums     About TP  

chown()-Unix、Linuxシステムコール

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] image:http://www.finddevguides.com/add- this.gif [AddThisソーシャルブックマークボタン]

広告

NAME

chown、fchown、lchown-ファイルの所有権を変更する

概要

#include <sys/types.h> #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_で指定されたファイルの所有者とグループを変更します。 特権プロセス(Linux: CAP_CHOWN 機能を持つプロセス)のみがファイルの所有者を変更できます。 ファイルの所有者は、ファイルのグループを、その所有者がメンバーである任意のグループに変更できます。 特権プロセス(Linux:with CAP_CHOWN )は、グループを任意に変更できます。

_owner_または_group_が-1として指定されている場合、そのIDは変更されません。

実行可能ファイルの所有者またはグループが非スーパーユーザーによって変更されると、S_ISUIDおよびS_ISGIDモードビットがクリアされます。 POSIXは、rootが chown ()を実行するときにこれが発生するかどうかを指定しません。 Linuxの動作はカーネルバージョンに依存します。 非グループ実行可能ファイル(クリアS_IXGRPビット)の場合、S_ISGIDビットは強制ロックを示し、 chown ()によってクリアされません。

返り値

成功すると、ゼロが返されます。 エラーの場合、-1が返され、_errno_が適切に設定されます。

エラー

ファイルシステムによっては、他のエラーが返される場合があります。 chown ()のより一般的なエラーを以下にリストします。

Tag

説明

*EACCES*

パスプレフィックスのコンポーネントに対する検索許可が拒否されました。 ( path_resolution (2)も参照してください。)

*EFAULT*

_path_は、アクセス可能なアドレス空間の外側を指します。

*ELOOP*

_path_の解決中に検出されたシンボリックリンクが多すぎます。

*ENAMETOOLONG*

_path_が長すぎます。

*ENOENT*

ファイルが存在しません。

*ENOMEM*

カーネルメモリが不足していました。

*ENOTDIR*

パスプレフィックスのコンポーネントはディレクトリではありません。

*EPERM*

呼び出し元のプロセスには、所有者やグループを変更するために必要な許可(上記を参照)がありませんでした。

*EROFS*

指定されたファイルは読み取り専用ファイルシステムにあります。

*fchown* ()の一般的なエラーは次のとおりです。
*EBADF*

記述子が無効です。

*EIO*

iノードの変更中に低レベルのI/Oエラーが発生しました。

*ENOENT*

上記を参照。

*EPERM*

上記を参照。

*EROFS*

上記を参照。

ノート

2.1.81(および2.1.46とは異なる)より前のバージョンのLinuxでは、 chown ()はシンボリックリンクをたどりませんでした。 Linux 2.1.81以降、 chown ()はシンボリックリンクを追跡し、シンボリックリンクを追跡しない新しいシステムコール lchown ()があります。 Linux 2.1.86以降、この新しい呼び出し(古い chown ()と同じセマンティクスを持つ)は同じsyscall番号を取得し、 chown ()は新しく導入された番号を取得しました。

*fchown* ()のプロトタイプは、 *_ BSD_SOURCE* が定義されている場合にのみ利用可能です。

準拠

4.4BSD、SVr4、POSIX.1-2001。

4.4BSDバージョンは、スーパーユーザーのみが使用できます(つまり、一般ユーザーはファイルを配布できません)。

制限事項

*chown* ()セマンティクスは、UIDマッピングが有効になっているNFSファイルシステムでは意図的に違反されます。 さらに、 *chown* ()がすでに開いているファイルに対してすぐにアクセスを取り消す可能性があるため、ファイルの内容にアクセスするすべてのシステムコールのセマンティクスに違反します。 クライアント側のキャッシュにより、ユーザーがアクセスできるように所有権が変更されてから、他のクライアント上のユーザーがファイルに実際にアクセスできるようになるまでに遅延が生じる場合があります。

関連項目

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] [[File:]]

広告

  
Advertisements