それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

WEB経由でファイルのパーミッション・オーナーを変更する

ブラウザ経由でファイルのownerを弄りたいな

でも、 chown って root しか許可されてないんですよね。

chown するとパーミッション管理が破綻するおそれがあるからでしょうね。

解決策 : sudoers に記述する

もう、sudoers 使うしか無いですね。

Cmnd_Alias CH= /bin/chown, /bin/chmod, /bin/chgrp
www-data  ALL=NOPASSWD: CH

sudoers 仕込んだ上で、 php+apache で試してみる。

<?php

$ret_var ;
$outout;

exec ( "sudo chown takuya /var/www/test " );

コレで出来る。

ただ、どこでもパーミッションを変えられても、甘いので、ちょっとだけ制限を加えておく

<?php

function sudo_chown($ug, $path){
   if ( strpos ( $path, "/var/www" ) === 0 ){
       putenv("UG=$ug");
       putenv("TARGET=$path");
       shell_exec( 'sudo chown $UG $TARGET ');
       putenv("UG=");
       putenv("TARGET=");
   }
}

こんな感じかな。

感想

chown を directory の write 権限とともに管理してくれたら、ユーザー毎にchown出来そうなんだけど何で出来ないんだろう。