如果我有一个要由用户执行的脚本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 服务器授予对脚本的任何明确或隐含权限。