假设我有一个文件夹:
/home/admin/website.com/stats
上面的文件夹 chown 是admin:admin
。我还有另一个带有/home/agent/google
chown 的文件夹agent:agent
。该 stats 文件夹有一个从 Google 文件夹读取文件的脚本。因此,我想允许该 stats 文件夹访问 Google 文件夹。
我怎样才能做到这一点?
答案1
据我所知:
当您从 stats 文件夹启动脚本时,将启动此脚本的一个进程。在大多数情况下,此进程具有启动它的用户的用户 ID 和组 ID(除非在可执行文件上设置了 suid 或 sgid 位,否则它将具有脚本文件用户/组的用户 ID 和/或组 ID)。您可以键入“id”以查看使用哪个用户和组 ID 启动脚本。
它是尝试从 /home/agent/google 访问文件的进程。要访问 /home/agent/google 中的文件,该进程必须能够 1)“执行”该目录,2)从该目录读取特定文件。
对于目录,假设进程使用除代理之外的 userId 和 groupId 运行,则需要一个目录是全世界可读和全世界可执行的(如果不是,您可以执行 chmod +0005 /home/agent/google)。
对于该文件,为了能够读取它,您需要确保以下之一:
- userId(进程)为 0(root)(您可以以超级用户身份运行脚本,但通常这是一种不好的做法)
- userId(进程)==ownerId(文件) 并且文件具有所有者的读取权限。'chmod u+r file'
- groupId(进程)==groupID(文件) 并且文件对该组具有读取权限。(您可以使用“chmod g+r 文件”进行设置
- 文件具有世界读取权限。(您可以使用 chmod o+r 文件进行设置)
这有帮助吗?
答案2
取决于哪个用户正在访问文件。文件夹不会从另一个文件夹读取文件,用户会读取。示例 - 可能是阿帕奇如果你从浏览器运行脚本,它将访问你的文件,或者行政本身。为了简单起见,你可以只给出读允许其他的在谷歌目录 -
chmod u+r /home/agent/google
如果文件在谷歌文件夹也需要执行,然后 -
chmod u+rx /home/agent/google
相应地也更改文件的权限。