如何允许 Web 服务器用户触发需要 sudo 权限的脚本?

如何允许 Web 服务器用户触发需要 sudo 权限的脚本?

就我的情况而言,是否可以让 Web 服务器用户触发lighttpd需要以sudo权限运行的特定脚本?

我只希望lighttpd用户能够以sudo有权限的方式触发那一个脚本。

该脚本,我们称之为createFolder.sh,根据模板在共享的上层创建一个文件夹。用户在共享的上层没有写入权限,但在新建的文件夹结构中应该有写入权限。因此,该脚本在子文件夹上设置了正确的权限,这就是使用 的需要的来源sudochownchmodsetfacl)。

我希望使用 Web 界面的原因是,用户可以插入文件夹名称和设置的数据,以定义精确的文件夹结构。

我以为只需添加一个条目/etc/sudoers以允许lighttpd用户无需密码即可运行就行了createFolder.sh。看来我错了,因为我收到以下错误:

sudo:无法 mkdir /var/db/sudo/lighttpd:权限被拒绝

我们相信您已经收到了本地系统管理员的常规讲座。它通常归结为以下三件事:

1) 尊重他人隐私。2
) 打字前请三思。3
) 能力越大,责任越大。

sudo:没有 tty 存在并且没有指定 askpass 程序

如果可以将脚本设置为始终以具有正确权限的用户身份运行,那么它就可以解决问题,但我找不到如何执行此操作或是否可行。

顺便说一句,我是自学 Linux 的,尽管我对自己的能力很有信心,但我并不是专家,并且一直在寻求进步。

我正在运行 CentOS 7 盒子。

编辑createFolder.sh:我已经通过使用 inotify在修改文本文件时触发我的脚本解决了这个问题。请参阅正确答案及其评论。感谢大家为我指明正确的方向。

答案1

您应该让根脚本从常规脚本中“拉”出来,而不是让后者“推”到前者。下面是一个说明性示例:

  1. 创建一个 cron 作业,检查文本文件中要创建的文件夹列表
  2. 让 lighttpd 用户脚本将所需文件夹附加到该文本文件

您可以使用排队/消息系统更优雅地完成此操作,但这取决于您。

相关内容