Linux 下的 nobody(65534) 账户的历史,作用及如何使用好它

在使用 linx-server 的时候,发现作者在 Dockerfile 中将存储文件的目录授予了 65534 这个用户权限,于是好奇为什么是 65534,于是有了这篇文章。

首先找到的是 Wikipedia 上关于 Linux 中用户 nobody 的 UID,历史上,用户 nobody 有多好几个不同的 UID,最早的时候一些操作系统使用 -2,还有一些操作系统,比如 OpenBSD 使用 2^(15) – 1 = 32767 ,为了兼容 16-bit 和 32-bit UID,现在许多 Linux 发行版将 nobody 的 ID 设置为 2^16-2 = 65534.

Ubuntu wiki 说 nobody 通常是 NFS 服务器中当不信任用户时使用的。

nobody 用户的作用

nobody 账户通常会用来运行一些不需要任何权限的程序。 nobody 账户是让一些守护程序以最小权限运行的。1 通常会用在一些容易受到攻击的服务上,比如 httpd 等,即使这些服务被 hack,这些服务也只会对系统造成最低的伤害。

如何访问 nobody

执行 sudo grep nobody /etc/shadow 可以知道 nobody 账户是没有密码的,无法使用 su 输入密码登录。最简单的方法是使用 sudo su nobody

什么时候使用 nobody

当程序不需要任何权限的时候,比如在 linx-server 的 data 目录中保存的是用户上传的临时文件,这个文件不需要任何权限。

另外一个现实的例子就是 memcached 一个 k-v 的基于内存的存储,直接可以通过 nobody 运行,因为不需要任何写磁盘的操作。

reference

https://askubuntu.com/a/329716/407870

https://groups.google.com/g/linux.debian.user/c/oNtzOORNQlk

本文转载自: https://einverne.github.io/post/2022/10/unix-nobody-65534.html

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享