为什么 syslog 是用户?

为什么 syslog 是用户?

当我检查时/var/log,我发现一些非常奇怪的事情

me@me:~$ ls -lt /var/log |head -6 '
total 160368
-rw-r-----  1 syslog            adm              19919118 Jan 15 16:55 auth.log
-rw-r-----  1 syslog            adm             139702302 Jan 15 16:55 syslog
-rw-r-----  1 syslog            adm                191122 Jan 15 16:55 mail.log
-rw-r-----  1 syslog            adm               2210432 Jan 15 16:32 kern.log
-rw-r--r--  1 root              root              1741863 Jan 15 14:22 dpkg.log

请注意,前四个日志文件的所有者是syslog。这很奇怪,因为我的系统上只有一个用户:

me@me~$ users
me

为什么文件名可以syslog是用户?

答案1

它与访问系统的安全性和权限有关。

不,你有多很多用户不仅仅是您自己的用户。有“root”、“daemon”、“bin”、“games”、“nobody”和“list”。

执行命令more /etc/passwd查看系统上的用户列表。您将看到很多行包含“/usr/sbin/nologin”。这意味着这些行不能像您自己的用户一样作为普通用户登录。第三列是用户 ID。所有低于 1000 的用户 ID 都是伪用户。您的第一个 sudo 用户(安装系统的用户)默认有 1000 个用户。

基本上用户系统日志允许使用/var/log/设置为拥有的目录的目录。为了不必损害目录的权限(即降低权限以便其他用户可以使用它),创建了此用户。

对于 Apache 和 MySQL 的用户,也是一样(安装这些时,您将看到 www-data 用户和组以及 MySQL 用户和组),但它用于很多事情。有一个组“dialout”用于访问外部设备。用户被添加到此组以允许用户使用这些设备。否则,您将收到权限被拒绝的错误。它有两种工作方式:拒绝用户访问意味着将该用户从组中删除。

答案2

syslog 服务将内核和其他服务创建的日志消息写入各种日志文件、控制台和/或其他目标,它在其自己的特殊用户帐户下运行。许多其他服务也是如此。这是为了实现最小特权原则

为了最大限度地减少受损或故障服务可能造成的影响(例如,某个服务存在错误,进而被攻击者利用,或者某个服务存在错误,导致其执行随机的不良操作,或者某个服务被恶意开发人员故意设计来做坏事),您希望每个服务只能访问其运行所需的内容,而不能访问其他内容。

在任何类 Unix 操作系统上(包括所有 GNU/Linux 发行版,如 Ubuntu),您都可以根据用户和组轻松分配权限(主要是读取和/或写入某些文件或类似文件的内容(如设备节点)的权利)。还有其他可能性,但它们通常更繁琐且设置起来容易出错,或者仅在特定情况下有效。

因此,syslog 服务在 syslog 用户帐户下运行。例如,如果现在攻击者可以让 syslog 服务执行他们指示的操作,而不是它应该执行的操作,则 syslog 服务仍然受到限制(由基于用户帐户的内核强制执行,而不是由 syslog 软件本身强制执行,这将毫无用处,因为它已被破解)只能写入日志文件(syslog 用户具有写访问权限的唯一文件)。因此,攻击者无法使用被破解的 syslog 服务来更改托管在同一台计算机上的网站或数据库的内容,因为相关文件设置为只能由某些特定的其他人(人类或系统) 用户帐户,而不是 syslog 用户帐户。

为了造成比删除/修改日志文件和读取“公共”文件(每个人都有“读取”权限)更大的危害,攻击者首先需要另外利用第二个漏洞,这个漏洞要么存在于内核中,要么存在于安装为以与调用它的用户不同的权限运行的某些软件中(设置用户标识),从而获得额外的特权(特权升级)。


您使用的命令users,根据它的手册页,仅显示当前登录. 由于 syslog 用户是系统用户,它将永远不会登录,因此永远不会显示在此列表中。您可以查看文件/etc/passwd或使用任何其他描述的方法这里获取列表全部系统上的(人类和系统)用户。

答案3

因为 syslog 不是一个文件;它是系统用来将系统守护进程和应用程序消息(调试、错误、警告和信息)存储到文件中的守护进程。

这里了解 syslog 的简要历史。

在其他发行版中,例如基于 Red Hat Linux 的发行版,系统的 syslog 输出存储在名为 的文件中/var/log/messages。这取决于配置。

正如 Rinzwind 所说,出于安全原因,操作系统中的不同组件以特定用户身份运行,每个用户都有自己的权限。例如,syslog 至少对该/var/log文件夹具有写权限。

系统有许多服务,通常每个服务或一小组服务都有用户。例如。apache get www-data|httpd|apache通常这些守护进程用户不会获得 Bash 访问权限,以避免安全漏洞。

相关内容