Question Comment empêcher un utilisateur de se connecter, tout en autorisant «su - user» sous Linux?


Comment autoriser un utilisateur à se connecter avec "su -  utilisateur"mais empêcher l'utilisateur de se connecter en utilisant SSH?

J'ai essayé de mettre la coquille à /bin/false mais quand j'essaie de su ça ne marche pas.

Existe-t-il plusieurs façons d’autoriser les connexions uniquement par su?

Est-ce que SSH AllowUser le chemin à parcourir? (comment ferais-je si c'est la voie à suivre)


86
2018-06-09 15:13


origine




Réponses:


Vous pouvez utiliser AllowUsers / AllowGroups si vous avez seulement quelques utilisateurs / groupes autorisés à vous connecter via ssh ou DenyUsers / DenyGroups si vous avez seulement quelques utilisateurs / groupes qui sont ne pas autorisé à se connecter. Notez que cela ne limite que la connexion via ssh, d'autres méthodes de connexion (console, ftp, ...) sont toujours possibles. Vous devez ajouter ces options à votre / etc / ssh / sshd_config fichier pour la plupart des installations ssh.

Si vous avez défini le shell de connexion sur / bin / false vous pouvez utiliser su -s /bin/bash user (remplacer / bin / bash avec la coque de votre choix)


108
2018-06-09 15:40



merci beaucoup à tous. Je ne m'attendais pas à avoir plus de 2 votes positifs sur ma question :) J'aime le "su -s ..." construire beaucoup et la console / ftp est un bon point. J'étais vraiment après quelque chose comme "su-s". - NoozNooz42
L'astuce de su-s est d'or. Je l'utilise tout le temps pour les comptes système pour lesquels je dois tester des autorisations, par exemple, apache, personne, etc. Je fais généralement su - utilisateur -s / bin / bash. L'argument optionnel - peut être utilisé pour créer un environnement similaire à celui auquel l'utilisateur s'attendait s'il était connecté directement. - dmourati
Si vous avez besoin de charger des variables d’environnement (par exemple, à partir de / etc / profile), un tiret supplémentaire le fera: su - -s /bin/bash user - Leons


Si vous voulez toujours que su marche, vous pouvez utiliser sudo -u [username] ou passe -s /bin/bash à su comme une coquille temporaire. Ils font tous les deux la même chose en l'absence d'un obus /etc/passwd.


13
2018-02-18 10:04





Si un compte n'a pas de mot de passe (passwd -d nom d'utilisateur), ils ne peuvent pas se connecter de manière interactive (console, SSH, etc.). S'ils ont un shell valide, su fonctionnera toujours. Notez le "interactivement", cependant; si quelqu'un décide de configurer une paire de clés SSH pour le compte, cela fonctionnera!


7
2018-06-09 15:53



l'utilisateur a-t-il besoin d'un shell valide pour exécuter su? Je suis à peu près sûr que vous êtes toujours dans le même shell original après que vous ayez assigné un autre utilisateur ... vous ne vous connectez pas réellement en tant qu'autre utilisateur ... Donc, définir simplement le shell sur / dev / null pourrait fonctionner ainsi que. - Brian Postow
Oui, il a toujours besoin d'un shell valide: [root @ localhost ~] # su daemon Ce compte n'est pas disponible pour le moment. [root @ localhost ~] # su - daemon Ce compte n'est pas disponible pour le moment. (Le système RHEL, le shell du démon est / sbin / nologin) - astrostl


Dans sshd_config, ajoutez une ligne DenyUser [username]

Notez que cela n'empêchera pas cet utilisateur de se connecter via la console.


3
2018-06-09 15:28



Ça devrait être DenyUsers, avec un 's'. - David G


En plus de ce qui a été mentionné ci-dessus (désactiver et / ou ne pas définir le mot de passe de l'utilisateur), le module pam_access (page de manuel de pam_access et access.conf) peut être utilisé pour contrôler l'accès à la connexion.


2
2017-09-27 22:16





comme d'autres l'ont dit;

DenyUser username ou DenyGroup groupname dans sshd_config empêcherait la connexion clé / mot de passe via ssh.

bien que je fasse habituellement quelque chose comme AllowGroup ssh ou quelque chose du genre, et ajoutez explicitement les personnes qui ont besoin d’un accès ssh à ce groupe.

alors, vous pouvez faire ce que les autres ont dit: passwd -d username pour effacer le mot de passe des utilisateurs afin qu'ils ne puissent pas se connecter à la console ou autrement. ou mieux encore passwd -l username pour verrouiller le compte. il est possible que ssh refuse l'accès à un compte verrouillé, même avec des clés, mais je ne suis pas positif.


1
2018-06-09 16:15



En fait, ssh vous permettra de vous connecter en utilisant l’authentification par clé même lorsque le mot de passe du compte est verrouillé. - Richard Holloway
Bon à savoir, merci pour la clarification ... - cpbills


Comme je l'ai mentionné dans un commentaire, je pense que vous pouvez toujours créer un compte avec un shell non valide. Donc, si vous définissez le shell de l'utilisateur sur / dev / null ou quel que soit le shell de bin, vous devriez pouvoir continuer à utiliser cet utilisateur ... mais toute tentative de connexion de quelque manière que ce soit vous fera quitter ...


1
2018-06-09 16:26





éditez / etc / shadow en ajoutant! au début du hash du mot de passe.

username:!<hash>:#####:#:#####:#:::

Lors de la sécurisation d’une nouvelle installation, c’est la première chose que je fais après l’installation de sudo. Par conséquent, personne ne peut utiliser l’utilisateur root pour se connecter ou se connecter au système, les utilisateurs sudo peuvent toujours s’exécuter en tant qu’utilisateur root.


1
2017-12-31 01:38





Ne spécifiez pas de mot de passe pour l'utilisateur non autorisé à se connecter ou à le supprimer.

# passwd -d myuser

0
2018-06-09 15:50