为什么syslog是用户?


15

当我检查时/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可以是用户?


6
我向您保证,您的系统上有多个用户。我知道您的意思是“与帐户和主目录相关联的人类用户”,但是对于所有系统,“用户”的概念比这更广泛。

/etc/passwd某个时候看看。我计算了36个角色用户(不包括root)。另外,尝试-您man users正在假设(错误地)该命令执行的操作。
克莱里斯

Answers:


26

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

不,您拥有用户远远超过您自己的用户。有“ root”,“ daemon”,“ bin”,“ games”,“ nobody”和“ list”。

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

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

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


这个数字并不总是1000。我使用的系统历史悠久,真实用户的ID从20开始
。– kasperd

1
我知道,但是Ubuntu总是从1000开始。例如Redhat从500开始
。– Rinzwind

是的,但用户不一定在本地创建。就我而言,它们是通过NIS接收的,这些天可能是LDAP。
卡巴斯德,

从20开始的真实用户会严重破坏基于Debian的发行版。基于Debian的系统上的UID 0-99由Debian项目静态分配给特定用途。
彼得·格林

1
@PaddyLandau / bin / false将在不通知的情况下退出登录。nologin应该显示一条消息“此帐户当前不可用”。(/etc/nologin.txt保留此通知)
Rinzwind

8

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

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

在任何类似unix的操作系统(包括所有GNU / Linux发行版,如Ubuntu)上,您可以最轻松地分配特权(即对某些文件或类似文件的东西进行读/写的权利。设备节点)。还有其他可能性,但是它们通常更乏味且易于设置,或者仅在特定情况下才能使用。

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

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


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


7

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

在这里阅读有关syslog的简要历史记录。

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.