Почему рут в руле и операторе? Может ли корень, находящийся в группе, изменить ситуацию?

18

Я только что заметил на моей машине с FreeBSD, что root находится в wheel и оператор. Я пытаюсь придумать ситуацию, когда присутствие UID 0 в группе могло бы повлиять на ... ну ... на что угодно, и я потерял сознание. В связи с этим, нужна ли root даже основная группа входа в / etc / passwd? Или login (3) захлебнется и умрет, если у пользователя будет пустое поле первичной группы?

(Для пояснения: я понимаю цель существования «корневой» группы, поскольку файлам нужен владелец группы. Я не понимаю, как важно, чтобы пользователь root / toor / что-либо имел членство в этой группе.)

Это просто бесполезность десятилетий назад, или для этого есть реальная причина?

Bandrami
источник

Ответы:

5

Короче говоря: нет. Имея root wheelи operatorгруппу ничего не меняйте.

Но вы также спрашиваете о двух других вещах:

  • Идентификатор корневой группы (по умолчанию) установлен в 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:
    

    Как уже было сказано, у каждого пользователя должна быть группа, поэтому вы не можете установить идентификатор корневой группы (или любой пользовательский gid) в пустое или пустое значение. Если вы попытаетесь установить gid пользователя пустым, вы будете предупреждены 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 определен, больше связан с тем, что он имеет правильное имя, а не просто тупое число. Вы можете изменить 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 , мог бы получить доступ к системе на уровне суперпользователя. С этой функцией это не совсем верно; su (1) не позволит им даже попытаться ввести пароль, если они не находятся в колесе .

    Но вы правы, удаление пользователя root с руля ничего не изменит. Это чисто формально, поскольку пользователь toor не является ни членом wheel, ни root не является частью группы операторов .

  • Группа операторов, однако, является чисто формальной, без каких-либо особых значений сама по себе.

Вот что Ричард Столлман думает о группе колес (из руководства gnu su ):

Почему GNU "su" не поддерживает группу `wheel '==================================== ==========

(Этот раздел Ричард Столлман.)

Иногда несколько пользователей пытаются удержать полную власть над всеми остальными. Например, в 1984 году несколько пользователей в лаборатории MIT AI решили отключить питание, изменив пароль оператора в системе Twenex и сохранив его в тайне от всех остальных. (Я смог предотвратить этот переворот и вернуть власть пользователям, исправив ядро, но я не знаю, как это сделать в Unix.)

Однако, иногда правители говорят кому-то. При обычном механизме "su", когда кто-то узнает пароль root, который симпатизирует обычным пользователям, он или она может сказать остальным. Функция «колесной группы» сделает это невозможным и, таким образом, укрепит власть правителей.

Я на стороне масс, а не правителей. Если вы привыкли поддерживать боссов и сисадминов во всем, что бы они ни делали, сначала вам может показаться странной эта идея.

Ouki
источник
1

Логин (3) и другие ожидают основной группы. Им это нужно, чтобы они могли устанавливать допустимые поля в файлах utmp / wtmp. И даже если они этого не сделали (изменили формат файла), вы столкнетесь с более фундаментальной проблемой, когда login (1) или sshd (8) или другие программы попытаются настроить пользовательский сеанс - независимо от utmp / wtmp, они должны заполнить оба Свойства процессов ядра UID и GID (так как файлы, созданные вошедшим в систему пользователем, должны заполняться UID и GID, как вы заметили).

Что касается вопроса, почему всем-мощному корню нужно больше, чем основной группе, это не относится к проверкам разрешений (так как они пропускаются для UID 0), но делает это для некоторых других целей.

Группа "wheel" особенно используется для нескольких дополнительных проверок аутентификации, таких как, например, pam_wheel

Другие группы, такие как «оператор», могут использоваться для функций безопасности (например, некоторые процессы при запуске от имени root могут устанавливать setuid (2) для непривилегированного пользователя (например, «никто»)), сохраняя при этом свое членство в GROUP (например, «оператор»). Это позволило бы такому процессу продолжить доступ к файлам, принадлежащим этой группе, при этом значительно уменьшив проблемы безопасности при работе с полным доступом UID 0.

Я не уверен, есть ли программы, использующие эту функцию в вашей системе (или по умолчанию FreeBSD CURRENT)

Матия Налис
источник
0

Это может иметь значение - как только любая программа проверяет членство в группе и ведет себя по-разному в зависимости от результата. Конечно, нет никакой разницы в привилегиях, которые пользователь может назначить .

rackandboneman
источник
0

Разве это не так, что если никто не является членом группового колеса, то колесо просто игнорируется, и все пользователи могут запускать su ... и потенциально угадывать пароль. Имея хотя бы один идентификатор пользователя, входящий в состав группового колеса (т. Е. Корень имени пользователя), проверяются элементы управления колесом, и только другие члены группового колеса могут пытаться запустить su.

Rufwoof
источник