什么是 nobody 用户和组?

Guu*_*uuk 53 users permissions group files

在我的服务器 (Synology DS212) 上,某些文件和文件夹具有nobody nobody用户和组。这个用户和组的特点是什么?谁能写或读这个文件?

我怎样才能改变它?对于哪个用户和组?

cha*_*aos 61

在许多 Unix 和 Linux 发行版中,nobody 用户是一个伪用户。根据Linux 标准库,nobody 用户及其组是可选的助记符用户和组。该用户旨在代表对系统具有最少权限的用户。在最好的情况下,用户及其组没有分配给任何文件或目录(作为所有者)。该用户位于他的相应组中,该组(根据 LSB)也称为“nobody”,并且不属于其他组。

在早期的 Unix 和 Linux 发行版中,守护程序(例如网络服务器)在 nobody 用户下调用。如果恶意用户获得了对此类守护程序的控制权,则他可以执行的损害仅限于守护程序可以执行的操作。但问题是,当有多个守护进程与 nobody 用户运行时,这不再有意义。这就是为什么今天这样的守护进程有自己的用户。

没有分配给nobody 用户的shell。不同的发行版以不同的方式处理:有些是指/sbin/nologin打印消息;有些是指/bin/false简单地以 1 (false) 退出;或者有些只是禁用/etc/shadow.

根据 Linux 标准库,nobody 用户是“由 NFS 使用”。事实上,NFS 守护进程是少数仍然需要nobody 用户的守护进程之一。如果已挂载 NFS 共享中的文件或目录的所有者在本地系统中不存在,则该所有者将替换为 nobody 用户及其组。

您只需使用 root 用户和chown. 但是在托管 NFS 共享的机器上,该用户可能存在,所以要小心。

我也使用 Synology 系统。他们在 nobody 用户下运行 apache 网络服务器。

  • “当有多个守护进程与 nobody 用户运行时,这不再有意义。” - 怎么来的?受感染的守护进程会影响其他守护进程吗? (3认同)

小智 7

可以登录的用户nobody可以更改这些文件,但通常系统已设置,因此这是不可能的。在我的基于 debian 的系统上,/etc/password文件中的条目是:

nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
Run Code Online (Sandbox Code Playgroud)

/usr/sbin/nologin给出:

This account is currently not available.
Run Code Online (Sandbox Code Playgroud)

您只能以 root 用户身份更改此设置,因为通常没有其他人是该组的成员nobody。但是我怀疑你是否应该这样做。通常,这些文件是有意获得此所有权的。

  • 如果您出于某种原因想要登录无人帐户,您可以覆盖 shell,如`sudo su nobody -s /bin/sh`(这会使用 /bin/sh 覆盖“默认 shell”/usr/bin/nologin) ) (2认同)