【问题标题】:How can I set up a user's permissions so it can execute a bash script to read other users' files?如何设置用户的权限,以便它可以执行 bash 脚本来读取其他用户的文件?
【发布时间】: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 -R mainFolder 使用 cron 作业,但每秒执行一次似乎有点过头了,在chmod 命令之前我将无法访问较新的文件和文件夹。
  • @glennjackman 我还不能编辑我的问题,但文件夹权限是drwxrwx---,文件权限是-rw-r--r---rw-rw----。通过将 World Execute 添加到文件夹并将 World Read 添加到文件(还没有),一切正常,所以我想一种方法是更改​​在 mainFolder 中创建的文件夹和文件的默认权限,但我仍在寻找更好的解决方案。

标签: linux bash shell permissions


【解决方案1】:

您可以使用 chmod 更改当前文件的模式,使用 umask 更改未来文件。 这是 umask 一些信息的链接 http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html

【讨论】:

    猜你喜欢
    • 2011-09-10
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多