Чому корінь у колесі та оператор? Чи може корінь, що перебуває в групі, коли-небудь змінює?


18

Щойно я помітив на своїй машині FreeBSD, що корінь знаходиться в колесі та операторі. Я намагаюся придумати ситуацію, коли UID 0, що знаходиться в групі, вплинув би на ... ну ... що завгодно, і я виходжу порожнім. З цього питання, чи кореневі навіть потрібна перша група входу в / etc / passwd? Або логін (3) задихається і гине, якщо у користувача є порожнє поле первинної групи?

(Для уточнення: я розумію мету існування групи "root", оскільки файлам потрібен власник групи. Я не розумію, як це має значення, що користувач root / toor / що має членство в групі.)

Це просто сувора з десятиліть тому, чи є в цьому реальна причина?

Відповіді:


5

Коротше кажучи: ні. Увімкнувши корінь 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?
    

    Тож факт, що визначено корінь, - це більше про те, щоб його правильно назвали, а не просто німим числом. Ви можете змінити кореневий 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 ):

    Для су до кореню (або будь-який інший облікового запису з правами адміністратора), ви повинні бути в колесі групи. Якщо ця функція не було, хто - небудь з обліковим записом на системі , який також виявив корінь пароль «s матиме можливість отримати доступ на рівні суперкористувача в системі. З цією особливістю це не зовсім суто; su (1) заважатиме їм навіть намагатися ввести пароль, якщо вони не знаходяться в колі .

    Але ви маєте рацію, видалення кореневого користувача з колеса нічого не змінить. Це чисто формально, наскільки користувач toor не є частиною колеса чи кореня, не є частиною операторської групи.

  • Однак операторська група є чисто формальною, без особливих сенсів сама по собі.

Ось також, що думає Річард Сталлман про групу коліспосібника з gnu su ):

Чому GNU "su" не підтримує групу "колесо" ========================================= ==========

(Цей розділ - Річард Сталлман.)

Іноді кілька користувачів намагаються утримувати загальну владу над усіма іншими. Наприклад, у 1984 році декілька користувачів у лабораторії MIT AI вирішили захопити владу, змінивши пароль оператора в системі Twenex і зберігаючи її в таємниці від усіх інших. (Мені вдалося перешкодити цьому перевороту і повернути користувачам живлення шляхом виправлення ядра, але я не знаю, як це зробити в Unix.)

Однак інколи правителі це комусь говорять. За звичайного механізму "su", коли хтось дізнається пароль root, який співчуває звичайним користувачам, він може сказати решту. Особливість "групи коліс" зробила б це неможливим і, таким чином, цементувала владу правителів.

Я на боці мас, а не в правителях. Якщо ви звикли підтримувати начальників та сисадмінів у будь-чому, що вони роблять, спочатку ця ідея може здатися дивною.


1

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

Щодо питання, чому всепотужному root потрібно більше, ніж первинна група, це не для перевірки дозволів (оскільки вони пропущені для UID 0), але це стосується деяких інших цілей.

Група "колесо" особливо використовується для декількох додаткових перевірок аутентифікації, як, наприклад, pam_wheel

Інші групи, такі як "оператор", можуть використовуватися для функцій безпеки (наприклад, якийсь процес, коли запускається root, може встановити (2) для непривілейованого USER (наприклад, "ніхто"), зберігаючи при цьому свої членські групи GROUP (наприклад, "оператор"). Це дозволило б такому процесу продовжувати доступ до файлів, що належать цій групі, при цьому значно скорочуючи проблеми із безпекою роботи з повним доступом до UID 0.

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


0

Це може змінити значення, як тільки будь-яка програма перевіряє приналежність до групи та поводиться по-різному залежно від результату. Звичайно, немає різниці у привілеях, які користувач root може змусити .


0

Хіба не те, що якщо ніхто не є членом групового колеса, то колесо просто ігнорується, і всі користувачі можуть запускати су ... і потенційно вгадувати пароль. Маючи принаймні одного користувача, який є членом групового колеса (тобто користувальницьким корінцем), керування коліщатками перевіряється, і лише інші члени колесного колективу можуть спробувати запустити su.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.