【发布时间】:2014-04-14 03:33:43
【问题描述】:
我在一台 Debian 机器和另一台运行应用程序的 Debian 机器上有一个 Web 服务器。我想让网络用户调用一个 bash 脚本,该脚本返回一些信息供 php 处理。
我已经生成了 ssh 密钥并将我的网络用户 (www-data) 与目标机器上的用户 (usr_scripts) 配对,并且我有以下命令在目标机器上运行 bash 脚本:
ssh -o UserKnownHostsFile=/path/to/known_hosts -i /path/to/rsa/key usr_scripts@targetMachine scriptToReadFiles.sh
scriptToReadFiles.sh 是一个普通的 bash 脚本,它使用 cat 从不同的文件 (cat /path/to/mainFolder/Folder1/File1) 输出一些信息,我的 php 中有一个函数可以获取输出并生成报告。
我现在的问题是 usr_scripts 没有足够的权限来读取我需要的文件。所有文件都位于不同的文件夹中,并且它们具有不同的所有者(因为应用程序使用多个用户执行不同的任务),如下所示:
mainFolder
|- Folder 1 (owner: user1)
| |- File 1 (owner: user1)
| |- File 2 (owner: user1)
|
|- Folder 2 (owner: user2)
|- File 1 (owner: user2)
|- File 2 (owner: user2)
|- File 3 (owner: user2)
用户 user1、user2 等是从应用程序动态生成的(我无权访问其源代码),它们是根据需要生成的,它们不属于某个组,并且不能访问其他组指定主文件夹之外的文件。
我应该如何设置我的 use_scripts 用户的权限,以便它可以读取这些文件?
【问题讨论】:
-
您的文件系统是否启用了 ACL?如果是这样,您可以添加 ACL 条目以明确授予您的 Web 服务器进程用户访问权限。
-
@ChrisJester-Young ACL 未启用(尽管根据
/boot/config-2.6.32-5-amd64它是兼容的,而且我不太喜欢弄乱文件系统。如果这是我最后的手段,我会这样做,但是我正在寻找一种侵入性较小的方法。 -
您对 mainFolder 文件的所有者/组/权限有任何控制权吗?
-
@glennjackman 我有这台机器的 root 访问权限。我的第一个想法是对
chmod -RmainFolder 使用 cron 作业,但每秒执行一次似乎有点过头了,在chmod命令之前我将无法访问较新的文件和文件夹。 -
@glennjackman 我还不能编辑我的问题,但文件夹权限是
drwxrwx---,文件权限是-rw-r--r--或-rw-rw----。通过将 World Execute 添加到文件夹并将 World Read 添加到文件(还没有),一切正常,所以我想一种方法是更改在 mainFolder 中创建的文件夹和文件的默认权限,但我仍在寻找更好的解决方案。
标签: linux bash shell permissions