Polecenie, aby wyświetlić listę wszystkich użytkowników? A jak dodawać, usuwać, modyfikować użytkowników?


855

Potrzebuję polecenia, aby wyświetlić listę wszystkich użytkowników terminalu. I jak dodawać, usuwać, modyfikować użytkowników z terminala.

Może to pomóc w łatwym administrowaniu kontami przez terminal.


3
sed odpowiedźsed 's/:.*//' /etc/passwd
Avinash Raj

2
Użytkownicy listy:awk -F: '{ print $1 }' /etc/passwd
saviour123

Odpowiedzi:


1142

Notować

Aby wyświetlić listę wszystkich lokalnych użytkowników, możesz użyć:

cut -d: -f1 /etc/passwd

Aby wyświetlić listę wszystkich użytkowników zdolnych do uwierzytelnienia (w pewien sposób), w tym nielokalnych, zobacz tę odpowiedź .

Niektóre bardziej przydatne polecenia zarządzania użytkownikami (również ograniczone do użytkowników lokalnych ):

Dodać

Aby dodać nowego użytkownika, możesz użyć:

sudo adduser new_username

lub:

sudo useradd new_username

Zobacz także: Jaka jest różnica między adduser a useradd?

Aby usunąć / usunąć

Aby usunąć / usunąć użytkownika, najpierw możesz użyć:

sudo userdel username

Następnie możesz usunąć katalog domowy usuniętego konta użytkownika:

sudo rm -r / home / nazwa użytkownika

Należy ostrożnie używać powyższego polecenia!

Modyfikować

Aby zmodyfikować nazwę użytkownika:

usermod -l new_username old_username

Aby zmienić hasło użytkownika:

sudo passwd username

Aby zmienić powłokę dla użytkownika:

sudo chsh username

Aby zmienić dane użytkownika (na przykład prawdziwe imię):

sudo chfn username

Aby dodać użytkownika do sudogrupy:

adduser username sudo

lub

usermod -aG sudo username

I, oczywiście, patrz również: man adduser, man useradd, man userdel... i tak dalej.


12
Radu zapomniał wspomnieć, sudo chfn <username>które zmiany danych użytkownika (na przykład prawdziwe nazwisko). Próbowałem dodać to jako komentarz, ale dostałem błąd, mówiąc mi, że muszę mieć reputację +50, aby to zrobić.
Mikaela

2
Myślę, że należy podkreślić, że poprawną odpowiedzią na powiązane pytanie jest askubuntu.com/a/381646/16395 --- w przeciwnym razie musisz wziąć pod uwagę zasady GID / UID Ubuntu ręcznie. Przyjęta odpowiedź nie jest tak jasna.
Rmano

sudo userdel DOMAIN \\ johndoe daje mi błąd: „userdel: nie można usunąć wpisu„ DOMAIN \ johndoe ”z / etc / passwd - zajrzałem do / etc / passwd i nawet ich tam nie ma, prawdopodobnie dlatego, że jest to„ domena?
00fruX

1
@ 00fruX Tak ... Jeśli używasz scentralizowanej bazy danych użytkowników, będziesz musiał zająć się nią bezpośrednio.
Oli


87

Wystarczy nacisnąć Ctrl+ Alt+ Tna klawiaturze, aby otworzyć Terminal. Kiedy się otworzy, uruchom poniższe polecenia:

cat /etc/passwd

LUB

less /etc/passwd
more /etc/passwd

Możesz także użyć awk: awk

awk -F':' '{ print $1}' /etc/passwd

jak dodawać użytkowników za pomocą polecenia?
nux

Możesz użyć polecenia useradd .
Mitch

@nux Trochę późno na imprezę, ale adduserzamiast tego z wiersza poleceń useraddnależy ograniczyć się do skryptów, w których autor naprawdę wie, co robi.
flindeberg,

64

Najłatwiejszym sposobem na uzyskanie tego rodzaju informacji jest getent- patrz instrukcja dla getentpoleceniaIkona strony . Chociaż polecenie to daje takie same wyniki, jak cat /etc/passwdwarto pamiętać, ponieważ daje listę kilku elementów w systemie operacyjnym.

Aby uzyskać listę wszystkich wpisywanych użytkowników (jako użytkowników wymienionych na liście /etc/passwd)

getent passwd

Aby dodać użytkownika newuser do systemu, wpisz

sudo adduser newuser

aby utworzyć użytkownika, który zastosuje wszystkie ustawienia domyślne.

Bonus: dodanie dowolnego użytkownika (na przykład anyuser ) do grupy (na przykład CD-ROM ) typ

sudo adduser anyuser cdrom

Usuwasz użytkownika (na przykład przestarzałego ) za pomocą

sudo deluser obsolete

Jeśli chcesz również usunąć jego katalog domowy / maile, wpisz

sudo deluser --remove-home obsolete

I

sudo deluser --remove-all-files obsolete

usunie użytkownika i wszystkie pliki należące do tego użytkownika w całym systemie.


8
Warto pamiętać, że getent nie tylko drukuje dane wyjściowe użytkowników w / etc / passwd, ale wszystkich użytkowników we wszystkich skonfigurowanych backendach userdb w danym systemie, niezależnie od tego, czy jest to / etc / passwd, czy LDAP itp.
Marcin Kamiński

@MarcinKamiński ma rację, drukuje także ustawienia użytkowników w systemach SSO, którzy mają dostęp do serwera. ta odpowiedź jest najlepsza, getent passwdponieważ jest właściwym poleceniem
ulkas

@MarcinKaminski ze wszystkich niezliczonych backendów userdb
jrw32982


27

Powinno to uzyskać w większości normalnych sytuacji wszystkich normalnych użytkowników (niesystemowych, nie dziwnych itp.):

awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd

Działa to przez:

  • czytanie z /etc/passwd
  • używając :jako separatora
  • jeśli trzecie pole (numer identyfikacyjny użytkownika) jest większe niż 1000, a nie 65534, drukowane jest pierwsze pole (nazwa użytkownika użytkownika).

Wynika to z faktu, że w wielu systemach Linux nazwy użytkowników powyżej 1000 są zarezerwowane dla nieuprzywilejowanych (można by powiedzieć, zwykłych) użytkowników. Kilka informacji na ten temat tutaj :

Identyfikator użytkownika (UID) to unikalna dodatnia liczba całkowita przypisywana przez system operacyjny podobny do systemu Unix każdemu użytkownikowi. Każdy użytkownik jest identyfikowany w systemie za pomocą identyfikatora UID, a nazwy użytkowników są zwykle używane tylko jako interfejs dla ludzi.

Identyfikatory UID są przechowywane wraz z odpowiadającymi im nazwami użytkowników i innymi informacjami specyficznymi dla użytkownika w pliku / etc / passwd ...

Trzecie pole zawiera identyfikator UID, a czwarte pole zawiera identyfikator grupy (GID), który domyślnie jest równy UID dla wszystkich zwykłych użytkowników.

W jądrach Linuksa 2.4 i nowszych UID są 32-bitowymi liczbami całkowitymi bez znaku, które mogą reprezentować wartości od zera do 4 294 967 296. Jednak zaleca się stosowanie wartości do 65 534 w celu zachowania zgodności z systemami używającymi starszych jąder lub systemów plików, które mogą obsługiwać tylko 16-bitowe identyfikatory UID.

Identyfikator UID 0 ma szczególną rolę: zawsze jest to konto root (tj. Wszechmocny użytkownik administracyjny). Chociaż nazwę użytkownika można zmienić na tym koncie i można utworzyć dodatkowe konta z tym samym UID, żadna akcja nie jest mądra z punktu widzenia bezpieczeństwa.

UID 65534 jest zwykle zarezerwowany dla nikogo, użytkownika bez uprawnień systemowych, w przeciwieństwie do zwykłego użytkownika (tj. Nieuprzywilejowanego). Ten identyfikator UID jest często używany dla osób uzyskujących dostęp do systemu zdalnie przez FTP (protokół przesyłania plików) lub HTTP (protokół przesyłania hipertekstu).

Identyfikatory UID od 1 do 99 są tradycyjnie zarezerwowane dla specjalnych użytkowników systemu (czasami nazywanych pseudo-użytkownikami), takich jak koło, demon, lp, operator, wiadomości, poczta itp. Ci użytkownicy są administratorami, którzy nie potrzebują całkowitych uprawnień roota, ale wykonują niektóre zadania administracyjne i dlatego potrzebują więcej uprawnień niż te przyznawane zwykłym użytkownikom.

Niektóre dystrybucje Linuksa (tj. Wersje) rozpoczynają identyfikatory UID dla nieuprzywilejowanych użytkowników od 100. Inne, takie jak Red Hat, zaczynają od 500, a jeszcze inne, takie jak Debian, zaczynają od 1000. Z powodu różnic między dystrybucjami, instrukcja interwencja może być konieczna, jeśli w organizacji jest używana wiele dystrybucji.

Wygodne może być również zarezerwowanie bloku identyfikatorów UID dla użytkowników lokalnych, np. Od 1000 do 9999, oraz innego bloku dla użytkowników zdalnych (tj. Użytkowników w innym miejscu w sieci), na przykład od 10000 do 65534. Ważne jest, aby zdecydować na schemacie i stosuj się do niego.

Jedną z zalet tej praktyki rezerwowania bloków liczb dla określonych typów użytkowników jest to, że wygodniej jest przeszukiwać dzienniki systemowe pod kątem podejrzanej aktywności użytkownika.

Wbrew powszechnemu przekonaniu nie jest konieczne, aby każdy wpis w polu UID był unikalny. Jednak nieunikalne identyfikatory UID mogą powodować problemy z bezpieczeństwem, dlatego identyfikatory UID powinny być unikalne w całej organizacji. Podobnie należy unikać recyklingu identyfikatorów UID od byłych użytkowników tak długo, jak to możliwe.


1
Prawie idealna odpowiedź, ale IMO jest czystsze w użyciu getentzamiast czytać prosto /etc/passwdi wyszukiwać UID_MIN/ UID_MAXzamiast kodować wartości:getent passwd | awk -F: "{if (\$3 >= $(awk '/^UID_MIN/ {print $2}' /etc/login.defs) && \$3 <= $(awk '/^UID_MAX/ {print $2}' /etc/login.defs)) print \$1}"
Max Truxa

17

lista wszystkich użytkowników, którzy mogą się zalogować (brak użytkowników systemu, takich jak: bin, deamon, mail, sys itp.)

awk -F':' '$2 ~ "\$" {print $1}' /etc/shadow

dodaj nowego użytkownika

sudo adduser new_username

lub

sudo useradd new_username

usuń / usuń nazwę użytkownika

sudo userdel username

Jeśli chcesz usunąć katalog domowy (domyślnie katalog / home / nazwa użytkownika)

sudo deluser --remove-home username

lub

sudo rm -r /path/to/user_home_dir

Jeśli chcesz usunąć wszystkie pliki z systemu od tego użytkownika (nie tylko katalog domowy)

sudo deluser --remove-all-files

1
Może powinieneś wyjaśnić różnicę między adduseri useradd. Dodaj także sudo-prefiks do pierwszego polecenia. Plik cienia hasła można odczytać tylko jako root.
s3lph,

1
awk -F':' '$2 ~ "\$" {print $1}' /etc/shadowpokazał mi wszystkich użytkowników, w tym bin, demona itp., i rzucił to ostrzeżenie: sekwencja ucieczki \$' treated as plain $ 'Znalazłem ten post stackoverflow.com/a/25867768/847954 i dodałem jeszcze jeden odwrotny ukośnik i działało dobrze:awk -F':' '$2 ~ "\\$" {print $1}' /etc/shadow
jeff musk

8

Ok, oto sztuczka, która pomoże ci to posortować. Terminal ma funkcję autouzupełniania, jeśli wpiszesz użytkownika i naciśniesz klawisz Tab dwa razy, wyświetli wszystkie polecenia istniejące dla użytkownika jako pierwsze 4 znaki.

user (tab tab)

daje mi jak to możliwe opcje useradd userdel usermod users users-admin,
jeśli chcesz dowiedzieć się więcej o poleceniu google it lub wpisać man man useradd daje useradd - utwórz nowego użytkownika lub zaktualizuj domyślne informacje o nowym użytkowniku ... ...

aby wymienić użytkowników, powinieneś iść z tym, co powiedział Mitch.

Nadzieja, która pomaga mi uwielbiać uzupełnianie kart w bash, ratuje mnie przed zapamiętywaniem rzeczy.


6

Aby znaleźć użytkowników, którzy mają katalogi domowe w folderze / home na komputerze, uruchom następujące polecenia

cd /home
ls 

Następnie możesz zobaczyć użytkowników, którzy mają uprawnienia do zalogowania się na serwerze. Jeśli chcemy przejrzeć pliki użytkowników, musisz być użytkownikiem root.


8
To pokazuje tylko zawartość /home. Chociaż Ubuntu domyślnie umieszcza tam katalogi użytkowników, nie jest to w żaden sposób obowiązkowe.
David Foerster,

ls /homemoże również zawierać katalogi użytkowników usuniętych.
Suraj
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.