我试图在每次有人执行 sudo 时启用 sudo 讲座,但我似乎根本无法让它工作。
我发现了一个类似的问题这里,其中有人指出,如果执行时没有看到任何结果strings /usr/bin/sudo | grep -A4 -i "lecture"
,则 sudo Lecture 未启用,而我没有看到任何结果,所以现在我正在尝试启用它。
我创建了一个/etc/sudoers.d/讲座文件包含以下内容:
Defaults lecture = always
Defaults lecture_file = /etc/sudoers.lecture
并确保我的/etc/sudoers文件包括/etc/sudoers.d目录。这是我的 sudoers 文件的内容:
Defaults requiretty
Defaults !visiblepw
Defaults always_set_home
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root ALL=(ALL) ALL
%wheel ALL=(ALL) NOPASSWD:ALL
#includedir /etc/sudoers.d
我以为#
前面的includedir
正在注释掉它,但是当我“取消注释”它时,每当我执行 sudo 时都会出错。所以在查看手册后,我发现了这一行:
从 /etc/sudoers.d 读取插入文件(这里的 # 不表示注释)
所以显然这#
不是一条评论……很奇怪。
所以现在/etc/sudoers.d/讲座文件参考/etc/sudoers.lecture,我创建了它,用一个简单的“Hello World”作为它的唯一内容。
然而,当我sudo时,我仍然没有看到任何讲座,并且仍然没有看到任何演讲字符串strings /usr/bin/sudo
...我一定做错了什么,我只是找不到它。
更新
托马斯·N建议我使用sudo -k
清除任何正在回收的缓存身份验证凭据:
[Fri May 06 12:25:33]{1} root@web-stg-a01:~(✓)# cat /etc/sudoers
Defaults requiretty
Defaults !visiblepw
Defaults always_set_home
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root ALL=(ALL) ALL
%wheel ALL=(ALL) NOPASSWD:ALL
#includedir /etc/sudoers.d
[Fri May 06 12:25:37]{2} root@web-stg-a01:~(✓)# cat /etc/sudoers.d/lecture
Defaults lecture = always
Defaults lecture_file = /etc/sudoers.lecture
[Fri May 06 12:25:42]{3} root@web-stg-a01:~(✓)# cat /etc/sudoers.lecture
TEST...
[Fri May 06 12:25:47]{4} root@web-stg-a01:~(✓)# exit
logout
[Fri May 06 12:25:51]{15} cymedica@web-stg-a01:~(✓)$ sudo -k su -
Last login: Fri May 6 12:25:33 MST 2016 on pts/1
[Fri May 06 12:25:56]{1} root@web-stg-a01:~(✓)#
但事实并非如此。
答案1
这可能是在调用中回收缓存的身份验证凭据的结果sudo
。尝试使用
sudo -k <some_allowed_command>
看看这是否能让你得到你期望的行为。