这个问题是关于最佳实践的。我正在使用 Fabric 运行部署脚本。我的部署用户“deploy”需要 sudo 来重启服务。所以我使用 fabric 的 sudo 函数在我的脚本中运行这些命令。这工作正常但在脚本执行期间提示输入密码。我不想在部署期间输入密码。这里的最佳做法是什么。我能想到的唯一解决方案是更改 sudo 权限,以便我的部署用户运行的命令不需要密码。这对我来说似乎不对。
最佳答案
理想的解决方案是在您的服务器上创建一个仅用于部署的用户(例如,deploy
)。然后,在您的 fabfile 中设置 env.user=deploy
。然后在您的服务器上,您可以在 sudoers 文件中逐个命令地为用户授予必要的权限:
重要:始终使用 sudo visudo
修改 sudoers 文件
Cmnd_Alias RELOAD_SITE = /bin/bash -l -c supervisorctl*, /usr/bin/supervisorctl*
deploy ALL = NOPASSWD: RELOAD_SITE
您可以根据部署用户的需要添加任意数量的 Cmnd_Alias
指令,然后为每个命令授予 NOPASSWD
访问权限。有关详细信息,请参见 man sudoers
。
我喜欢将特定于部署的 sudoers 配置保存在 /etc/sudoers.d/deploy
中,并通过添加以下内容从 /etc/sudoers
中包含该文件:includedir/etc/suoders.d
最后。
关于python - Fabric Sudo 无密码解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13943349/