PHP / Linux文件权限

我可以问一个关于文件许可的问题吗? 我在Apache运行的地方设置了Ubuntu服务器。 我有简单的PHP上传表单,并能够上传文件到/ var / www / site / uploads如下。

sandbox@sandbox-virtual-machine:/var/www/site/uploads$ ll total 1736 drwxrwxrwx 2 www-data www-data 4096 Oct 18 02:53 ./ drwxrwxrwx 3 sandbox sandbox 4096 Oct 18 00:42 ../ -rw-r--r-- 1 www-data www-data 145998 Oct 18 02:53 3d wallpaper pic.jpg -rw-r--r-- 1 www-data www-data 166947 Oct 18 02:53 3D Wallpapers 9.jpg -rw-r--r-- 1 www-data www-data 1451489 Oct 18 02:53 6453_3d_landscape_hd_wallpapers_green.jpg 

无论如何上传文件,他们显示为

 -rw-r--r-- 1 sandbox sandbox 145998 Oct 18 02:53 3d wallpaper pic.jpg -rw-r--r-- 1 sandbox sandbox 166947 Oct 18 02:53 3D Wallpapers 9.jpg -rw-r--r-- 1 sandbox sandbox 1451489 Oct 18 02:53 6453_3d_landscape_hd_wallpapers_green.jpg 

这样我就可以直接将它们提供给等待/运行的shell脚本。 现在正在等待脚本(移动,校验,重命名,resize等)无法做任何事情上传的文件与www数据的属性。 如果我只是做本地账户,比如

 sandbox@sandbox-virtual-machine:/var/www/site/uploads$touch testfile 

那么脚本就可以按我的意愿运行了。 任何build议将不胜感激,也要提前感谢。

谢谢大家给我的帮助,我能够进步。

现在我接近解决并追加输出

 sandbox@sandbox-virtual-machine:/var/www/site/uploads$ ll total 388 drwxrwxrwx 2 www-data www-data 4096 Oct 18 04:22 ./ drwxrwxrwx 3 sandbox sandbox 4096 Oct 18 04:17 ../ -rw-r--r-- 1 sandbox sandbox 166947 Oct 18 04:21 3D Wallpapers 9.jpg -rw-r--r-- 1 sandbox sandbox 219808 Oct 18 04:20 adafruit_pi.png -rw-rw-r-- 1 sandbox sandbox 0 Oct 18 04:22 test 

我怎样才能设置上传文件的权限,比如“testing”只是中间组的差异。 比如adafruit_pi.png vstesting。 我应该把哪个语句插入到php代码中?

PHP运行在Apache下的web应用程序,这是您所看到的www-data用户。

上传后,您可以更改所有者和文件组:

 exec( 'chgrp sandbox 3*.jpg' ); exec( 'chown sandbox 3*.jpg' ); 

请注意,在更改权限后,networking服务器将无法写入文件或删除或移动文件。

尝试将用户www-data添加到沙箱组

尝试更改apache服务的用户和组:searchapacheconfiguration文件(我认为在Ubuntu中位于/etc/apache2/apache2.ini)并search行:

 User www-data Group www-data 

并将www-data更改为sandbox

请注意, sandbox用户应该有权在Webroot文件夹上进行读/写操作。

希望能帮助到你。

注:这应该用于testing目的,不build议在生产环境中使用。