我有一个上传脚本,将zip文件上传到我网站上的目录,然后解压缩文件并为每个上传的文件创建一个目录。
drwxrwxrwx 7 Fabulous admin 238 12 Jan 18:20 .
drwxrwxrwx 39 Fabulous admin 1326 12 Jan 12:28 ..
-rwxr--r--@ 1 Fabulous admin 15364 12 Jan 18:21 .DS_Store
drwxr-xr-x 4 nobody admin 136 12 Jan 18:20 2012_06
drwxr-xr-x 4 nobody admin 136 12 Jan 18:20 2012_07
-rwxr--r-- 1 Fabulous admin 2904 31 Oct 16:11 index.php
我有另一个运行的php脚本,它复制目录2012_06
和2012_07
中的文件,这些文件由上传脚本创建。通过浏览器,每件事都很好。但是,我尝试使用unix命令行通过命令行自动执行该过程来调用脚本。
问题是如果我使用以下命令将目录的所有权更改为Fabulous,则脚本会运行
cd upload
sudo chown -R Fabulous:admin .
然而,当我这样做时,我的上传脚本index.php
不再具有将文件上传到上传目录的权限访问权限,除非我将所有权更改回任何人。
错误消息
警告: 重命名(/htdocs/data_vis/upload/2012_06/Audit_Log.csv,htdocs/data_vis/data_out/2012_06_Audit_Log.csv):权限被拒绝 第27行/htdocs/data_vis/rename_files_in_sdir_with_sdir_name_prefix.php
欢迎任何关于我应该做什么的建议/建议或修正或通过许可或任何其他方法解决此问题的正确方法。提前致谢。
答案 0 :(得分:0)
我使用以下命令更改目录中文件的所有权,以便其他脚本可以使用这些文件。
<?php
// File name and username to use
$file_name= "foo.php";
$path = "/home/sites/php.net/public_html/sandbox/" . $file_name ;
$user_name = "fred";
// Set the user
chown($path, $user_name);
// Check the result
$stat = stat($path);
print_r(posix_getpwuid($stat['uid']));
?>
答案 1 :(得分:0)
要么将它们添加到一个组中,要么将文件归所有者所有,并且拥有Fabulous所拥有的组,你不需要它为admin,root无论如何都可以访问所有内容
最简单的方法是确保群组保持不变是使用粘性位
如果/ path / to / dir归正确的组所有
chmod g+s /path/to/dir
将使/path/to/dir
/path/to/dir/1
下的所有新文件夹归/path/to/dir
所有,而不是用户默认组
然后你的web应用程序都应该没问题,而你的cron脚本没有修改代码