87 votes

Quelle est la différence entre "adduser" et "useradd" ?

Je me demande : Pourquoi y a-t-il ces deux commandes sur Debian Linux, avec des noms et des fonctionnalités très similaires ? Cela a toujours été déroutant pour moi.

  • L'une d'entre elles est-elle supérieure à une autre ?
  • Pourquoi ne sont-ils pas fusionnés en un seul ?
  • Y a-t-il une différence significative entre eux ?
  • Lequel dois-je utiliser ? Ou cela dépend-il d'un cas d'utilisation ?

4 votes

Notez que useradd est disponible sur toutes les plateformes de type Unix ; adduser est uniquement pour Debian et ses dérivés.

98voto

user79032 Points 4002

useradd est un binaire natif compilé avec le système. Mais, adduser est un script perl qui utilise useradd binaire en back-end.

adduser est plus convivial et interactif que son back-end. useradd . Il n'y a pas de différence dans les fonctionnalités fournies.

17voto

user517969 Points 171

Le principal avantage de adduser en useradd s'occupe des utilisateurs au niveau du système. Avec adduser le compte d'utilisateurs du niveau système, lorsqu'il est créé, place un répertoire utilisateur dans home pour l'utilisateur système où useradd ne le fait pas automatiquement. Si vous lisez le manuel, ils sont essentiellement les mêmes, sauf pour les utilisateurs du niveau système et les répertoires personnels associés sont automatiques. adduser crée automatiquement un répertoire /home/user pour les utilisateurs du niveau système lorsqu'il n'y a pas de disposition dans le système d'exploitation. useradd sauf si cela est spécifié par -m option. Les autres lectures que j'ai trouvées indiquent de manière générale que l'UID et le GUID sont attribués par les normes Debian conformes acceptées en adduser .

5voto

Happyblue Points 41

Dans quelques instances de Redhat que j'ai vérifiées (4.9 de 2011 et 6.9 de 2017), adduser est simplement un alias de useradd, et non un script Perl. Le voici dans 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

La façon dont je me souviens que useradd est le programme "correct" est la suivante : ajouter un utilisateur n'est qu'une opération dans le spectre CRUD. Vous avez également besoin des opérations 'modifier' et 'supprimer' ('lire' est probablement couvert par la consultation de /etc/passwd). Et donc, les programmes sont nommés utilisateur* (respectivement useradd, usermod et userdel). Je suppose que l'alternative *utilisateur La convention de nommage (adduser, moduser et deluser -- ceux-ci n'existent pas) pourrait également fonctionner. Mais ce serait légèrement plus gênant (pour une raison que je ne peux pas exprimer clairement pour le moment :)

0voto

mariotti Points 111

Dans raspian (il faudrait que je vérifie pour d'autres systèmes d'exploitation), 'adduser USER' lance un dialogue (TUI) alors que 'useradd USER' ne le fait PAS.

Apparemment, en utilisant adduser, dès que la boîte de dialogue s'affiche, la commande 'useradd' complète est déjà exécutée. Même si vous faites CTRL-C, votre utilisateur est là.

Comme dans les nouveaux systèmes ils créent des groupes "personnels", pour supprimer l'utilisateur nouvellement créé il faudrait :

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

Je suppose que parce que adduser "utilise" useradd, le reste est constitué de métadonnées sur l'utilisateur. Donc techniquement, aucun changement dans "skel", "file masks", ou autre, c'est-à-dire les valeurs par défaut de votre système.

D'un autre côté, comme useradd n'affiche pas d'interface utilisateur, il pourrait être plus utile dans le cas de scripting.

Pour être honnête, je ne l'ai testé qu'en rasbian, car c'est la raison pour laquelle j'ai posé la question.

Je peux imaginer que d'autres systèmes d'exploitation peuvent implémenter une version différente de adduser.

0voto

msa Points 141

Une différence importante que j'ai rencontrée (et que je n'ai pas vue dans une réponse ici), est que useradd --system semble impliquer --shell /bin/bash alors que adduser --system implique --shell /usr/sbin/nologin et c'est ce que je voulais.

Mais je voulais aussi pas de répertoire personnel (qui est la valeur par défaut avec useradd mais pas avec adduser ), donc je pourrais soit utiliser useradd このように

useradd --system --shell /usr/sbin/nologin foo

(ou /bin/false est également populaire pour non Shell )

Ce qui conduit, par exemple, à l'entrée suivante dans le document /etc/passwd

foo:x:994:991::/home/foo:/usr/sbin/nologin

Ou utilisez adduser このように

adduser --system --no-create-home foo

Ce qui conduit, par exemple, à l'entrée suivante dans le document /etc/passwd

foo:x:110:65534::/home/foo:/usr/sbin/nologin

Notez que l'attribution automatique des (G)UIDs est également très différente. useradd semble les prendre en comptant vers le bas à partir de 999, tandis que adduser compte vers le haut à partir de 100 pour l'UID et utilise 65534 pour le GUID (ce qui semble vouloir dire aucun groupe ). En effet, useradd crée également un groupe (voir /etc/group ), tandis que adduser ne le fait pas.

Donc pour moi, je vais m'en tenir à adduser après avoir appris tous ces faits.

Source : Testé sur Raspberry Pi OS (basé sur Debian Buster).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X