我在 /etc/sudoers 中有一个 NOPASSWD 行(用 编辑visudo
)
gatoatigrado ALL=(ALL) NOPASSWD: /bin/set-slow-cpufreq
Run Code Online (Sandbox Code Playgroud)
然而,输出是,
gatoatigrado@coral:~> sudo -n /bin/set-slow-cpufreq
sudo: sorry, a password is required to run sudo
Run Code Online (Sandbox Code Playgroud)
这种命令适用于 OpenSuSE 机器,但不适用于 Ubuntu 11.10。我究竟做错了什么?
注意:我找不到任何相关的系统日志消息,例如通过tail -f /var/log/syslog
.
这是/etc/sudoers。
Defaults env_reset
# things I've tried copying from an opensuse machine
Defaults always_set_home
Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE"
root ALL=(ALL:ALL) ALL
gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
Run Code Online (Sandbox Code Playgroud)
enz*_*tib 174
您应该将该行放在具有组规则的行之后sudo
,因为正如sudoers
手册页所述:
When multiple entries match for a user, they are applied in order.
Where there are multiple matches, the last match is used (which is not
necessarily the most specific match).
Run Code Online (Sandbox Code Playgroud)
jor*_*fus 10
也刚碰到这个。
我的情况是我正在设置一个可以无头运行的远程系统。我已启用全盘加密(否则具有物理访问权限的攻击者可以做他或她想做的任何事情)我只想使用公钥进行身份验证(我将取消设置密码,以便“拥有某些东西,知道某些东西”方案将是密码受保护的密钥对 --root 登录当然被完全禁用)
Ubuntu 安装程序会提示添加到组中的非 root 管理员用户sudo
。然后我sudoers
使用sudo visudo
以下方法手动将自己添加到文件中:
my_username ALL=(ALL:ALL) NOPASSWD:ALL
Run Code Online (Sandbox Code Playgroud)
我仍然需要密码验证。
enzotib 的回答是了解正在发生的事情的关键。在输入我的用户名后,sudo 组显示在 sudoers 中。
我没有将我的条目移到 sudo 行下方,而是删除了我之前添加的行,然后添加NOPASSWD
到条目中%sudo
这似乎有效。再次仅在您确实需要时才使用 nopasswd(在我的情况下,这正是我所需要的,对于大多数需要密码进行 sudo 活动的用户来说是最好的)
附加警告:始终使用 visudo 编辑 sudoers。(sudo visudo) 此外,将另一个窗口打开切换到 root 用户可以让您恢复在更改 sudoers 文件时可能犯的任何错误。
理想情况下,如果您正在自定义可以通过哪些命令运行,sudo
您应该在单独的文件中进行这些更改,/etc/sudoers.d/
而不是sudoers
直接编辑文件。您还应该始终使用visudo
编辑文件。
例子:
sudo visudo -f /etc/sudoers.d/slowcpu
插入您的行授予权限:
gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq
然后保存并退出,visudo
如果您有任何语法错误,它会警告您。
您可以运行sudo -l
以查看您的用户已被授予的权限,如果在输出中的NOPASSWD
任何%groupyouarein ALL=(ALL) ALL
命令之前出现任何特定于用户的命令,系统将提示您输入密码。
如果您发现自己创建了很多这样的 sudoers.d 文件,那么您可能希望创建以用户命名的文件,以便更容易可视化。请记住,文件名和规则在文件中的顺序非常重要,最后加载的将获胜,无论它比以前的条目宽松还是宽松。
您可以使用前缀 00-99 或 aa/bb/cc 来控制文件名排序,但也要记住,如果您有任何没有数字前缀的文件,它们将在编号文件之后加载,覆盖设置。这是因为根据您的语言设置,外壳程序首先使用“词法排序”对数字进行排序,然后在按“升序”排序时可能会交错大小写。
尝试运行printf '%s\n' {{0..99},{A-Z},{a-z}} | sort
并printf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort
查看您当前的语言是否打印AaBbCc
等,ABC
然后abc
确定要使用的最佳“最后”字母前缀是什么。
归档时间: |
|
查看次数: |
121220 次 |
最近记录: |