Jak wyświetlić listę wszystkich użytkowników z rootem?
35
W jaki sposób mogę wyświetlić listę użytkowników posiadających uprawnienia roota (a jeszcze lepiej wszystkich użytkowników wraz z tym, czy mają uprawnienia roota, czy nie)?
Czy możesz sprecyzować, co rozumiesz przez „uprawnienia roota”? Masz na myśli użytkowników o UID = 0?
Chris S,
Użytkownicy mający możliwość zrobienia czegokolwiek. Zasadniczo - muszę wymienić użytkowników wraz z grupami, których są członkami, jeśli to możliwe.
Eric
2
Gdybym wiedział, gdzie jest twój komputer, mógłbym podejść i wyciągnąć przewód zasilający. To by się kwalifikowało jako „rób wszystko”, co oznacza, że jestem na twojej liście. Rafiq wymienił trzy najczęstsze rzeczy, ale może być ich więcej i wiemy o twoim systemie lub jego konfiguracji.
Chris S,
Odpowiedzi:
42
Nie zapomnij zmienić hasła roota. Jeśli jakikolwiek użytkownik ma UID 0 poza rootem, nie powinien. Kiepski pomysł. Sprawdzić:
grep 'x:0:' /etc/passwd
Ponownie, nie powinieneś tego robić, ale aby sprawdzić, czy użytkownik jest członkiem grupy głównej:
grep root /etc/group
Aby sprawdzić, czy ktokolwiek może wykonywać polecenia jako root, sprawdź sudoers:
cat /etc/sudoers
Aby sprawdzić bit SUID, który umożliwia wykonywanie programów z uprawnieniami administratora:
Ściśle rzecz biorąc, ten pierwszy działa tylko wtedy, gdy plik haseł cienia znajduje się w użytkowniku. Zgadzam się, że prawie zawsze tak jest, ale na wszelki wypadek wykonałem szybką pracę w Perlu, która wyraźnie sprawdza pole 3.
MadHatter obsługuje Monikę
4
Ten wzór jest lepiej niż pierwszy: grep '[^:]*:[^:]*:0:' /etc/passwd. +1 w szczególności za sprawdzenie SUID.
Wstrzymano do odwołania.
33
Aby zobaczyć, kto jest UID 0:
getent passwd 0
Aby zobaczyć, kto jest w grupach root, wheeladmi admin:
getent group root wheel adm admin
Aby wyświetlić listę wszystkich użytkowników i grup, których są członkami:
W przeciwieństwie do wszystkich innych odpowiedzi, które błędnie opierają się na pliku / etc / passwd, ta, używając getent passwdzamiast tego, jest właściwie poprawna. Tylko nie zapomnij sprawdzić / etc / sudoers.
mivk,
Dzięki za to. O wiele jaśniej. Dla mnie to zaakceptowana odpowiedź.
Fiddy Bux
6
Czysty root to identyfikator użytkownika „0”.
Wszyscy użytkownicy w systemie znajdują się w pliku / etc / passwd:
less /etc/passwd
Użytkownicy root mają „0” jako identyfikator użytkownika, czyli trzecią kolumnę. Osoby z „0” jako grupą (4. kolumna) mogą również mieć pewne uprawnienia root.
Następnie przyjrzyj się grupom i zobacz, kto jest dodatkowym członkiem grup „root”, „wheel” lub „admin”:
less /etc/group
Użytkownicy znajdujący się w tych grupach mogą mieć uprawnienia administratora, szczególnie za pomocą polecenia „sudo”.
Ostatnią rzeczą, którą chcesz sprawdzić, jest konfiguracja „sudo” i sprawdzenie, kto ma uprawnienia do uruchomienia tego polecenia. Sam plik jest dobrze udokumentowany, więc nie będę go tutaj kopiować:
less /etc/sudoers
Obejmuje to główne obszary, które mogą mieć dostęp do roota.
Zobacz także serverfault.com/questions/205598/ ... kilka innych miejsc, w których można przyznać prawa do eskalacji uprawnień. (Mianowicie consolehelperi PackageKit.)
mattdm
2
Wszyscy użytkownicy zdecydowanie NIE mają gwarancji, że będą w / etc / passwd. Mogą być na przykład w LDAP. getent passwdPowinien jednak wyświetlać listę wszystkich użytkowników systemu (w tym root), w formacie passwd, niezależnie od bazy danych, w której są zdefiniowani.
To dobra linijka, ale miej świadomość ograniczeń (jestem pewien, że MadHatter już o tym wie) - nie sprawdza grup i nie sprawdza sudoerów. Sprawdza tylko, jak mówi, ukryty korzeń.
Rafiq Maniar,
2
Nie analizuj / etc / passwd. Użytkownicy mogą być zdefiniowani w innym miejscu. Użyj getent passwdzamiast tego. getent passwd | perl -naF: -e 'print "$F[0]\n"'
Jako
2
Aby uzyskać szybką listę wszystkich użytkowników, spróbuj dwukrotnie nacisnąć klawisz Tab (w celu autouzupełniania) po wpisaniu passwdpolecenia, a następnie spacji. Działa to również z supoleceniem.
Czy jest to funkcja specyficzna dla Zsh? Bash sugeruje tylko pliki w openSUSE.
jgillich
Testowane na Debianie (Squeeze) w bash. Nie sądzę, żeby ktokolwiek oficjalnie poparłby to, ale jest to skrót.
Emeraldo
Aktualizacja: To już nie działa w El Capitan. Prawdopodobnie zostało to naprawione ze względów bezpieczeństwa.
Emeraldo 24.04.16
0
Denerwowało mnie to, że nie było odpowiedzi jednokreskowej ... Jeśli chcesz wyświetlić listę wszystkich kont UID 0 (root), skorzystaj z następujących opcji:
Odpowiedzi:
Nie zapomnij zmienić hasła roota. Jeśli jakikolwiek użytkownik ma UID 0 poza rootem, nie powinien. Kiepski pomysł. Sprawdzić:
grep 'x:0:' /etc/passwd
Ponownie, nie powinieneś tego robić, ale aby sprawdzić, czy użytkownik jest członkiem grupy głównej:
grep root /etc/group
Aby sprawdzić, czy ktokolwiek może wykonywać polecenia jako root, sprawdź sudoers:
cat /etc/sudoers
Aby sprawdzić bit SUID, który umożliwia wykonywanie programów z uprawnieniami administratora:
find / -perm -04000
źródło
grep '[^:]*:[^:]*:0:' /etc/passwd
. +1 w szczególności za sprawdzenie SUID.Aby zobaczyć, kto jest UID 0:
Aby zobaczyć, kto jest w grupach
root
,wheel
adm
iadmin
:Aby wyświetlić listę wszystkich użytkowników i grup, których są członkami:
źródło
getent passwd
zamiast tego, jest właściwie poprawna. Tylko nie zapomnij sprawdzić / etc / sudoers.Czysty root to identyfikator użytkownika „0”.
Wszyscy użytkownicy w systemie znajdują się w pliku / etc / passwd:
Użytkownicy root mają „0” jako identyfikator użytkownika, czyli trzecią kolumnę. Osoby z „0” jako grupą (4. kolumna) mogą również mieć pewne uprawnienia root.
Następnie przyjrzyj się grupom i zobacz, kto jest dodatkowym członkiem grup „root”, „wheel” lub „admin”:
Użytkownicy znajdujący się w tych grupach mogą mieć uprawnienia administratora, szczególnie za pomocą polecenia „sudo”.
Ostatnią rzeczą, którą chcesz sprawdzić, jest konfiguracja „sudo” i sprawdzenie, kto ma uprawnienia do uruchomienia tego polecenia. Sam plik jest dobrze udokumentowany, więc nie będę go tutaj kopiować:
Obejmuje to główne obszary, które mogą mieć dostęp do roota.
źródło
consolehelper
iPackageKit
.)getent passwd
Powinien jednak wyświetlać listę wszystkich użytkowników systemu (w tym root), w formacie passwd, niezależnie od bazy danych, w której są zdefiniowani.Aby wydrukować wszystkich użytkowników
Aby wydrukować tylko tych użytkowników z identyfikatorem UID 0, ponieważ, jak powiedzieli inni, użytkownicy z niejawnymi uprawnieniami roota:
źródło
getent passwd
zamiast tego.getent passwd | perl -naF: -e 'print "$F[0]\n"'
Aby uzyskać szybką listę wszystkich użytkowników, spróbuj dwukrotnie nacisnąć klawisz Tab (w celu autouzupełniania) po wpisaniu
passwd
polecenia, a następnie spacji. Działa to również zsu
poleceniem.Należy to zrobić jako użytkownik root.
źródło
Denerwowało mnie to, że nie było odpowiedzi jednokreskowej ... Jeśli chcesz wyświetlić listę wszystkich kont UID 0 (root), skorzystaj z następujących opcji:
Najlepiej,
źródło