正如我在https://unix.stackexchange.com/a/484626/5132这值得有自己的问答。
在 Linux 操作系统上...
% 获取密码 bin bin:x:2:2:bin:/bin:/usr/sbin/nologin %...以及在 FreeBSD 上...
% 获取密码 bin bin:*:3:7:二进制文件命令和来源:/:/usr/sbin/nologin %...以及在 OpenBSD 上...
$ getent passwd bin bin:*:3:7:二进制命令和来源:/:/sbin/nologin $...今天仍然可以找到一个
bin
帐户。但这几乎没有记录。这Linux 标准库版本 5 只是说……注意:…没有解释兼容性机制的本质。 正如 Joey Hess 在 2001 年所说:bin
包含用户 ID/组 ID 是为了与旧应用程序兼容。新应用程序不应再使用bin
用户 ID/组 ID。
bin
:帮助:我的系统上没有文件属于用户或组bin
。他们有什么好处?从历史上看,他们可能是二进制文件的所有者/bin
? FHS、Debian 政策或 base-passwd 或 base-files 的变更日志中没有提及它。
M.赫斯的问题至今 Debian doco 中的 base-passwd 软件包仍未得到解答,17年后。
那么bin
账户有什么用呢?
答案1
bin
在 Linux 的整个生命周期中,并没有适当地用于任何事情。
就像运行级别和由于 中的记录而init
产生一样,在 Linux 发明之前,该帐户在 Unix 世界中就已经过时了。这是 20 世纪 80 年代的一个想法,但随着 NFS(网络文件系统)及其用户的发明和采用而被打破。 2010 年代末,当商业 Unix 世界的人们在 90 年代积极停止使用它时,它继续存在于用户帐户数据库中,这证明了惰性。getty
/etc/inittab
bin
nobody
这个想法是bin
用户拥有各种目录,例如/bin
和/usr/bin
(实际上还有一些在https://unix.stackexchange.com/a/448799/5132例如/usr/mbin
和/usr/5bin
) 以及其中的非 set-UID/non-set-GID 文件。它还拥有 doco 文件和目录,例如手册页。
(在更极端的情况下,它甚至在某些 Unices 上拥有/
和/etc
,尽管后者是创建 SunOS 操作系统映像时公认的错误。前者只是愚蠢的。)
因此,以 user 身份运行的执行软件更新的权限bin
并不是以超级用户身份运行的对系统执行任何操作的一揽子权限。软件升级程序无法读取/写入私人用户文件、访问邮箱等;作为超级用户当然可以更新软件。
文件中的其他几个特殊帐户条目——丽贝卡·托马斯和里克·法罗 (1989)。System V 的 UNIX 管理指南。普伦蒂斯·霍尔。 ISBN 9780139428890。p。 452./etc/passwd
必须有密码。这些是管理帐户 -bin
、daemon
、sys
、uucp
、lp
和adm
。 [...]这些帐户存在的主要原因是命令、脚本、文件和设备的安全所有权。一些管理员为这些帐户安装密码并实际使用它们。 [...]无密码bin
帐户对于系统破坏者来说非常有用。
NFS于20世纪80年代初发明,彻底打破了这种想法。
正如上述引文所暗示的那样,它已经摇摇欲坠了。这是因为更新超级用户理所当然执行的基本实用程序的程序映像文件的能力/bin/ls
是获得超级用户权限的直接向量,而使用帐户时的访问划分bin
只是意外地防止了这种情况修改错误的目录而不是阻止犯罪分子获得超级用户访问权限。
NFS 的出现凸显了这一点。尽管 NFS 具有将超级用户帐户重新映射到普通非系统用户帐户的机制,但对于非 root 帐户(如bin
.因此,如果某人可以bin
访问 NFS 客户端,那么他们就可以bin
访问 NFS 服务器上的操作系统文件。事实上,它使 NFS 客户端上的超级用户(否则将被重新映射为服务器上的普通非系统用户)获得对服务器操作系统文件和目录的所有者访问权限。
这是 20 世纪 90 年代初的常识,当时公认的智慧是将超级用户chown
拥有的东西bin
改成超级用户拥有的东西,以堵塞这个漏洞,这个漏洞已经成为 Unix 安全审计工具中的标准报告项目,并受到警告。类似于 Sendmail 的安装 doco。
就 M. Hess 的问题而言,这个想法从未在 Debian 上被采用,Debian 是在 Unix 世界知道这是一个坏主意数年后才出现的,而 Unix 确实在 Linux 之前就知道这是一个坏主意本身被发明。 BSD 操作系统的历史做追溯到 20 世纪 80 年代,早已废除了实际所有权,但仍将用户帐户保留在帐户数据库中。 FreeBSD于 1998 年将bin
:bin
所有权转换为root
:所有权wheel
, 例如。
进一步阅读
- 乔纳森·德博因·波拉德 (2015)。
/etc/inittab
已成为过去。。经常给出的答案。 - 乔纳森·德博因·波拉德 (2018)。 运行级别已成为过去。。经常给出的答案。
- 乔纳森·德博因·波拉德 (2018)。不要滥用任何人运行的守护进程。。经常给出的答案。
- 托马斯·本杰明(1995-11-07)。Tiger 标记 *bin* 拥有的系统文件、禁用帐户。 comp.sys.hp.hpux。
- 鲍勃·普鲁克斯 (2002-09-15)。回复:关于 /etc/passwd 条目的问题。 linux.debian.user。
- 道格·西伯特 (1999-06-22)。回复:bin 而非 root 拥有的操作系统文件。 comp.security.unix。
- 道格·西伯特 (1998-06-01)。回复:AIX:“/”归 bin.bin 所有。 umn.local-lists.security。
- 西奥·德·拉特 (1999-06-22)。回复:bin 而非 root 拥有的操作系统文件。 comp.security.unix。
- 基因(1994-09-08)。为什么 bin 不应该拥有目录。 comp.security.unix。
- 布拉德·鲍威尔(1993-08-12)。回复:根目录“bin bin”?。 comp.security.unix。
- 马里奥·沃尔茨科 (1991-09-13)。 回复:如果 /etc 不属于 bin,会发生什么情况?。替代安全。
答案2
2018 年我使用 bin 有两种情况。 1:可执行文件 - 主要用于 Web 服务器端用于完成功能的 .exe 文件。 2:日志 - 有时我将 .log 或 .dat 文件放在 bin 文件夹中。