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

61

Zastanawiam się: dlaczego w systemie Debian Linux dostępne są te dwa polecenia o bardzo podobnych nazwach i funkcjonalności? To zawsze było dla mnie mylące.

  • Czy któryś z nich jest lepszy od drugiego?
  • Dlaczego nie są połączone w jedno?
  • Czy jest między nimi jakaś znacząca różnica?
  • Którego powinienem użyć? Czy to zależy od przypadku użycia?
Petr Pudlák
źródło
1
Uwaga: useraddjest dostępna na wszystkich platformach typu Unix; adduserdotyczy tylko Debiana i jego pochodnych.
Franklin Yu

Odpowiedzi:

68

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.

Apple II
źródło
1
adduser nie jest dostępny we wszystkich dystrybucjach (np. oparty na suse), a na niektórych innych jest tylko dowiązaniem symbolicznym do useradd (oparty na redhat).
ychaouche
12

Główną zaletą adduser nad userdd jest obsługa użytkowników na poziomie systemu. Dzięki adduser konto użytkowników na poziomie systemu po utworzeniu umieszcza katalog użytkownika w domu dla użytkownika systemu, w którym useradd nie robi tego automatycznie. Jeśli czytasz mężczyznę, są one zasadniczo takie same, z wyjątkiem użytkowników na poziomie systemu, a powiązane katalogi domowe są automatyczne. adduser automatycznie tworzy katalog / home / user dla użytkowników na poziomie systemu, dla których nie ma przepisu w useradd , z wyjątkiem sytuacji, gdy jest to określone przez opcję -m . Inne odczyty, na które natknąłem się ogólnie wskazują, że UID i GUID są przypisywane przez zaakceptowane zgodne standardy Debiana w adduser.

użytkownik517969
źródło
1
adduser ma opcję --no-create-home.
ychaouche
1

W kilku sprawdzonych przeze mnie przypadkach Redhat (4,9 z 2011 r. I 6,9 z 2017 r.) Adduser jest po prostu aliasem dla useradd, a nie skryptem Perla. Oto w Redhat 6.9:

$ ls -la /usr/sbin/useradd /usr/sbin/adduser
lrwxrwxrwx. 1 root root      7 Nov  2  2016 /usr/sbin/adduser -> useradd
-rwxr-x---. 1 root root 111320 Feb  9  2016 /usr/sbin/useradd

Pamiętam, że useradd jest „poprawnym” programem: dodanie użytkownika to tylko jedna operacja w spektrum CRUD. Potrzebne są również operacje „modyfikuj” i „usuwaj” (prawdopodobnie „odczyt” jest objęty przeglądaniem / etc / passwd). Tak więc programy noszą nazwę użytkownik * (odpowiednio useradd, usermod i userdel). Podejrzewam, że alternatywna * konwencja nazewnictwa użytkowników (adduser, modser i deluser - te nie istnieją) mogłaby również działać. Ale byłoby to trochę bardziej niezręczne (z tego powodu nie mogę teraz wyrazić jasno :)

Happyblue
źródło
nie mogę znaleźć moduserna Debianie, ale na deluserpewno tam jest.
ychaouche
0

W ramach raspian (musiałbym sprawdzić inne systemy operacyjne) „adduser USER” uruchamia okno dialogowe (TUI), podczas gdy „useradd USER” NIE.

Najwyraźniej przy użyciu addusera, gdy pojawi się okno dialogowe, pełne polecenie „useradd” jest już wykonane. Nawet jeśli masz CTRL-C, twój użytkownik tam jest.

Podobnie jak w nowych systemach, tworzą one „osobiste” grupy, aby usunąć nowo utworzonego użytkownika, musisz:

  • vi / etc / passwd
  • vi / etc / group
  • rm -rf / home / USER

Zakładam, że ponieważ adduser „używa” useradd, reszta to metadane dotyczące użytkownika. Więc technicznie nie ma zmian w „skel”, „maskach plików” itp., Tzn. Domyślnych ustawieniach systemu.

Z drugiej strony, ponieważ useradd nie wywołuje żadnego TUI, może być bardziej przydatny w skryptach.

Szczerze mówiąc, przetestowałem to tylko w rasbasie, ponieważ to był powód, dla którego postawiłem pytanie.

Mogę sobie wyobrazić, że inne systemy operacyjne mogą implementować inną wersję adduser.

mariotti
źródło