Dlaczego root w kole i operator? Czy bycie rootem w grupie może coś zmienić?

18

Właśnie zauważyłem na moim komputerze FreeBSD, że root jest w kole i operatorze. Próbuję wymyślić sytuację, w której UID 0 w grupie miałby jakikolwiek wpływ na ... cóż ... na wszystko, i zaczynam być pusta. W związku z tym, czy root potrzebuje nawet podstawowej grupy logowania w / etc / passwd? A może login (3) dusi się i umiera, jeśli użytkownik ma puste pole grupy podstawowej?

(Aby wyjaśnić: rozumiem cel istnienia grupy „root”, ponieważ pliki potrzebują właściciela grupy. Nie rozumiem, jak ważne jest, aby użytkownik root / toor / cokolwiek miał członkostwo w grupie).

Czy to tylko cruft sprzed dziesięcioleci, czy może jest tego prawdziwy powód?

Bandrami
źródło

Odpowiedzi:

5

W skrócie: nie. Zrootowanie wheeli operatorgrupa nic nie zmieniają.

Ale kwestionujesz również 2 inne rzeczy:

  • Identyfikator grupy głównej jest (domyślnie) ustawiony na 0, co jest najbliższą pustą wartością, którą można uzyskać.

    $ 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:
    

    Jak powiedziano, każdy użytkownik musi mieć grupę, więc nie można ustawić identyfikatora grupy głównej (ani żadnego użytkownika gid) na wartość pustą lub pustą. Jeśli spróbujesz ustawić gid użytkownika na pusty, zostaniesz ostrzeżony przez 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?
    

    Tak więc fakt, że root jest zdefiniowany, polega raczej na tym, aby poprawnie nazwać go zamiast tylko głupiej liczby. Możesz zmienić root gid na dowolną bezsensowną liczbę (gid nie w środku /etc/group). Twój użytkownik root nadal będzie mógł się zalogować sulub cokolwiek innego, co może zrobić root . Po prostu skończysz mieć coś takiego:

    $ id
    uid=0(root) gid=10000 groups=10000,5(operator)
    
  • o tym, dlaczego niektórzy użytkownicy należą do grupy kół , co jest zupełnie inną historią, ponieważ FreeBSD , takie jak OpenBSD lub NetBSD , użytkownicy muszą być częścią tego systemu wheel, aby su rootować .

    Z dokumentacji FreeBSD ( rozdział 9.4 ):

    Aby su do korzenia (lub innego konta z uprawnieniami administratora), musi być w kole grupy. Gdyby tej funkcji nie było, każdy z kontem w systemie, który również poznałby hasło roota , mógłby uzyskać dostęp do systemu na poziomie administratora. W przypadku tej funkcji nie jest to do końca prawda; su (1) uniemożliwi im nawet próbę wprowadzenia hasła, jeśli nie będą w kole .

    Ale masz rację, usunięcie użytkownika root z koła nie zmieni rzeczy. Jest to czysto formalne, ponieważ użytkownik toor nie jest ani częścią koła, ani korzenia jest częścią grupy operatorów .

  • Grupa operatorów jest jednak czysto formalna, bez żadnych specjalnych znaczeń sama w sobie.

Oto, co Richard Stallman myśli o grupie kół (z podręcznika GNU SU ):

Dlaczego GNU „su” nie obsługuje grupy „wheel” ===================================== ==========

(Ta sekcja autorstwa Richarda Stallmana.)

Czasami kilku użytkowników próbuje utrzymać całkowitą moc nad resztą. Na przykład w 1984 r. Kilku użytkowników laboratorium MIT AI postanowiło przejąć władzę, zmieniając hasło operatora w systemie Twenex i utrzymując je w tajemnicy przed wszystkimi innymi. (Byłem w stanie udaremnić ten zamach stanu i oddać moc użytkownikom z powrotem poprzez łatanie jądra, ale nie wiedziałbym, jak to zrobić w Uniksie).

Jednak czasami władcy komuś o tym mówią. Zgodnie ze zwykłym mechanizmem „su”, gdy ktoś pozna hasło roota, które sympatyzuje ze zwykłymi użytkownikami, może powiedzieć resztę. Funkcja „grupy kół” uniemożliwiłaby to, a tym samym umocniłaby siłę władców.

Jestem po stronie mas, a nie władców. Jeśli jesteś przyzwyczajony do wspierania bossów i sysadminów we wszystkim, co robią, na początku może się to wydawać dziwne.

Ouki
źródło
1

login (3) i inni oczekują grupy podstawowej. Potrzebują go, aby mogli ustawić prawidłowe pola w plikach utmp / wtmp. I nawet jeśli się nie zmieniły (zmieniłby format pliku), natrafiłbyś na bardziej podstawowy problem, gdy login (1), sshd (8) lub inne programy próbują skonfigurować sesję użytkownika - niezależnie od utmp / wtmp muszą wypełnić oba Właściwości procesu jądra UID i GID (jak widać, pliki tworzone przez zalogowanego użytkownika muszą mieć wypełnione UID i GID).

Jeśli chodzi o problem, dlaczego wszechmocny root wymaga więcej niż grupy podstawowej, to nie sprawdza sprawdzania uprawnień (ponieważ są pomijane dla UID 0), ale robi to w przypadku niektórych innych zastosowań.

Grupa „koło” jest szczególnie używana do kilku dodatkowych kontroli uwierzytelnienia, takich jak na przykład pam_wheel

Inne grupy, takie jak „operator”, mogą być używane do funkcji bezpieczeństwa (na przykład niektóre procesy uruchamiane przez root mogą być ustawione w setuid (2) na nieuprzywilejowanego UŻYTKOWNIKA (jak „nikt”), zachowując przynależność do GRUPY (jak „operator”). Umożliwiłoby to takiemu procesowi kontynuowanie dostępu do plików należących do tej grupy, przy jednoczesnym znacznym ograniczeniu problemów związanych z bezpieczeństwem działania z pełnym dostępem UID 0.

Nie jestem pewien, czy istnieją programy korzystające z tej funkcji w twoim systemie (lub czy jest to domyślny CURRENT FreeBSD)

Matija Nalis
źródło
0

Może to mieć znaczenie - gdy tylko dowolny program sprawdzi członkostwo w grupie i zachowa się inaczej w zależności od wyniku. Oczywiście nie ma różnicy w przywilejach, które użytkownik root może wymusić .

rackandboneman
źródło
0

Czy nie jest tak, że jeśli nikt nie jest członkiem koła grupy, to koło jest po prostu ignorowane, a wszyscy użytkownicy mogą uruchomić su ... i potencjalnie odgadnąć hasło. Mając przynajmniej jeden identyfikator użytkownika będący członkiem koła grupy (tj. Root użytkownika), kontrolki kół są sprawdzane i tylko inni członkowie koła grupy mogą próbować uruchomić su.

Rufwoof
źródło