我有一个网站,用户可以在其中裁剪图像。我通常将裁剪后的图像保存在具有“755”chmod 参数的文件夹下。
但是,当它是 755 时,它不起作用 - 当我 chmod 到 777 时它起作用,我相信 777 非常不安全,所以我不想使用它。
有什么问题?
附言。系统是这样工作的。服务器中有一些图片,PHP允许用户裁剪这些图像,当他们点击保存时,它应该保存在/cropped”文件夹中。它适用于777但不适用于755。
文件权限指定文件所有者可以做什么,以及其他人可以做什么(组和世界其他地方)。您仍然必须指定正确的所有者。
您可能必须将文件夹的所有者更改为您的服务器进程的用户(可能是 www-data,如果您使用的是 apache)。然后 755 应该可以工作。
chown www-data:www-data /cropped
编辑:如果chown -R
里面有子文件夹/cropped
并且您也想更改它们的权限,请使用。
您已经从其他用户那里得到了答案。因此,我无需在这里为您进一步重复。
但是,您实际上应该了解 755 和 777 的含义,而不是将其视为某种伪安全级别设置。777 并不立即意味着不安全。坦率地说,我认为您将图像上传文件夹设置为 777 没有直接问题。
所有者、root、php 执行者等并不等同,但可能相同。
这些词以英语为基础,您应该以英语的价值而不是一些外国的编程世界结构来看待它们。
根用户就像一个独裁者。他说什么都行。没有人可以说别的。
当有一个对象时,就有一个所有者用户。并且您设定所有者可以做什么的法律:读、写或执行。您还可以为特定群体的行为制定法律。最后,您还可以为其他人可以做的事情制定法律。
现在独裁者不会到处做所有的工作。运行 PHP 的人可以是一个人。拥有该文件的人可以是另一个人。他们当然可以是同一个人,但这样的定义并不等同。我希望你能看到区别。
这是另一个类比。想想私人公园。如果您允许每个人(即 777)进入公园并在公园内玩耍,您是否会构成某种安全风险?不。如果你有一个保险箱,你会允许谁?只是你自己(所有者),对吧?所以,这就像 linux 权限中的 700 一样。除了你自己,没有其他人有任何许可(除了独裁者,因为他可以来你家,杀了你,拿走你的东西,如果他愿意的话)。
755表示所有者可以读/写/执行,组和每个人(公共)只能读/执行。检查您的 httpd 的凭据。777 并不一定意味着它不安全,只需确保使用 .htaccess 或什至配置(每个文件夹)禁用该文件夹内-ExecCGI
的php_flag engine off
PHPphp.ini
解析
你可以试试775看看组设置是否够用
您的 /cropped 目录需要归运行 PHP 的用户所有。
这通常是 www-data,但您需要检查您的设置。