PHP 如何将 linux 服务器的 root 权限目录改为 www:www

客服通过 FTP 上传文件的时候,所有文件默认是 ROOT 用户权限的,导致 PHP 文件无法读写创建.

只有通过 chown www:www 来进行对每个文件的设置才可以.

请问有办法通过 PHP 来操作吗?

阅读 10.4k
6 个回答

bool chown ( string $filename , mixed $user )可以改的。php好像还有chmod,不过建议直接在服务器上改权限吧。


“客服通过 FTP 上传文件的时候,所有文件默认是 ROOT 用户权限的,导致 PHP 文件无法读写创建.”
看样子“客服”使用的是root登录,上传的文件所有者自然属于root用户了。

一般的情况,文件夹权限755,文件644。比如在nginx上的文件权限设定,一般用以下指令可搞定(具体文件夹路径自行更改):
chown -R www:www /usr/share/nginx/html/ && find /usr/share/nginx/html/ -type d -exec chmod 755 {} ; && find /usr/share/nginx/html/ -type f -exec chmod 644 {} ;

把它写入bashrc,总不能下次要用又敲一次吧:alias webroot='chown -R www:www /usr/share/nginx/html/ && find /usr/share/nginx/html/ -type d -exec chmod 755 {} ; && find /usr/share/nginx/html/ -type f -exec chmod 644 {} ;'


!!!不过直接用root太不保险了,万一删错什么的就不好了,同时建议把ssh的root远程登录关闭了,别启用root用户的sftp来给客服用。
因此,更建议创建一个一般权限的用户给客服使用。为了方便,最好将并将这个用户放到www组中。
当然这样得的话,遇到需要有www:www权限读写时还是得需要手动给予文件们664权限了,保证同组的用户可以读写文件。

你要是图方便 直接把文件夹chown -R 777就可以

ftp用户设置一下权限不行?

别用root登录嘛,win下传过去的吧,ftp工具一般可以改,比如xftp,可以修改传过来的文件夹和文件权限,并且保持后续传进来的也是如此的权限

可以用这个函数boolchown(),不过不太安全,最好是能在服务器上直接改,这个也需要root权限才能执行,最好ftp的账户是和php进程的用户保持一致

shell 中 使用 chown 命令,之前也遇到过这样的问题,配置lamp的时候。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏