注意,如果你在笔记本电脑上使用 nopasswd,那么在离开时必须始终锁定计算机,否则,当你起身往咖啡里加奶油时,一个随意的攻击者可以对你造成很大的危害

注意,如果你在笔记本电脑上使用 nopasswd,那么在离开时必须始终锁定计算机,否则,当你起身往咖啡里加奶油时,一个随意的攻击者可以对你造成很大的危害

我在 /etc/sudoers 中有一个 NOPASSWD 行(已使用 编辑visudo

gatoatigrado    ALL=(ALL) NOPASSWD: /bin/set-slow-cpufreq

然而,输出是,

gatoatigrado@coral:~> sudo -n /bin/set-slow-cpufreq
sudo: sorry, a password is required to run sudo

这种命令在 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

答案1

你应该把那条线该行符合该组的规则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).

答案2

刚刚也遇到过这个问题。

我的情况是,我正在设置一个无头运行的远程系统。我已启用全盘加密(否则具有物理访问权限的攻击者可以做任何他或她想做的事情)我只想使用公钥进行身份验证(我将取消设置密码,以便“拥有某物,知道某物”方案将成为受密码保护的密钥对——当然,root 登录已完全禁用)

Ubuntu 安装程序提示输入非 root 管理员用户,该用户将被添加到组中。然后我使用sudo以下命令手动将自己添加到文件中:sudoerssudo visudo

my_username ALL=(ALL:ALL) NOPASSWD:ALL

注意,如果你在笔记本电脑上使用 nopasswd,那么在离开时必须始终锁定计算机,否则,当你起身往咖啡里加奶油时,一个随意的攻击者可以对你造成很大的危害

我仍然需要密码验证。

enzotib 的回答是事情的关键。输入我的用户名后,sudoers 中出现了 sudo 组。

我没有将条目移动到 sudo 行下方,而是删除了之前添加的行,然后将其添加NOPASSWD到条目中%sudo

这似乎有效。同样,只有在真正需要时才使用 nopasswd(就我而言,这正是我所需要的,对于大多数需要密码才能进行 sudo 活动的用户来说,这是最好的选择)

额外的警告:总是用 visudo 编辑 sudoers。(sudo visudo)此外,打开另一个窗口切换到 root 用户可以让您恢复在更改 sudoers 文件时可能犯的任何错误。

答案3

理想情况下,如果您要自定义可以通过哪些命令运行,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 前缀来控制文件名排序,但请记住,如果您有任何文件没有数字前缀,它们将在编号文件之后加载,从而覆盖设置。这是因为根据您的语言设置,shell 使用的“词汇排序”首先对数字进行排序,然后在按“升序”排序时可能交错大小写。

尝试运行printf '%s\n' {{0..99},{A-Z},{a-z}} | sortprintf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort查看您当前的语言是否可以打印AaBbCc等,然后ABC确定abc要使用的最佳“最后一个”字母前缀是什么。

答案4

在远程系统上,删除加密,但让所有东西都归根所有,就像“管理员”组中的根一样 - 这不是 0!
您可以修改 #sudo -g Administrators 那些需要完全访问权限的内容 - 不是在文件中 sudo ,而是.login在配置文件中。现在任何标准脚本都可以以“root”身份访问远程,您可以保护必须保护的文件。
另一个方便的“组”是“沙盒”,它在浏览器缓存中有一个登录目录,可以自由读取它,而不能读取其他内容。第一个字符使用大写。

相关内容