Answers:
简而言之:不。扎根wheel
和operator
分组不变。
但是您还质疑另外两件事:
根组ID(默认情况下)设置为0,这与您可以获取的空值最接近。
$ head -4 /etc/passwd
# $FreeBSD: releng/9.2/etc/master.passwd 243947 2012-12-06 11:52:31Z rwatson $
#
root:*:0:0:Charlie &:/root:/bin/csh
toor:*:0:0:Bourne-again Superuser:/root:
如上所述,每个用户都必须有一个组,因此您不能将根组ID(也不能将任何用户GID)设置为void或空白值。如果尝试将用户标识设置为空白,则会通过以下方式警告您pwd_mkdb
:
pwd_mkdb: no gid for user root
pwd_mkdb: at line #3
pwd_mkdb: /etc/pw.Rlb2U3: Inappropriate file type or format
re-edit the password file?
因此,定义根的事实更多在于正确命名根,而不仅仅是一个哑数。您可以将root gid更改为任何无意义的数字(gid不在内/etc/group
)。您的root用户仍然可以登录,su
或者root可以执行其他任何操作。您将最终得到这样的东西:
$ id
uid=0(root) gid=10000 groups=10000,5(operator)
关于为什么一些用户中轮组是一个完全不同的故事,FreeBSD的,像OpenBSD系统或NetBSD的,用户必须的部分wheel
,以便su
根。
从FreeBSD文档(第9.4章):
为了苏到根(或其他任何有超级用户权限),您必须是在车轮组。如果没有此功能,则在系统上拥有帐户的任何人如果也知道root的密码,都将能够获得超级用户级别的系统访问权限。使用此功能,并非严格如此。苏(1)将防止他们甚至想,如果他们不是在输入密码轮。
但是您是对的,将root用户从转轮中删除不会改变任何事情。这纯粹是正规的,不亚于toor的用户是也不一部分轮或根是部分操作员组。
但是,操作员组是纯形式的,本身没有任何特殊含义。
这也是Richard Stallman对车轮组的看法(来自gnu su手册):
为什么GNU“ su”不支持'wheel'组? ==========
(本节由Richard Stallman撰写。)
有时,一些用户试图保持全部剩余功率。例如,在1984年,麻省理工学院AI实验室的一些用户决定通过更改Twenex系统上的操作员密码并将其对其他所有人保密来夺取电力。(我能够通过修补内核来挫败这场政变并向用户提供权力,但我不知道如何在Unix中做到这一点。)
但是,有时统治者会告诉某人。在通常的“ su”机制下,一旦有人了解了对普通用户表示同情的root密码,他或她就可以告诉其他人。“轮组”功能将使这成为不可能,从而巩固了统治者的力量。
我站在群众的一边,而不是统治者的一边。如果您习惯于支持老板和系统管理员的工作,那么一开始您可能会觉得很奇怪。
login(3)和其他人确实期望主组。他们需要它,以便可以在utmp / wtmp文件中设置有效字段。即使它们没有(更改文件格式),当login(1)或sshd(8)或其他程序尝试设置用户会话时,您也会遇到更根本的问题-无论utmp / wtmp都需要它们填充UID和GID内核进程属性(如您所注意到的那样,登录用户创建的文件必须填充UID和GID)。
至于为什么全能根需要比主要组更多的问题,它不用于权限检查(因为跳过了UID 0),但用于其他用途。
“ wheel”组特别用于几个其他的身份验证检查,例如pam_wheel
其他组(例如“ operator”)也可以用于安全功能(例如,由root用户运行的某些进程可能会将setuid(2)设置为非特权用户(例如“ nobody”),同时仍保留其GROUP成员身份(例如“ operator”)。这将允许此类进程继续访问该组拥有的文件,同时显着减少使用完全UID 0访问权限运行时的安全性问题。
我不确定您的系统中是否有使用此功能的程序(或默认的FreeBSD CURRENT)