Jaka jest różnica między adduser a useradd?

440

Jaka jest różnica między poleceniami addusera useraddUbuntu?

Joe Cabezas
źródło
17
To samo pytanie dotyczące
superużytkownika
5
a także na Unix
stackexchange
i jest i pozostaje dobrym, ważnym pytaniem. Nie chodzi o to, że ludzie zadają to pytanie w odpowiednich kontekstach, lecz o to, że należy w ogóle zadać to pytanie.
foo

Odpowiedzi:

386

useraddjest natywnym plikiem binarnym skompilowanym z systemem. Ale adduserjest skryptem perla, który używa useraddbinarnego zaplecza.

adduserjest bardziej przyjazny dla użytkownika i interaktywny niż jego zaplecze useradd. Nie ma różnicy w udostępnianych funkcjach.

Źródło: Jaka jest różnica między „adduser” a „useradd”?

Radu Rădeanu
źródło
59
polecenie add useradd nie utworzy katalogu „/ home / username”, ale polecenie adduser będzie
Deepen
65
useradd z -mopcją utworzy katalog domowy.
richsinn
10
Wszczepienie nie jest tak interesujące, semantyka jest. Like adduser(8)jest bardziej przyjazny dla użytkownika i domyślnie tworzy i konfiguruje użytkownika w oczekiwany sposób. I useradd(8)rób tylko to, o co prosisz, więc jeśli chcesz stworzyć katalog domowy, musisz mu powiedzieć, żeby go utworzył.
Anders
23
Muszę to wyszukiwać za każdym razem ... Jak mogę sobie pomóc w zapamiętaniu, który jest który?
Quentin Skousen
11
@kkhugs dla mnie „adduser” wydaje się najbardziej intuicyjny, ponieważ jest to polecenie, które brzmi jak angielski, podczas gdy drugi nie, semantycznie. Jeśli pamiętasz to jako „najbardziej intuicyjne” z tych dwóch, możesz także spróbować zapamiętać to jako preferowane / łatwiejsze.
pzkpfw
146

Zawsze używajadduser (i deluserpodczas usuwania użytkowników), gdy tworzysz nowych użytkowników z wiersza poleceń. (Jeśli piszesz skrypt, zwłaszcza jeśli zależy Ci na przenośności, możesz zamiast tego użyć narzędzi niskiego poziomu - i adduser/ delusermoże nie być dostępny we wszystkich dystrybucjach, np. Na SuSE.)

Te useradd, userdeli usermodpolecenia są narzędzia lowlevel które są tam ze względów historycznych, a adduser/deluserpostąpić właściwie ™. (Pamiętam, którego użyć, myśląc, że user*pojawia się adduser/deluserw alfabecie, a zatem jest „gorszy”).

Według odpowiednich stron podręcznika (na Ubuntu 12.04 Precise Pangolin, tj. Systemie pochodnym Debiana).

Strona podręcznika dla addusermówi:

(Podkreślenie dodane.)

adduseri addgroupdodaj użytkowników i grupy do systemu zgodnie z opcjami wiersza poleceń i informacjami o konfiguracji w /etc/adduser.conf. Są przyjaznym dla użytkownika interfejsem do narzędzi takich jak niski poziom useradd, groupaddi usermodprogramów , domyślnie wybiera Debian Policy respektować wartości UID i GID, tworząc katalog domowy z konfiguracją szkieletowych, uruchomienie skryptu niestandardowego i innych funkcji. adduseri addgroupmoże być uruchomiony w jednym z pięciu trybów:

Strona podręcznika dla useraddmówi:

useraddto narzędzie niskiego poziomu do dodawania użytkowników. W Debianie administratorzy powinni zwykle używać adduser(8)zamiast tego.

Zobacz także: Jaka jest różnica między „adduser” a „useradd”? (na SuperUser)

zrajm
źródło
6
Nigdy nie pamiętam, który to jest, więc to mój głupi mnemonik, jeśli komukolwiek to pomaga :) „użytkownik” rymuje się z „przegrany”, a „przegrany” jest ostatni. Zatem: adduser, deluser.
Mads Skjern
26
Właściwie nie zgadzam się na „ Zawsze użytkownikadduser ”: W przypadku skryptów automatycznych wolałbym, useraddponieważ zawsze tam jest, nieinteraktywny i nie specyficzny dla dystrybucji .
Wernight
2
Próbowałem adduserna openSUSE, ale go tam nie ma (13.2)
cst1992
1
@ cst1992 Masz rację, zredagowałem odpowiedź, aby to odzwierciedlić. Co ciekawe, kiedy wypróbowałem locate addusersystem SuSE 11 w pracy, okazało się, że nie ma adduserstrony podręcznej, ale nie ma pliku binarnego (ani strony deluserpodręcznej, ani polecenia).
zrajm
2
On Red Hat/usr/sbin/adduser -> useradd
Levon
17

adduser: dodaj użytkownika z pełnym profilem i informacjami (przepustka, limit, zezwolenie itp.)

useradd: dodaj użytkownika tylko z jego nazwiskiem (jeśli chcesz dodać użytkownika tymczasowego z tylko nazwą, inne informacje nie są wymagane)

mandm
źródło
1
+1 i witaj! Głosowałem za osobą, która nie była w stanie wyjaśnić swojego poprzedniego głosowania za odrzuceniem. Tak trzymaj! Dobrzy programiści zawsze awansują na szczyt - (i nie obniżają głosu bez wyjaśnienia). :)
Ricalsin
11

Kolejna kilka różnic, które prowadzą do konkretnych scenariuszy, w których dodanie użytkownika może być lepsze.

  1. W niektórych nowszych dystrybucjach, w tym Ubuntu 14.4, adduser poprosi o informacje, takie jak hasło i „gecos” (dane dla polecenia palcem). Oznacza to, że może być mniej odpowiedni do wywoływania ze skryptu (kredyt: wspomniano już w komentarzu Wernight).

    Podpowiedzi można ukryć, przekazując argumenty zerowe:

    adduser --disabled-password --gecos "" USER
    
  2. useraddpozwala przekazać wiele dodatkowych grup, do których można dodać użytkownika za pomocą -Gopcji. adduserwydaje się wymagać, aby wywołać polecenie raz dla każdej grupy, aby dodać.

AdamS
źródło
Nie działa na Ubuntu 16.04.
answerSeeker
8

adduserjest bardziej przyjazny, ponieważ konfiguruje katalogi domowe konta i inne ustawienia (np. automatyczne ładowanie statystyk systemowych i powiadomień przy logowaniu), podczas gdy useraddpo prostu tworzy użytkownika.

Paweł
źródło
2
Źle. useradd może utworzyć katalog domowy za pomocą opcji -m, ustawić hasło za pomocą opcji -p, utworzyć pliki szkieletów za pomocą opcji -k i dodać użytkownika do grupy za pomocą opcji -G.
ychaouche
5

Podstawowa różnica polega na tym, że „adduser” utworzy katalog domowy i doda pliki szkieletowe do tego katalogu, w którym „useradd” nie utworzy żadnego katalogu domowego i plików szkieletowych!

adduser spróbuj:

Adding user `try' ...
Adding new group `try' (1001) ...
Adding new user `try' (1001) with group `try' ...
Creating home directory `/home/try' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for try
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y

useradd try1:

# ll /home/
total 20
drwxr-xr-x  5 root    root    4096 Oct 26 15:52 ./
drwxr-xr-x 22 root    root    4096 Oct 26 15:47 ../
drwx------  8 ashishk ashishk 4096 Oct 26 15:50 ashishk/
drwxr-xr-x  3 root    root    4096 Oct 14 13:02 .ecryptfs/
drwxr-xr-x  2 try     try     4096 Oct 26 15:52 try/
root@chef-workstation:/home/ashishk#
Ashish Karpe
źródło
Źle. Zobacz poprzedni komentarz
ychaouche
0

Zaznaczę również, że addusernie zawsze ma taką -Mopcję, a także nie przestrzega --systemflagi, która wyraźnie mówi :

Zauważ, że useradd nie utworzy katalogu domowego dla takiego użytkownika, niezależnie od domyślnego ustawienia w /etc/login.defs (CREATE_HOME). Musisz określić opcje -m, jeśli chcesz utworzyć katalog domowy konta systemowego.

Jeśli próbujesz utworzyć użytkownika systemu bez katalogu domowego, użyj useradd --system -M.

Blockloop
źródło