ブラウザ経由でファイルの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出来そうなんだけど何で出来ないんだろう。