Comment créer un utilisateur sans mot de passe?

22

Sous os X, il est possible d'avoir des utilisateurs sans mot de passe. Si vous les inspectez avec dsclleur mot de passe, affichez-les *. Il est utilisé pour les utilisateurs du système tels que les utilisateurs de bases de données comme mysql, pgsqletc. Ce qui est bien est que ces utilisateurs ne se présente pas à l'écran de connexion et vous ne pouvez pas vous connecter comme les sans sudoetc.

Après avoir supprimé un tel utilisateur essayant certaines choses, je voulais le recréer, mais je n'ai pas pu. J'ai réussi à obtenir un utilisateur avec un mot de passe vierge et j'ai pu définir le mot de passe sur *. Mais aucun n'a eu le même effet que ci-dessus, car l'utilisateur s'est présenté sur mon écran de connexion.

Comment créez-vous un tel utilisateur?

googletorp
la source
Sous Linux, vous passez l'indicateur --disabled-password à adduser. Peut-être qu'OS X a quelque chose de similaire dans son répertoire de ligne de commande?
BR
Vouliez-vous dire; l'utilisateur peut se connecter sans mot de passe ou ne peut pas se connecter car aucun mot de passe n'est défini?
Chris Huang-Leaver
1
Je remarque que vous n'avez pas accepté de réponse ... une exigence pour rester en dehors des différentes listes xdm est d'avoir un ID utilisateur significativement bas. sur de nombreux systèmes useraddcommence à ajouter des identifiants à 1000, et les gestionnaires de connexion ne montreront pas les identifiants d'utilisateur en dessous, mais tout ce qui précède. donc bien que ce ne soit pas une réponse à cette question, ce pourrait être la résolution du problème. veuillez noter que 1000 est arbitraire et peut être inférieur ou supérieur à votre distribution. Pour corriger, modifiez simplement l'entrée utilisateur /etc/passwdpour avoir un uid inférieur. Maintenant, je vais poser une question similaire.
xenoterracide
@xenoterracide: Quand j'ai recréé l'utilisateur, je lui ai donné l'ancien ID, c'est l'utilisateur pgsql que j'ai supprimé qui a un identifiant supérieur à celui de mysql, donc je suis sûr que cela n'a pas eu d'impact dans ce cas , mais merci pour l'info quand même.
googletorp

Réponses:

6

Vous pouvez exécuter passwd --delete <username>après avoir créé l'utilisateur avec adduser. Après cela, vous pourrez vous connecter sans entrer de mot de passe.

Eugen Anghel
la source
4
Je pense que c'est exactement le contraire de ce qui est demandé ici.
Shadur
Au début, je pensais que c'était la bonne (ou meilleure) réponse, jusqu'à ce que j'aie relu la question de l'OP, qui mentionne «utilisateur système» et ne s'affiche pas sur «écran de connexion». Cette méthode apparaîtra sur l'écran de connexion et vous pouvez «sudo» en utilisant cette méthode.
HidekiAI
3

Un utilisateur dans / etc / passwd avec le répertoire personnel de / dev / null et le shell de / sbin / nologin, peut être utilisé pour les commandes de sudoing, mais ne peut pas réellement être connecté, par exemple;

de mon / etc / passwd

tcpdump:x:104:441:added by portage for tcpdump:/dev/null:/sbin/nologin

Je me souviens à moitié que cela le fera disparaître également de l'écran de connexion XDM, mais je n'utilise plus XDM, c'est donc une supposition :-)

Chris Huang-Leaver
la source
C'est la bonne réponse parce que l'OP a demandé un compte que vous ne pouvez pas «sudo» ou afficher sur «écran de connexion», en définissant «/ sbin / nologin» pour shell. Une chose à noter est que l'OP a demandé "utilisateur système", devrait également mentionner que 'useradd --system' devrait être utilisé pour créer un UID en petit nombre (comme le fait portage / ebuild)
HidekiAI
3

Vous pouvez utiliser usermod, ce qui désactivera le mot de passe en utilisant un !plutôt qu'un *.

usermod -L <username>

Depuis la page de manuel sur usermod:

-L, --lock Lock a user's password. This puts a '!' in front of the encrypted password, effectively disabling the password.
Jordan Mack
la source
2

L'utilisation dscldonnerait

dscl . -passwd /Users/myuser ""
Raffi
la source
Contrairement à la plupart des réponses ci-dessus, cela a réellement fonctionné pour moi.
GroovyCakes
1

Je ne peux pas être sûr d'OSX, mais sur FreeBSD vous pouvez utiliser:

pw add user mymuser -g mygroup -s /nonexistent -h -

la valeur de -passé à l' -hoption indique pwde définir le champ de mot de passe dans master.passwd sur *, créant ainsi un compte sans connexion. La définition du shell n'est pas strictement nécessaire, mais évite une vérification du shell à partir de /etc/pw.conf.

gvkv
la source
1

Laisser le champ de mot de passe vide pour l'utilisateur dans le passwdfichier fonctionnera.

Nikhil Mulley
la source
-1

Sous Linux j'utilise:

sudo useradd -r -p \* -s /sbin/nologin -c "Comment My Daemon,,,"  -d "/var/uuu"  myuser

L'alternative suivante doit être plus multiplateforme (si l' -roption n'est pas disponible):

sudo useradd -K UID_MIN=100 -K UID_MAX=499 -K GID_MIN=100 -K GID_MAX=499 -p \* -s /sbin/nologin -c "Comment My Daemon,,,"  -d "/var/uuu"  myuser

Ici:

  • le mot de passe dans / etc / shadow sera défini sur *. Sans -p \*ce sera!

  • le shell sera /sbin/nologin(Vous pouvez /bin/falseaussi l' utiliser , mais je pense que le /binpeut être monté trop tard sur certains systèmes). L'utilisateur ne peut donc pas se connecter

  • -d définit le homedir de l'utilisateur

NOTE IMPORTANTE

Ici -rcrée un utilisateur système:

Cet indicateur est utilisé pour créer un compte système. C'est-à-dire un utilisateur avec une UIDvaleur inférieure à la valeur UID_MINdéfinie dans /etc/login.defs et dont le mot de passe n'expire pas. Notez que useradd ne créera pas de répertoire personnel pour un tel utilisateur, quel que soit le paramètre par défaut dans /etc/login.defs . Vous devez spécifier une -moption si vous souhaitez créer un répertoire personnel pour un compte système. Il s'agit d'une option ajoutée par Red Hat .

L'option -rn'est peut-être pas présente sur votre système. Donc, pour créer un utilisateur système, qui ne s'affiche pas sur votre écran de connexion, je pense que vous pouvez utiliser l' -Koption. Quelque chose comme: -K UID_MIN=100 -K UID_MAX=499. Vous pouvez essayer une option comme:

-K UID_MAX=$(cat /etc/login.defs | grep ^UID_MIN | awk '{print $2}')

pour vous déterminer automatiquement UID_MAX, mais je n'ai pas testé sur OS X. Vous aurez besoin de l'utiliser SYS_UID_MAXpour UID_MINs'il n'est pas commenté dans /etc/login.defs

Il en va de même pour GID_MAXet GID_MINpour l'ID de groupe de systèmes. (Voir GID_MINet si non commentéSYS_GID_MAX dans /etc/login.defs à utiliser comme GID_MAX)

Роман Коптев
la source