Comment créer un utilisateur non connecté?

134

J'aimerais créer un utilisateur et un groupe appelé subversionsur un système RHEL 5. J'ai regardé la page de manuel useraddet je suppose que la commande serait simplement ...

useradd subversion

Cependant, vous ne savez pas comment éviter de créer un répertoire personnel. De plus, je ne veux pas que ce soit un utilisateur pouvant se connecter au système.

L'objectif principal est simplement de fournir un propriétaire pour un référentiel SVN.

Ethan
la source
Avez-vous vraiment consulté la page de manuel de useradd et n'avez pas trouvé -M (ne créez pas de répertoire personnel)?
Inemanja

Réponses:

76

Vous pouvez utiliser le -Mcommutateur (assurez-vous que c'est une capitale) pour vous assurer qu'aucun répertoire personnel ne sera créé:

useradd -M subversion

puis verrouillez le compte pour empêcher la connexion:

usermod -L subversion
John T
la source
59
Ce n'est pas une réponse très forte, l'utilisateur créé par ce moyen a toujours un shell. Et vous n'avez même pas averti le PO que c'était le cas. Rétrospectivement ce serait usermod -s /bin/false subversion, ou --shell /bin/falseàuseradd
Lee Hambley
7
@beak le compte est verrouillé, un shell est un point discutable.
John T
15
@beak, en réalité, seul l'utilisateur root serait en mesure de se connecter au compte verrouillé, mais pourquoi s'embêter si la personne a déjà obtenu l'accès root? Et configurer le shell n'a pas beaucoup d'effet lorsqu'un utilisateur peut l'exécuter su -s /bin/bash usernameet le contourner.
John T
11
merci d'avoir pris le temps d'avoir la discussion, vous avez bien sûr raison; mais cela me fait de la peine de voir des utilisateurs non-connectés avec des coquilles définies, cela me semble paresseux, et si quelqu'un ne connaît pas le système, c'est bien qu'ils ne puissent pas faire quelque chose par inadvertance; les hackers sont une race différente, s'ils ont déjà un shell sur la machine, je pense que c'est en gros le jeu fini
Lee Hambley
11
Ces commentaires couvraient exactement les choses que j'espérais apprendre, merci @Beaks && John T
Rixius
220

useradd -r subversion

par man useradd:

-r, --system create a system account

L'option -r créera un utilisateur système - un utilisateur sans mot de passe, sans répertoire personnel et incapable de se connecter.

rynop
la source
1
cette commande créera même un groupe pour l'utilisateur appelé le même. Donc, l'utilisateur "subversion" sera dans le groupe "subversion". Parfait pour quand vous voulez faire plus tard "sudo chown -R subversion: subversion / chemin / vers / dossier"
s3v1
49
avec -r seul, nous pouvons toujours nous connecter. nous avons besoin de -s / bin / false pour désactiver le shell utilisateur.
C4il
8
@ c4il Mais le seul qui puisse s'y connecter est root, non? Je veux dire, ils n'ont pas de mot de passe, alors je m'attendrais à ce que seul root puisse s'y connecter.
Camilo Martin
mais on peut quand même leur attribuer des mots de passe, j'ai essayé passwd subversion.
Shayan
@rynop Comment puis-je vérifier si un utilisateur de ma machine est un utilisateur du système? y a-t-il un moyen? Je pense qu'ils ne font pas partie du groupe sudo'ers pour commencer.
Shayan
22

Une autre solution pour créer un utilisateur du système, en utilisant adduser :

adduser --system --no-create-home --group yourusername

Vous pouvez supprimer --groupsi vous n'avez pas besoin de groupe votre nom d'utilisateur et --no-create-homesi vous avez besoin d'une maison pour cet utilisateur.

Comme mentionné par py4on dans les commentaires, sur certains systèmes, il peut être nécessaire d’utiliser cette --disabled-loginoption pour bien désactiver le login de cet utilisateur. Cela semble être le comportement par défaut sous Debian, cependant.

Attention, l'ID numérique de l'utilisateur sera celui d'un compte système. Vous pouvez toutefois corriger le UID en utilisant l' --uidoption.

Enfin, notez que sur certains systèmes (par exemple, Fedora) adduserest un lien symbolique vers useradd, auquel cas cette réponse n’est pas valide.

Skippy le Grand Gourou
la source
3
Pour répondre "Je ne veux pas que ce soit un utilisateur pouvant se connecter", ajoutez également le drapeau --disabled-login(avant yourusername)
toxefa
@ py4on: Bien que cette option soit documentée dans la page de manuel, elle semble être au moins la valeur par défaut sous Debian.
Skippy le Grand Gourou
15

La réponse la plus propre à la question initiale consiste à exécuter la commande:

adduser subversion --shell=/bin/false

Et si vous ne voulez pas que le répertoire personnel soit:

adduser subversion --shell=/bin/false --no-create-home

ou, si vous voulez un utilisateur système encore plus verrouillé (normalement, cela ne créera pas de répertoire personnel - il a été signalé qu'il créerait toujours un répertoire personnel dans linux mint conformément au commentaire ci-dessous).

adduser subversion --system --group

Toutes ces commandes vont créer un groupe avec le même nom que l'utilisateur

TimmyGee
la source
Sur Mint, la dernière commande crée définitivement un Creating home directory '/home/nodejs' ...
répertoire personnel
11

La manière la plus sûre de le faire serait d'utiliser addusercomme suit:

$ adduser -r -s /bin/nologin subversion

REMARQUE: Assurez-vous d'inclure -s /sbin/nologinpour empêcher tout shell de connexion d'être mis à la disposition du compte.

Confirmation de l'installation

$ grep subversion /etc/passwd /etc/shadow
/etc/passwd:subversion:x:496:496::/home/subversion:/bin/nologin
/etc/shadow:subversion:!!:17232::::::

Cependant il n'y a pas de répertoire:

$ ll /home | grep subversion
$

Confirmez que le compte est par ailleurs utilisable:

$ sudo -u subversion whoami
subversion

$ sudo -u subversion date
Tue Mar  7 08:58:57 EST 2017

Suppression

Si vous devez supprimer ce compte:

$ userdel subversion -r
userdel: subversion mail spool (/var/spool/mail/subversion) not found
userdel: subversion home directory (/home/subversion) not found
$

Et confirmez:

$ grep rtim-hc-user /etc/passwd /etc/shadow
$
slm
la source
1
adduser ne reconnaît pas l'option -r. Je pense que vous vouliez dire useradd.
Felwithe
@felwithe non, chaque réponse que je rédige est toujours testée avant d'être postée. J'ai vérifié et que le commutateur montre sur un système CentOS 6.x.
slm
Voici un pastebin du résultat . Je suis sur Ubuntu 16 LTS. Je ne sais pas quelle version d'adduser est installée mais je n'avais jamais imaginé que cela changerait beaucoup avec le temps ou d'un système à l'autre. Je l'ai ensuite essayé avec un indicateur --system, ce qui a créé un répertoire personnel pour l'utilisateur (je n'en voulais pas). Enfin, je viens de le faire avec useradd au lieu de adduser et cela a fonctionné comme prévu. J'ai donc supposé que vous l'auriez mal entré avec adduser alors que c'était supposé être useradd.
felwithe
@felwithe ouais je ne doutais pas de toi, je t'ai juste fait savoir que je l'avais essayé 8-). Je suis un mod sur les sites Unix et Linux et ces cmds sont notoirement différentes. Le PO mentionne RHEL dans la question, raison pour laquelle j’ai répondu comme cela, mais ils ne l’ont pas étiquetée comme étant spécifique au chapeau rouge, ce qui fait partie de la confusion qui règne sur ce Q & R IMO.
slm
1

Sur une machine CentOS 7

  • si l'utilisateur n'existe pas:
    useradd testuser --shell=/sbin/nologin

  • si vous souhaitez modifier un utilisateur existant:
    usermod testuser --shell=/sbin/nologin

lauc.exon.nod
la source
0

Commencez par générer un mot de passe crypté pour l'utilisateur comportant au maximum 8 caractères en faisant:

openssl passwd -crypt new_password_less_than_eight_chars_long

Ensuite vous faites:

useradd -m -g groupname -G otherGroupsSeperatedByComma -p encryptedPassword username
utilisateur1047344
la source
0

Dans Debian, vous pouvez créer un utilisateur système (sans répertoire de base) et un shell de connexion:

useradd --system --shell=/usr/sbin/nologin <username>

Si votre nologinprogramme est en cours /sbin/nologin, veuillez modifier en conséquence.

Yoonghm
la source