Quels sont / sont le ou les programmes CLI standard pour gérer les utilisateurs et les groupes?

8

Je pose des questions sur la gestion des utilisateurs à partir de la ligne de commande (par exemple sur un système où il n'y a pas d'outils graphiques disponibles). Dans le passé , je l' ai utilisé plusieurs programmes différents pour ajouter ou supprimer et les utilisateurs des groupes ou de modifier leurs attributs: adduser, useradd, usermod, gpasswd, et peut - être d' autres que j'ai oublié. J'ai également entendu à quelques reprises que certains de ces programmes sont de bas niveau et devraient être évités pour une utilisation générale, mais je ne me souviens jamais lequel. J'aimerais donc obtenir une réponse définitive pour les programmes recommandés pour au moins les tâches suivantes:

  • Créer un nouvel utilisateur
  • Ajouter un utilisateur à un groupe
  • Supprimer un utilisateur d'un groupe
  • Modifier le groupe principal d'un utilisateur
  • Modifier le shell de connexion ou le répertoire personnel d'un utilisateur
  • Supprimer un utilisateur

Je cherche des outils standard que je peux espérer être disponibles sur à peu près n'importe quel système Linux (de n'importe quelle distribution).

David Z
la source
1
aussi groupmod. Je ne vais pas en faire une réponse .... mais la façon la plus standard est probablement d'utiliser votre éditeur de texte ... rappelez-vous que les fichiers affectés ne sont que du texte délimité.
xenoterracide
Fait intéressant, avant de poser cette question, je n'avais jamais vu une seule fois une mention de modification directe des fichiers. (D'une certaine manière, j'avais l'impression que ce /etc/passwdn'était qu'une partie d'un système complexe)
David Z

Réponses:

9

Malheureusement, aucune de ces opérations n'a jamais été normalisée.

Certains systèmes d'exploitation offrent cette fonctionnalité dans le cadre du système d'exploitation, comme Linux, mais même si votre système Linux les inclut, au fil du temps et à travers les distributions Linux, les outils et leurs noms ont changé de sorte que vous ne pouvez pas vraiment dépendre d'un ensemble standard d'outils à faire ces tâches.

Vous devez disposer d'un ensemble d'outils par système d'exploitation.

miguel.de.icaza
la source
Je n'ai jamais changé de nom ... mais j'ai changé de commutateur. Je me souviens d'avoir découvert qu'un Linux n'avait pas gpasswd -a.
xenoterracide
1
Si la mémoire sert - RedHat a déjà utilisé 'adduser' au lieu de 'useradd', et il s'est comporté différemment (je pense que useradd était plus Debianish). Ils ont ensuite fait de 'adduser' un lien symbolique vers 'useradd'. Voir quelques anciennes références sur redhat.com/docs/manuals/linux/RHL-5.2-Manual/install-guide/…
Stefan Lasiewski
7

Sur les systèmes Debian (et dérivés), adduseret deluserenveloppent plus haut niveau autour useraddet fonctionnalités associées. La création d'utilisateur de couverture, l'addition et la soustraction d'appartenance à un groupe et la suppression d'utilisateur. Les commandes correspondantes de création / suppression de groupes sont, assez sensiblement, addgroupet delgroup. usermodsemble couvrir le cas d'utilisation restant que vous nommez.

Phil Miller
la source
6

Vous mentionnez Linux dans la dernière partie de votre question, mais comme le titre est générique, je répondrai à FreeBSD.

FreeBSD a des commandes similaires à Linux mais ce sont des commandes passées à l' pwutilitaire:

pw useradd [user|uid] ...
pw usermod [user|uid] ...

etc. Cependant, on peut analyser la commande en deux parties: useret mod; un nom et un verbe. De plus, on peut également utiliser groupet del:

pw groupdel [group|gid] ...

pour, par exemple, supprimer un groupe. Voici donc ce que je trouve vraiment cool: l'ordre n'a pas d'importance, pas plus que l'espacement! Ce que cela signifie, c'est que vous pouvez vous rappeler quoi appeler en pensant à ce que vous voulez faire (en anglais quand même):

pw del user [user|uid] ...
pw mod group [group|gid] ...
pw show user [user|uid] ...
pw next user [user|uid] ...

et plus! L' pwutilitaire vous permet également de verrouiller et déverrouiller des comptes:

pw lock [user|uid] ...
pw unlock [user|uid] ...

Les options et tous les paramètres que vous passez sont tous normalisés (bien qu'ils ne s'appliquent pas toujours aux commandes d'appel), de sorte que la mémorisation est minimisée. Dans l'ensemble, c'est une belle façon de faire les choses.

Remarque: les ellipses dans les exemples ci-dessus représentent des options et des paramètres transmis à d' pwautres utilisateurs ou groupes.

gvkv
la source
C'était une question Linux mais l'information est quand même appréciée. Ce serait formidable si Linux avait quelque chose comme ça.
David Z
Nom et verbe, tu veux dire.
Warren Young
Oh! A corrigé.
gvkv
2

Juste pour être complet, dans la partie inférieure du spectre, je mentionnerais vipw (8) et vigr (8), juste au-dessus de "vi / etc / passwd" et "cat> / etc / passwd" mais juste en dessous "useradd ". Oh, et ils existent dans la plupart des variantes Unix.

codehead
la source
2

Tous ces outils sont finalement conçus pour éditer des fichiers texte pour vous. Si vous voulez savoir comment gérer les utilisateurs et les groupes sur des systèmes, vous devez vous familiariser avec ces fichiers texte sous-jacents. Heureusement pour vous, il n'y en a que deux, /etc/passwdet /etc/group. Il existe également des fichiers complémentaires /etc/shadowet /etc/gshadowpour l'observation du mot de passe et du groupe respectivement.

Eli Frey
la source
4
... et / etc / shadow, car la plupart des systèmes coasseront si i est incompatible avec / etc / passwd
codehead
1

Dans de nombreuses situations, savoir comment modifier "/ etc / passwd" est toujours utile.

Kevin Cantu
la source
1
Savoir lire / etc / passwd est utile, mais le modifier directement est une mauvaise pratique. Sur certains * ixes que j'ai utilisés (SysV moderne, OS X ...), ces fichiers ne sont pas le principal emplacement de stockage des données d'utilisateur et de groupe. Ce sont soit des clichés instantanés pour des raisons de compatibilité, soit ce sont des sources principales mais il existe une base de données ou un index qui doit être mis à jour chaque fois qu'ils changent. Sur ces systèmes, si vous ne mettez pas à jour les fichiers via les outils officiels, les modifications ne prendront pas effet immédiatement, si jamais elles le font.
Warren Young
Juste ne munge
Stefan Lasiewski
1

Si vous utilisez un backend autre que le backend de la machine locale par défaut - OpenLDAP étant le plus courant - alors cpu (changer l'utilitaire de mot de passe) peut être la commande que vous recherchez. Il peut être exécuté sur des machines autres que le maître LDAP s'il est configuré correctement, et sa syntaxe est généralement la même que celle de useraddetc avec un préfixe de cpu. Donc pour me rajouter je pourrais faire

$ sudo cpu useradd hamish

Consultez la page de manuel de cpu pour plus de détails.

Hamish Downer
la source
Intéressant, mais une réponse qui ne s'applique qu'à une machine qui obtient ses informations utilisateur à partir de LDAP est d'une utilité très limitée pour moi.
David Z
0

Si votre question se limitait à

tout système Linux (de toute distribution)

mais tous les systèmes ont un accès réseau à un seul serveur. Vous pouvez utiliser quelque chose comme NIS ou YP. Cette réponse est donc limitée aux administrateurs au sein d'une même organisation.

Vous avez toujours le problème où presque chaque distribution a des façons légèrement différentes de configurer YP, mais la configuration ne se produit qu'une seule fois. De plus, ce type de réseau n'est pas anodin.

Au sein d'un seul site / réseau, vous gagnerez beaucoup en faisant cela. En combinaison avec automount, mon préféré est de pouvoir SSH vers n'importe quelle machine * nix et d'avoir tous mes fichiers et outils personnels à ma disposition.

Au point, la distribution que vous choisissez pour le maître est le système que vous utilisez pour gérer les utilisateurs. Vous aurez alors un seul ensemble d'outils / documentation pour gérer les utilisateurs et les groupes.

Il est même possible d'utiliser quelque chose comme des outils LDAP et samba sur le maître. L'utilisation de samba me permet également d'avoir mes fichiers personnels à ma disposition sur les machines Windows.

Stephen Jazdzewski
la source
Merci, mais je cherche une réponse qui s'applique tout aussi bien aux systèmes non en réseau.
David Z
0

La chose la plus proche à un niveau vous obtenez est vi /etc/passwd, vi /etc/shadowet vi /etc/groups. (Les hérétiques peuvent se substituer emacs.) Tout ce que j'ai trouvé depuis ne fonctionnera que sur certains systèmes.

Sérieusement, découvrez quels outils votre système d'exploitation possède et utilisez-les. Ne vous attendez pas à ce qu'ils fonctionnent de la même manière sur tous les systèmes. Ce serait bien s'ils étaient standardisés, mais ils ne le sont pas.

David Thornley
la source
L'utilisation d'un éditeur de texte pour modifier les fichiers de configuration que les outils peuvent et doivent modifier pour vous n'est pas une norme. Vous ne devez jamais utiliser un éditeur de texte pour modifier un fichier de configuration, lorsque le système d'exploitation ou l'application fournit un utilitaire pour le faire pour vous. Cela est particulièrement vrai pour /etc/passwd, /etc/shadow, /etc/groupet /etc/gshadow. C'est à cela que servent les outils. Les humains sont sujets aux erreurs, alors que les outils ont été testés et sont (espérons-le) exempts de bogues.
Aaron Toponce
N'appelez jamais /etc/passwddirectement un éditeur et des amis. Utilisez vipwet vigr, qui: verrouille le fichier contre l'édition simultanée; lancez votre éditeur préféré ( $VISUAL); ne modifiez pas le fichier si vous faites une erreur de syntaxe; sur certains systèmes (par exemple FreeBSD), régénérez également d'autres fichiers qui doivent être synchronisés.
Gilles 'SO- arrête d'être méchant'