Rad*_*anu 111 users username switch-user
在阅读List all human users 后,我注意到我的 Ubuntu 系统中有一个名为“nobody”的用户帐户。
我还注意到我可以使用以下命令和我的密码从终端登录此帐户:
sudo su nobody
Run Code Online (Sandbox Code Playgroud)

我一点都不介意,但我想知道这个用户的目的是什么?它是在全新安装的 Ubuntu 上默认创建的还是通过安装特定软件包创建的?
Oli*_*Oli 94
它可以运行不需要任何特殊权限的东西。它通常是为易受攻击的服务(httpd 等)保留的,这样如果它们被黑客攻击,它们对系统其余部分的损害就会最小。
与以真实用户身份运行某些内容相比,如果该服务受到威胁(Web 服务器偶尔会被利用来运行任意代码),它将以该用户身份运行并有权访问该用户拥有的所有内容。在大多数情况下,这与获得 root 权限一样糟糕。
您可以在 Ubuntu Wiki 上阅读更多有关 nobody 用户的信息:
回答您的后续问题:
su nobody?sudo grep nobody /etc/shadow会告诉你没有人没有密码,你不能su没有帐户密码。最干净的方法是sudo su nobody代替。那会让你处于一个非常荒凉的sh外壳中。
当程序的操作不需要权限时。当永远不会有任何磁盘活动时,这一点最为显着。
一个真实世界的例子是memcached(一个键值内存缓存/数据库/东西),坐在我的电脑上,我的服务器在没有人帐户下运行。为什么?因为它不需要任何权限,并且给它一个对文件有写访问权限的帐户只会带来不必要的风险。
小智 36
上面的回答是相当错误的,因为他们假设这nobody是一个“通用”匿名/访客风格的用户 ID。
在 UNIX/Linux 访问控制模型中,匿名/访客风格的用户 ID 不存在,这些是不好的建议:
nobody,尤其是服务器,以限制控制它们的恶意用户可能造成的损害。 ”因为如下:“但是,如果超过一个守护进程是这样运行的,因为获得对一个守护进程的控制将提供对所有守护进程的控制”。memcached(一个键值内存缓存/数据库/东西),坐在我的电脑上,我的服务器在该nobody帐户下运行。为什么?因为它不需要任何权限并授予它一个对文件有写访问权限的帐户只会带来不必要的风险。 ”nobody用户 ID 为 65534的用户名是为特定目的而创建和保留的,并且应该仅用于该目的:作为 NFS 树导出中“未映射”用户和用户 ID 的占位符。
也就是说,除非为 NFS 树导出设置了用户/ID 映射,否则导出中的所有文件都将显示为nobody. 这样做的目的是防止导入系统上的所有用户访问这些文件(除非他们具有“其他”权限),因为他们(除了root)都不能成为/成为nobody.
因此,将其nobody用于任何其他目的是一个非常糟糕的主意,因为它的目的是成为任何人都不能访问的文件的用户名/用户 ID。
维基条目也非常错误。
UNIX/Linux 的做法是为每个需要单独访问控制域的“应用程序”或应用程序区域创建一个新帐户,并且永远不要nobody在 NFS 之外重用。
Pau*_*kys 32
在许多 Unix 变体中,“nobody”是用户帐户的常规名称,该帐户不拥有文件,不属于特权组,并且除了每个其他用户都拥有的能力之外没有任何其他能力。
通常以无人身份运行守护程序,尤其是服务器,以限制控制它们的恶意用户可能造成的损害。但是,如果像这样运行多个守护程序,则此技术的有用性会降低,因为获得对一个守护程序的控制将提供对所有守护程序的控制。原因是没有人拥有的进程有能力相互发送信号,甚至相互调试,允许它们读取甚至修改彼此的内存。
信息取自http://en.wikipedia.org/wiki/Nobody_(username)。
Ala*_*Ali 17
该nobody用户默认情况下,在全新安装(在Ubuntu桌面13.04检查)创建的。
在许多 *nix 变体中,
nobody是一个用户帐户的常规名称,它不拥有文件,不属于特权组,并且除了每个其他用户都拥有的能力之外没有其他能力(nobody用户和组在/etc/sudoers文件中没有任何条目) .通常将守护程序作为运行
nobody,尤其是服务器,以限制控制它们的恶意用户可能造成的损害。但是,如果像这样运行多个守护程序,则此技术的有用性会降低,因为获得对一个守护程序的控制将提供对所有守护程序的控制。原因是nobody拥有的进程有能力相互发送信号,甚至相互调试,允许它们读取甚至修改彼此的内存。来源: 维基百科 - 没有人(用户名)
-
nobody拥有的进程能够相互发送信号,甚至在 Linux 中相互跟踪,这意味着一个无人拥有的进程可以读取和写入另一个无人拥有的进程的内存。这是文件中
nobody用户的示例条目/etc/passwd:Run Code Online (Sandbox Code Playgroud)alaa@aa-lu:~$ grep nobody /etc/passwd nobody:x:65534:65534:nobody:/nonexistent:/bin/sh您可能已经注意到,
nobody用户具有/bin/sh登录 shell 和/nonexistent主目录。顾名思义,/nonexistent默认情况下该 目录不存在。如果您是偏执狂,您可以设置
nobody的默认外壳/usr/sbin/nologin,因此拒绝nobody用户的 ssh 登录。