报错“X is not in the sudoers file. 会报这个事件。” 哲学/逻辑上的意思?

kas*_*vnd 31 sudo user-interface

除了问题“用户名不在 sudoers 文件中。将报告此事件”解释了错误的程序方面并提出了一些解决方法,我想知道:这个错误是什么意思?

X is not in the sudoers file.  This incident will be reported.
Run Code Online (Sandbox Code Playgroud)

错误的前一部分清楚地解释了错误。但是第二部分说“会报这个错误”?!但为什么?为什么会报这个错误,在哪里?给谁?我既是用户又是管理员,没有收到任何报告:)!

Kus*_*nda 38

系统管理员可能想知道非特权用户何时尝试使用sudo. 如果发生这种情况,这可能是一个迹象

  1. 一个好奇的合法用户只是尝试一下,或者
  2. 试图做“坏事”的黑客。

由于sudo本身无法区分这些,因此尝试使用失败sudo会引起管理员的注意。

根据系统上sudo的配置方式,任何使用尝试(成功与否)都sudo将被记录下来。出于审计目的(以便能够跟踪谁在何时做了什么),成功的尝试被记录下来,并且出于安全考虑而失败的尝试被记录下来。

在我拥有的相当普通的 Ubuntu 设置中,这是登录/var/log/auth.log.

如果用户三次输入错误的密码,或者密码不在sudoers文件中,则会向 root 发送一封电子邮件(取决于 的配置sudo,请参见下文)。这就是“将报告此事件”的含义。

电子邮件将有一个突出的主题:

Subject: *** SECURITY information for thehostname ***
Run Code Online (Sandbox Code Playgroud)

消息的正文包含日志文件中的相关行,例如

thehostname : Jun 22 07:07:44 : nobody : user NOT in sudoers ; TTY=console ; PWD=/some/path ; USER=root ; COMMAND=/bin/ls
Run Code Online (Sandbox Code Playgroud)

(这里,用户nobody试图运行ls通过sudo以root身份,但由于它们中没有失败的sudoers文件)。

如果(本地)邮件尚未在系统上设置,则不会发送电子邮件。

所有这些东西也是可配置的,并且默认配置中的本地变体可能因 Unix 变体而异。

看看手册中的mail_no_user设置(和相关mail_*设置)sudoers(我的重点在下面):

mail_no_user

如果设置,如果调用用户不在文件中,邮件将发送给 mailto 用户sudoers默认情况下,此标志处于打开状态


Tho*_*man 16

在 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
Run Code Online (Sandbox Code Playgroud)

此日志文件通常只能由adm组中的用户访问,即有权访问系统监控任务的用户

$ ls -la /var/log/auth.log
-rw-r----- 1 syslog adm 76189 Jun 21 16:30 /var/log/auth.log
Run Code Online (Sandbox Code Playgroud)

来自Debian 维基

组 adm 用于系统监控任务。该组的成员可以读取 /var/log 中的许多日志文件,并且可以使用 xconsole。历史上,/var/log 是 /usr/adm(以及后来的 /var/adm),因此是组的名称。

adm组中的用户通常是管理员,此组权限旨在允许他们无需读取日志文件su

默认情况下sudo使用 Syslogauth工具进行日志记录sudo的记录行为可以使用被修饰logfilesyslog在选项/etc/sudoers/etc/sudoers.d

  • logfile选项设置sudo日志文件的路径。
  • syslog选项syslog(3)在用于日志记录时设置 Syslog 工具。

通过存在以下配置节,Syslogauth工具被重定向到/var/log/auth.login etc/syslog.conf

auth,authpriv.*         /var/log/auth.log
Run Code Online (Sandbox Code Playgroud)


ilk*_*chu 8

从技术上讲,它没有多大意义。许多(如果不是全部)其他软件会记录登录、失败或其他情况。例如sshdsu

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
Run Code Online (Sandbox Code Playgroud)

此外,许多系统具有某种自动化功能来检测过多的身份验证错误,以便能够处理可能的蛮力尝试,或者在问题出现后仅使用这些信息来重建事件。

sudo在这里没有做任何特别的事情。所有消息都意味着,sudo在与碰巧运行他们无法使用的命令的用户进行交流时,作者似乎采取了一种有点激进的哲学。


Tim*_*Tea 6

这只是意味着有人试图使用该sudo命令(以访问管理员权限),但他没有使用它的授权(因为它们未在 sudoers 文件中列出)。这可能是一次黑客攻击或某种其他类型的安全风险,因此该消息表示sudo将向系统管理员报告尝试使用 的行为,以便他们进行调查。

  • @Kasramvd 你可能做了,在某个文件的某个地方。我不确定 `sudo` 将报告发送到哪里。在您的情况下,只有一个用户,这可能不是很重要。 (4认同)
  • @Kasramvd 您是否检查过发送给 root 用户的电子邮件?另外,您是管理员,但您的帐户没有 sudo 吗?您如何处理权限提升? (2认同)
  • @Kasramvd 您认为您是管理员。操作系统清楚地告诉您,您无权担任管理员 - 您充其量是硬件的所有者,但这并不一定使您成为管理员 (2认同)