为什么在执行 Web 脚本时要为某个组分配写入和执行权限?

为什么在执行 Web 脚本时要为某个组分配写入和执行权限?

如果我有一个要由用户执行的脚本nobody,为什么需要分配组读取和执行权限。例如在文章中http://www.zzee.com/solutions/unix-permissions.shtml,它指出应将权限 755 分配给 Web 服务器上的脚本。我理解用户nobody被视为others脚本的所有者,我希望获得完全权限。我遗漏了什么吗?

答案1

具有 Linux 权限,others意味着“其他所有人”。假设您有一个具有如下权限的文件:

-rwxr-x--x 1 peanut users 256 Jan 1 myscript

忽略第一个 -,我们有rwx第一个,即user权限。user是拥有该文件的帐户,位于第三列:peanut。此用户有权读取、写入和执行该文件。

接下来,我们来看看r-x权限group,第四列中是相关的组:users。该组的任何人都可以读取和执行此文件。您可以通过以下方式查看组成员身份:

$ grep users /etc/group
users:x:100:tom,dick,harry

这将显示组 ID100和任何不是该组主要成员的人。可以通过在 passwd 文件中搜索成员来找到主要成员 -100第四列中的任何人都是主要成员:

 peanut:x:1000:100:peanut,,,:/home/peanut:/bin/bash

最后的权限是--x权限others,或“其他所有人” - 即不是用户或组成员的所有人。这将包括用户(nobody如果存在)以及任何其他用户。因此,其他所有人都被允许执行此文件。

通常,Linux 上的 Web 服务器在其自己的帐户下运行,有时nobody有时www-data有时httpd有时apache。无论运行 Web 服务器守护程序的用户是谁,如果您希望它执行脚本,则需要执行脚本的权限。您很少会将 Web 服务器用户设为脚本的所有者或拥有脚本的组的成员,因此这只留下others授予其访问权限的权限。

对于运行多个网站的站点,另一种方法是为每个站点创建一个用户,然后使用 suexec 在虚拟主机定义中指定应使用哪个用户来执行脚本。这样,您无需向 Web 服务器授予对脚本的任何明确或隐含权限。

相关内容