ファイルの所有者や所有グループを変更する - PHP5 プログラミング

PROGRAM


ファイルの所有者や所有グループを変更する

PHP5 には、Linux システムで利用されるファイルの所有者や所有グループ情報を扱う関数が用意されています。

ファイル $file に設定されている所有者や所有グループを取得するには、次のようにします。

// 所有者を取得します。

$owner = fileowner($file);

 

// 所有グループを取得します。

$group = filegroup($file);

どちらとも、そのファイルに設定されている所有者または所有グループの UID や GID を返し、取得できなかった場合には false となります。

 

ファイルの所有者や所有グループを設定したい場合には次のようにします。

// 所有者を設定します。

chown($file, $owner);

 

// 所有グループを設定します。

chgrp($file, $group);

所有者や所有グループを設定する場合には、$owner や $group には、ID 番号だけでなく名前でも良いようです。

取得に失敗した場合には false が戻ります。

所有者についてはスーパーユーザーでなければ所有者を変更することができないらしいので注意です。所有グループについては、所有グループの変更を行おうとしているユーザーアカウントが所属しているグループであれば設定可能とのことでした。

 

UID や GID から名前等の詳細情報を取得する

fileowner 関数で取得した $UID から、名前等の詳細情報を取得するには、次のようにします。

$userInfo = posix_getpwuid($UID);

これにより、変数 $userInfo に、$UID のユーザーアカウントに関する詳細情報が、次の要素を持つ連想配列の形で取得できます。

$userInfo['name'] アカウント名です。
$userInfo['passwd'] 暗号化されたパスワードです。シャドーパスワードを使用している場合には 'x' となります。
$userInfo['uid'] ユーザー ID (UID) です。
$userInfo['gid'] 所属するグループの GID です。
$userInfo['gecos'] フルネームに設定されている情報が取得できるようです。
$userInfo['dir'] ホームディレクトリーです。
$userInfo['shell'] ディフォルトシェルです。

 

また、filegroup 関数で取得した $GID から、そのグループの詳細情報を取得するには、次のようにします。

$groupInfo = posix_getgrgid($GID);

これにより、変数 $groupInfoに、$GID のグループに関する詳細情報が、次の要素を持つ連想配列の形で取得できます。

$groupInfo['name'] グループ名です。
$groupInfo['passwd'] 暗号化されたパスワードです。シャドーパスワードを使用している場合には 'x' となります。
$groupInfo['members'] グループに所属しているアカウント名が配列で設定されます。ただし、ここでは /etc/group 内で定義しているものだけで、/etc/passwd 内でアカウントに関連付けられているグループは含まれないようでした。
$groupInfo['gid'] グループ ID (GID) です。

 


[ もどる ]