我正在使用 python 脚本来运行 docker,但是 docker 需要 sudo 命令才能运行,而将 sudo 密码存储在文件中或赋予整个 python 脚本 sudo 权限是不好的做法,我见过一种方法,可以让系统运行某些命令而无需输入密码,我尝试过但我无法理解,主要是我输入错了(我想)我甚至损坏了我的 sudoers 文件一次并修复了它。
那么有人可以为我解释一下这一行以及为什么它不起作用吗?
username ALL = (root) NOPASSWD: /usr/bin/docker
答案1
为了防止损坏/etc/sudoers
文件,请始终使用该visudo
命令。如果您不喜欢默认编辑器,请将EDITOR
环境变量设置为所需的编辑器。
把你的用户规范行作为文件中的最后一行sudoers
。
更新:
答案2
运行命令:
sudo visudo
现在进入 %sudo 的入口
%sudo ALL=(ALL:ALL) ALL
并将其替换为:
%sudo ALL=(ALL) NOPASSWD:/usr/bin/docker
这将影响所有 sudo 用户。如果您只想为某个特定用户执行该选项“必须具有 sudo 权限”:
user ALL=(ALL) NOPASSWD:/usr/bin/docker
现在保存并退出。
为了确保一切正确,请运行以下命令:
sudo docker
它应该在不提示用户密码的情况下运行。
暗示:确保您的用户具有 sudo 权限,并确保命令的路径正确。您可以使用以下方法检查which docker