我已经尝试了其他可用问题的大多数解决方案,所以请不要参考它们。他们都没有涵盖我的情况。
我在 Ubuntu-16.04 上,我正在尝试以下命令在没有密码提示的情况下运行:
/usr/local/bin/nanobox run python manage.py runserver 0.0.0.0:8080
我尝试了不同的变体,我能够找到 - 转义特殊字符,使用通配符,使用命令别名等:
username ALL=(ALL) NOPASSWD: /usr/local/bin/nanobox run python manage.py runserver 0.0.0.0:8080
username ALL=(username) NOPASSWD: /usr/local/bin/nanobox run python manage.py runserver 0.0.0.0:8080
username ALL=NOPASSWD: /usr/local/bin/nanobox run python manage.py runserver 0.0.0.0:8080
username ALL=(ALL) NOPASSWD: /usr/local/bin/nanobox run python manage.py runserver 0.0.0.0:8080
username ALL=(ALL) NOPASSWD: /usr/local/bin/nanobox run *
使用命令别名:
Cmnd_Alias NANOBOX_RUN=/usr/local/bin/nanobox run python manage.py runserver 0.0.0.0:8080
username ALL=(ALL) NOPASSWD: NANOBOX_RUN
username ALL=NOPASSWD: NANOBOX_RUN
username ALL=(username) NOPASSWD: NANOBOX_RUN
这些都不起作用。我要么收到语法错误,要么收到密码提示。请帮我。
显然,我不想使用
username ALL=(ALL) NOPASSWD: ALL
(即使这是很久以后...,也许它对某人有帮助(
在昨天和今天花了几个小时寻找为什么我的 sudoers 似乎没有理由不允许我在没有密码的情况下运行命令之后,解决方案非常简单:
检查您的别名!
我将 shell 配置为使用如下所示的别名
alias sudo='sudo env "PATH=/usr/local/sbin:/usr/local/bin" '
在没有配置的情况下以普通 bash 运行命令时,它运行良好。