旁边的问题“用户名不在 sudoers 文件中。此事件将被报告”解释了错误的程序方面并建议了一些解决方法,我想知道:这个错误是什么意思?
X is not in the sudoers file. This incident will be reported.
错误的前一部分清楚地解释了该错误。但第二部分却说“会报这个错误”?!但为什么?为什么会报错,在哪里报错?给谁?我既是用户又是管理员,但没有收到任何报告:)!
答案1
系统管理员可能想知道非特权用户何时尝试使用 执行命令但失败sudo
。如果发生这种情况,这可能是一个迹象
- 好奇的合法用户只是尝试一下,或者
- 试图做“坏事”的黑客。
由于sudo
其本身无法区分这些,因此失败的使用尝试sudo
会引起管理员的注意。
根据sudo
系统上的配置方式,任何使用尝试(成功或失败)都sudo
将被记录。成功的尝试会被记录下来用于审计目的(以便能够跟踪谁在何时做了什么),失败的尝试也会被记录下来以确保安全。
在我拥有的相当普通的 Ubuntu 设置中,这是登录的/var/log/auth.log
。
如果用户三次提供错误的密码,或者密码不在文件中sudoers
,则会向 root 发送一封电子邮件(取决于 的配置sudo
,请参见下文)。这就是“此事将被报告”的意思。
该电子邮件将有一个突出的主题:
Subject: *** SECURITY information for thehostname ***
消息正文包含日志文件中的相关行,例如
thehostname : Jun 22 07:07:44 : nobody : user NOT in sudoers ; TTY=console ; PWD=/some/path ; USER=root ; COMMAND=/bin/ls
(这里,用户nobody
尝试以 root 身份运行ls
,sudo
但失败,因为它们不在sudoers
文件中)。
如果系统上尚未设置(本地)邮件,则不会发送电子邮件。
所有这些东西也是可配置的,并且默认配置的本地变化可能因 Unix 变体而异。
看看手册中的mail_no_user
设置(以及相关mail_*
设置)sudoers
(下面是我的重点):
mail_no_user
如果设置,将发送邮件到 mailto 用户如果调用用户不在
sudoers
文件中。 该标志默认打开。
答案2
在 Debian 及其衍生版本中,sudo
记录的事件报告/var/log/auth.log
包含系统授权信息,包括用户登录和使用的身份验证机制:
$ sudo su
[sudo] password for regularjohn:
regularjohn is not in the sudoers file. This incident will be reported.
[as root]
$ tail -n 1 /var/log/auth.log
Jun 21 16:30:26 marvin sudo: regularjohn : user NOT in sudoers ; TTY=pts/19 ; PWD=/home/regularjohn ; USER=root ; COMMAND=/bin/su
该日志文件通常只能由adm
组中的用户访问,即有权访问的用户系统监控任务:
$ ls -la /var/log/auth.log
-rw-r----- 1 syslog adm 76189 Jun 21 16:30 /var/log/auth.log
来自Debian 维基:
组adm用于系统监控任务。该组的成员可以读取 /var/log 中的许多日志文件,并且可以使用 xconsole。从历史上看,/var/log 是 /usr/adm(后来是 /var/adm),因此是该组的名称。
组内的用户adm
通常是管理员,并且此组权限旨在允许他们无需su
.即可读取日志文件。
默认情况下sudo
使用 Syslogauth
工具进行日志记录。sudo
的日志记录行为可以使用or中的logfile
或syslog
选项进行修改:/etc/sudoers
/etc/sudoers.d
- 该
logfile
选项设置日志文件的路径sudo
。 - 该
syslog
选项在以下情况下设置 Syslog 工具:syslog(3)
正在用于日志记录。
通过存在以下配置节,系统日志auth
工具将被重定向到:/var/log/auth.log
etc/syslog.conf
auth,authpriv.* /var/log/auth.log
答案3
从技术上来说,这没有什么太大的意义。许多(如果不是全部)其他软件都会记录登录、失败或其他情况。例如sshd
和su
:
Jun 21 17:52:22 somehost sshd[25807]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=::1 user=root
Jun 21 17:52:22 somehost sshd[25807]: Failed password for root from ::1 port 37268 ssh2
Jun 21 17:52:23 somehost sshd[25807]: Connection closed by ::1 port 37268 [preauth]
Jun 21 17:52:28 somehost su[25809]: pam_unix(su:auth): authentication failure; logname= uid=1000 euid=0 tty=/dev/pts/15 ruser=someuser rhost= user=root
Jun 21 17:52:28 somehost su[25809]: pam_authenticate: Authentication failure
Jun 21 17:52:28 somehost su[25809]: FAILED su for root by someuser
此外,许多系统具有某种自动化功能,用于检测过多的身份验证错误,以便能够处理可能的暴力尝试,或者仅在问题出现后使用该信息来重建事件。
sudo
在这里没有做任何特别特别的事情。所有消息的含义是,作者sudo
在与碰巧运行他们无法使用的命令的用户进行交流时似乎采取了某种激进的哲学。
答案4
它仅意味着有人尝试使用该sudo
命令(访问管理员权限),但无权使用该命令(因为它们未在 sudoers 文件中列出)。这可能是黑客尝试或某种其他类型的安全风险,因此该消息表示尝试使用sudo
将报告给系统管理员,以便他们进行调查。