103 votes

Comment empêcher un utilisateur de se connecter, mais autoriser "su - user" sous Linux ?

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

J'ai essayé de régler le Shell sur /bin/false mais quand j'essaie de su ça ne marche pas.

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

Est-ce que SSH AllowUser la voie à suivre ? (comment dois-je m'y prendre si c'est la voie à suivre)

115voto

Florian Diesch Points 1784

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

Si vous avez mis le login Shell à /bin/false vous pouvez utiliser su -s /bin/bash user (remplacer /bin/bash avec le Shell de votre choix)

0 votes

Merci beaucoup à tous. Je ne m'attendais pas à recevoir plus de deux votes positifs sur ma question :) J'aime le "su -s ..." construire beaucoup et la console/ftp est un bon point. Je cherchais vraiment quelque chose comme "su -s".

4 votes

L'astuce su -s est géniale. Je l'utilise tout le temps pour les comptes système pour lesquels je dois tester les permissions, par exemple, apache, nobody, etc. Je fais habituellement su - user -s /bin/bash. L'argument facultatif - peut être utilisé pour fournir un environnement similaire à celui auquel l'utilisateur pourrait s'attendre s'il se connectait directement.

2 votes

Si vous avez besoin que les variables d'environnement (par exemple de /etc/profile) soient chargées, passer un tiret supplémentaire le fera : su - -s /bin/bash user

14voto

Loke Points 139

Si vous voulez toujours que su fonctionne, vous pouvez utiliser sudo -u [username] ou passer -s /bin/bash à su comme un Shell temporaire. Ils font tous les deux la même chose en l'absence d'une Shell dans le système d'exploitation. /etc/passwd .

10voto

astrostl Points 680

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 !

0 votes

Est-ce que l'utilisateur doit avoir un Shell valide pour su ? Je suis presque sûr que vous êtes toujours dans la même Shell d'origine après avoir su vers un autre utilisateur... vous ne vous connectez pas réellement comme l'autre utilisateur... Donc, juste mettre le Shell à /dev/null pourrait fonctionner aussi bien.

0 votes

Oui, il a toujours besoin d'un Shell valide : [root@localhost ~]# su daemon Ce compte n'est actuellement pas disponible. [root@localhost ~]# su - daemon Ce compte n'est actuellement pas disponible. (Système RHEL, le Shell de daemon est /sbin/nologin)

3voto

frameworkninja Points 628

Dans sshd_config, ajoutez une ligne DenyUser [username]

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

1 votes

Cela devrait être DenyUsers avec un "s".

2voto

JAB Points 11053

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 (consultez la page de manuel sur pam_access et access.conf) peut être utilisé pour contrôler l'accès à la connexion.

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