我有一个由非特权用户执行的部署脚本deploy
。但为了完全自动化,我必须编写一个 Web 服务器配置文件并将/etc/nginx/sites-available
其符号链接到/etc/nginx/sites-enabled
。
我不想更改此特定目录的所有权或权限,因此我一直在尝试找出一种无需密码的 sudo 访问方法。既然我已经在这里了,我想很明显我还没有成功。
有什么方法可以更新我的sudoers
文件,以便deploy
用户可以将新文件写入这些目录?
答案1
您可以尝试编写NOPASSWD
如下规则:
deploy ALL = (root) NOPASSWD: /bin/cp -t /etc/nginx/sites-available *, /bin/ln -s /etc/nginx/sites-available/* /etc/nginx/sites-enabled
然后deploy
用户直接复制到该sites-available
文件夹,在其他地方创建配置后,创建链接(不指定目标名称)。
这也许也会有漏洞。
NOPASSWD
或者您可以编写一个脚本来管理所有这些内容,并仅使用该脚本制定一条规则。