Qual è la differenza tra "adduser" e "useradd"?


61

Mi chiedo: perché ci sono questi due comandi su Debian Linux, con nomi e funzionalità molto simili? Questo è sempre stato fonte di confusione per me.

  • Qualcuno è superiore a un altro?
  • Perché non sono uniti in uno?
  • C'è qualche differenza significativa tra loro?
  • Quale dovrei usare? O dipende da un caso d'uso?

1
Nota che useraddè disponibile su tutte le piattaforme simili a Unix; adduserè solo per Debian e i suoi derivati.
Franklin Yu,

Risposte:


68

useraddè binario nativo compilato con il sistema. Ma adduserè uno script perl che usa il useraddbinario nel back-end.

adduserè più intuitivo e interattivo rispetto al suo back-end useradd. Non c'è differenza nelle funzionalità fornite.


1
adduser non è disponibile su tutte le distro (ad es. basate su suse) e su alcune altre è solo un link simbolico a useradd (basato su redhat).
ychaouche,

12

Il vantaggio principale di aggiungere l'utente rispetto a useradd è gestire gli utenti a livello di sistema. Con adduser l'account degli utenti a livello di sistema quando creato mette una directory utente in home per l'utente di sistema dove useradd non lo fa automaticamente. Se leggi l'uomo sono essenzialmente gli stessi tranne per gli utenti a livello di sistema e le home directory associate sono automatiche. adduser crea automaticamente una directory / home / user per gli utenti a livello di sistema in cui non c'è una disposizione in useradd , tranne se specificato dall'opzione -m . Le altre letture mi sono imbattuto in modo generico stato che UID e GUID vengono assegnati dal accettato conformi standard Debian in adduser.


1
adduser ha un'opzione --no-create-home.
ychaouche,

1

In un paio di istanze di Redhat che ho controllato (4.9 dal 2011 e 6.9 dal 2017), adduser è semplicemente un alias di useradd, non uno script Perl. Eccolo in 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

Il modo in cui ricordo che useradd è il programma "corretto" è questo: aggiungere un utente è solo un'operazione nello spettro CRUD. Sono inoltre necessarie le operazioni 'modifica' ed 'eliminazione' ('leggere' è presumibilmente coperto dalla visualizzazione di / etc / passwd). Quindi, i programmi sono chiamati user * (rispettivamente useradd, usermod e userdel). Suppongo che anche la convenzione di denominazione utente * alternativa (adduser, moduser e deluser - questi non esistono) potrebbe funzionare. Ma sarebbe leggermente più imbarazzante (per un motivo che al momento non posso esprimere chiaramente :)


non riesco a trovare modusersu Debian, ma deluserè sicuramente lì.
ychaouche,

0

All'interno di raspian (avrei bisogno di verificare la presenza di altri sistemi operativi), "adduser USER" avvia una finestra di dialogo (TUI) mentre "useradd USER" NON.

Apparentemente, usando adduser, una volta visualizzata la finestra di dialogo, il comando completo 'useradd' è già eseguito. Anche se CTRL-C il tuo utente è lì.

Come nei nuovi sistemi creano gruppi "personali", per rimuovere l'utente appena creato è necessario:

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

Suppongo che, poiché adduser "utilizza" useradd, il resto sono metadati sull'utente. Quindi tecnicamente nessuna modifica in "skel", "maschere di file" o simili, ovvero impostazioni predefinite del sistema.

D'altra parte, poiché useradd non attiva alcuna TUI, potrebbe essere più utile negli script.

Ad essere sincero, l'ho provato solo in rasbian, perché quello era il motivo per cui ho fatto un passo avanti sulla domanda.

Posso immaginare che altri sistemi operativi potrebbero implementare una versione diversa di adduser.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.