为什么扎根于车轮和操作员?扎根在团队中能有所作为吗?


18

我刚刚在我的FreeBSD机器上注意到根源在wheel和operator中。我试图考虑这样一种情况,即UID 0处于一个组中会对...产生任何影响……好吧,任何事情,我都显得空白。因此,root甚至在/ etc / passwd中是否需要一个主登录组?还是如果用户的主组字段为空,login(3)会窒息而死吗?

(要澄清:由于文件需要组所有者,因此我理解“根”组存在的目的。我不理解用户root / toor /具有该组成员身份的用户的重要性。)

这仅仅是几十年前的产物,还是有真正的原因?

Answers:


5

简而言之:不。扎根wheeloperator分组不变。

但是您还质疑另外两件事:

  • 组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密码,他或她就可以告诉其他人。“轮组”功能将使这成为不可能,从而巩固了统治者的力量。

我站在群众的一边,而不是统治者的一边。如果您习惯于支持老板和系统管理员的工作,那么一开始您可能会觉得很奇怪。


1

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)


0

它可以有所作为-任何程序检查组成员身份并根据结果做出不同的行为。当然,有一定的特权root用户可以无差别


0

是否不是如果没有人是wheel的成员,那么wheel就会被忽略,所有用户都可以运行su ...并可能猜测密码。通过让至少一个userid作为组转轮的成员(即userid根),然后检查转轮控件,只有组轮的其他成员才能尝试运行su。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.