使用PHP脚本更改新创建目录的所有者和组
运行debain LAMP的专用Linux服务器 我运行一个PHP脚本(使用浏览器),该脚本在同一服务器上的文件夹中创建一个目录(以及各种子目录),以便随后使用Dropbox共享使用。使用PHP脚本更改新创建目录的所有者和组,php,permissions,chown,Php,Permissions,Chown,运行debain LAMP的专用Linux服务器 我运行一个PHP脚本(使用浏览器),该脚本在同一服务器上的文件夹中创建一个目录(以及各种子目录),以便随后使用Dropbox共享使用。 目录是在/home/dropbox/New\u Project\u Name/New\u folders中创建的,应该由用户“dropbox”拥有 但是,运行php脚本会导致脚本生成的新创建目录归'www-data' 从浏览器运行php脚本以生成拥有用户和组“dropbox”所有权的新目录,或者随后运行脚本以检查
目录是在
/home/dropbox/New\u Project\u Name/New\u folders
中创建的,应该由用户“dropbox”拥有
但是,运行php脚本会导致脚本生成的新创建目录归'www-data'
从浏览器运行php脚本以生成拥有用户和组“dropbox”所有权的新目录,或者随后运行脚本以检查www数据所有权并递归地将文件和目录更改为“dropbox”,最好的原因是什么
非常感谢您的帮助。未经测试,但在创建文件夹后,您可以运行另一行代码来更改所有者/组 请记住,它可能会抛出错误,因为存在子文件夹,并且操作失败。一个while循环应该可以解决这个问题 权限可能存在问题,直至服务器配置 还有另一种使用“exec”命令递归运行它的方法 你可以这样做:
exec("chown -R ".$owner.":".$group." ".$folder);
这将更改文件夹和所有子文件夹的用户和组。但是要小心,
使用系统是“危险的”。您可以运行任何shell命令。不要玩得太多。这里有3个选项:
sudo chown-R dropbox/path/to/dir
,然后只需使用php的exec
函数即可好的-终于成功了(谢谢大家),但在我的/etc/sudoers中添加了以下内容
www-data ALL=(ALL) NOPASSWD: /bin/chown, /home/sites/public_html/change_owner.php
PHP文件的内容与DasSaffe的回答一样非常感谢-但我猜由于服务器权限的原因,我得到了“不允许操作”。答案中的第一个变量应该是$user,而不是$username。是的,您是对的。我编辑了变量并给出了另一种解决itOK的方法——我正在尝试使用exec选项,正如您所示,但我试图理解如何授予脚本这样运行的权限。我已经在/etc/sudoers的底部添加了这一行。
code
nobody ALL=NOPASSWD:/home/user/public\u html/change\u owner.phpOK-最终实现了这一点(谢谢大家),但在我的/etc/sudoers`www data ALL=(ALL)NOPASSWD:/bin/chown中添加了以下内容,/home/sites/public_html/change_owner.php’php文件的内容如DasSaffechown($folder,$owner)的答案所示:根据仅适用于文件的
www-data ALL=(ALL) NOPASSWD: /bin/chown, /home/sites/public_html/change_owner.php