为什么 syslog 是用户?

Ali*_*ice 17 users log

当我检查时/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
Run Code Online (Sandbox Code Playgroud)

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

me@me~$ users
me
Run Code Online (Sandbox Code Playgroud)

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

Rin*_*ind 31

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

不,您拥有用户比您自己的用户多得多。有“root”、“daemon”、“bin”、“games”、“nobody”和“list”。

more /etc/passwd对系统上的用户列表执行 a 。你会看到很多带有“/usr/sbin/nologin”的行。这意味着那些不能像您自己的用户那样作为具有登录名的普通用户使用。第三列是用户 ID。所有低于 1000 的用户 ID 都是伪用户。默认情况下,您的第一个 sudo 用户(安装系统的用户)为 1000。

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

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

  • 我知道但 Ubuntu 总是从 1000 开始。例如 Redhat 从 500 开始。 (3认同)
  • @PaddyLandau /bin/false 将退出登录而不通知。nologin 应显示消息“此帐户当前不可用”。(/etc/nologin.txt 保存此通知) (2认同)

Han*_*kob 10

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

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

在任何类 Unix 操作系统(包括所有 GNU/Linux 发行版,例如 Ubuntu)上,您可以最轻松地分配特权(主要是读取和/或写入某些文件或类文件的权利,例如设备节点)基于用户和组。还有其他可能性,但它们通常设置起来更加乏味且容易出错,或者仅在特定上下文中工作。

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

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


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


Ato*_*X84 7

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

阅读此处了解系统日志的简要历史。

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

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

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