sudoers 文件中的语法错误

sudoers 文件中的语法错误

我想让我的普通用户运行/usr/bin/brightnessctl来打开/关闭我的笔记本电脑上的键盘背光,所以我这样做了

visudo -f /etc/sudoers.d/grove

grove是我的用户名,但这里重要的是该文件包含在/etc/sudoers

该文件已经包含这些行:

grove   ALL=(ALL) NOPASSWD: /usr/bin/light -A 5
grove   ALL=(ALL) NOPASSWD: /usr/bin/light -U 5

所以我只是模仿那些并尝试添加

grove   ALL=(ALL) NOPASSWD: /usr/bin/brightnessctl -d tpacpi::kbd_backlight s 2
grove   ALL=(ALL) NOPASSWD: /usr/bin/brightnessctl -d tpacpi::kbd_backlight s 0

但 makevisudo报告语法错误:

/etc/sudoers.d/grove:3:59: syntaksfejl
grove   ALL=(ALL) NOPASSWD: /usr/bin/brightnessctl -d tpacpi::kbd_backlight s 2
                                                          ^~
/etc/sudoers.d/grove:4:59: syntaksfejl
grove   ALL=(ALL) NOPASSWD: /usr/bin/brightnessctl -d tpacpi::kbd_backlight s 0
                                                          ^~

syntaksfejl是丹麦语syntax error,我已经LANG设置了所以一切都说丹麦语,我认为没有理由重做它来LANG=C为这么小的文本提供英语错误)

这里有什么问题吗?是冒号(并且指示符错误,这可能是由 后面的 TAB 引起的grove),如果是,我该如何允许该命令?我应该允许/usr/bin/brightnessctl并接受我可以控制更多的事情吗?

(如果重要的话,我正在使用 Debian 12)

答案1

@steeldriver 在评论中指出sudoers 手册的“别名”部分说冒号必须用 a 转义\,并且有效。

我愚蠢地没有费心去阅读手册,而是徒劳地尝试引用我的方法,因为这通常会达到相同的效果,但正如所说的那样,它\是有效的。

相关内容