chmod 774 *.jpg
rwxrwxr-- webadmin webgroup # Allow web admin and group to modify, everyone to view
chmod 744 *.jpg
rwxr--r-- webadmin webgroup # Allow only web admin to modify, everyone to view
chmod 740 *.jpg
rwxr----- webadmin webgroup # Allow only web admin to modify, only him and webgroup to view, this means web server must be in webgroup.
chmod 740 *.jpg
chgrp nobody *.jpg
rwxr----- webadmin nobody # If apache user is nobody/nobody, this is better
我会推荐 find 命令来设置权限:
为了使所有目录都可以被所有人搜索和读取(请参阅此链接以获取 Unix 目录权限,权限与文件具有不同的含义):
对于文件:
并确保组中的任何人都不能写任何东西:
我之所以设置所有者、组和所有人的权限是因为即使所有人都具有读取权限,如果所有者没有,则所有者将无法读取文件。
当与目录一起使用时,执行权限“x”通常被称为“搜索”权限。您还需要从上面有关目录权限的链接中搜索直到根目录的所有目录的权限:
因此,在我的示例中,您还需要对 /var、/var/www、/var/www/root 等具有搜索 (+x) 权限。
不要使用 a+rX,很抱歉将其放在帖子中,但我需要对不知道如何在评论中使用它们的标签进行编码。以下不仅会影响目录,如果用户已经具有执行权限,它也会影响文件。
例子:
从 chmod 手册页:
关于 Apache:
我知道没有明确的正确方法,您可以使用我设置的权限并以用户 nobody 身份运行 Apache,或者您可以使用 apache 的组或用户,例如“apache”或'www 数据'。请参阅此链接。如果走无人路线,请确保无人拥有正确的用户 ID:
使用以下命令
-R:使命令递归运行,遍历其下的所有目录。
a+rX:使每个人都可以读取文件,并且每个人都可以“进入”目录。大写的 X 仅授予目录执行权限,而不授予常规文件。(编辑:除非文件已经对某些用户具有执行权限)
images:文件夹的名称,你可以给出一个完整的路径,比如
/home/user/public_html/images
chown
顺便说一句,除非您是 root(编辑:或 chown 二进制 suid root) ,否则您无法创建文件使用带有 -R 参数的 chmod 命令以递归方式执行操作。man chmod 命令将向您显示帮助。
不要忘记将文件添加到正确的网站所有者帐户/组。例如,如果您使用 root 帐户复制它,则网络服务器很可能无法访问这些文件。使用 chmod 将图像文件权限设置为 644。
使用 -R te 递归子目录。
(我将尝试解释为什么,而不仅仅是如何)
您有两个问题需要处理:所有权和权限。
有两种所有权:用户和组。良好的 Web 管理使 Web 服务器归“无人”(或同等)所有,而它显示的文件则归 Web 管理员所有。组所有权,并且是 web 管理组,如果超过一个人,或者只是 web 管理员用户的默认组。
共有三种权限:用户、组和世界。ls -l命令中的每个 RWX先给出用户的读、写和执行权限,然后是组,然后是世界。
如果您要向所有人和任何人提供图片,则设置对您的图像目录的世界读取访问权限,并且图像本身将解决您的问题,而无需担心所有权。如果图像仅限于登录成员,则应关闭 world r/w/x(在ls -l中显示为---)
至少,网络管理员用户应该对图像或 rwx 具有读/写权限。(锁定的托管网站也有例外,但我觉得这里不是这种情况)。
完成后,您的所有权权限应如下所示:
您可能想查看 chown 而不是 chmod。Chown ==更改应该使用的 OWN ership 以及为服务提供服务的用户授予权限的文件。httpd 通常在大多数现代 Linux 发行版上的www-data或httpd用户和组下运行。
您没有提及您是否定期将文件添加到此文件夹。
我发现如果经常添加一个文件夹,那么将组粘性位设置到该文件夹会不假思索地纠正问题。
例如,将组所有权设置为 webserver 组和对文件夹的组读取/粘性权限意味着新文件被设置到该组并且可读。如果有一个团队管理文件夹,那么组写入也有帮助。
将文件移动到文件夹时并不总是有效。