就我的情况而言,是否可以让 Web 服务器用户触发lighttpd
需要以sudo
权限运行的特定脚本?
我只希望lighttpd
用户能够以sudo
有权限的方式触发那一个脚本。
该脚本,我们称之为createFolder.sh
,根据模板在共享的上层创建一个文件夹。用户在共享的上层没有写入权限,但在新建的文件夹结构中应该有写入权限。因此,该脚本在子文件夹上设置了正确的权限,这就是使用 的需要的来源sudo
(chown
、chmod
和setfacl
)。
我希望使用 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
您应该让根脚本从常规脚本中“拉”出来,而不是让后者“推”到前者。下面是一个说明性示例:
- 创建一个 cron 作业,检查文本文件中要创建的文件夹列表
- 让 lighttpd 用户脚本将所需文件夹附加到该文本文件
您可以使用排队/消息系统更优雅地完成此操作,但这取决于您。