ファイルの所有者や所有グループを変更する - 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) です。 |
[ もどる ]