Puis-je autoriser un utilisateur non root à se connecter lorsque / etc / nologin existe?


8

Supposons qu'un utilisateur non root avec les privilèges sudo exécute un arrêt différé ( shutdown +10ou autre) et se déconnecte. Puis, avant l'arrêt, il souhaite se reconnecter et annuler l'arrêt. Le problème est que cela shutdowncrée /etc/nologinet loginne permet à root de se connecter que lorsque ce fichier existe ... est-il possible de créer une exception à partir de cela pour un utilisateur?

Sinon, quelle serait la meilleure façon de laisser un utilisateur initier un arrêt différé, puis de se connecter et de l'annuler ultérieurement?


On pourrait peut-être utiliser shutdown nowle atplanificateur comme solution de contournement.
jw013

Réponses:


14

Si votre système utilise PAM , le refus de connexion lorsqu'il /etc/nologinexiste est déclenché par le pam_nologinmodule .

Vous pouvez ignorer l' pam_nologinappel pour les utilisateurs répondant à certains critères avec pam_succeed_if. Par exemple, si vous souhaitez autoriser les utilisateurs du admgroupe à se connecter sur une console de texte même si elle /etc/nologinexiste, ajoutez la ligne suivante /etc/pam.d/loginjuste avant la ligne avec auth requisite pam_nologin.so:

auth [default=ignore success=1] pam_succeed_if.so quiet user ingroup adm

2

La réponse de Gilles ci-dessus est très bonne, mais notez que vous devez faire correspondre le "type" avec le type de pam_nologin.so. Ainsi, par exemple, sur mon système RHEL5:

account [default=1 success=ignore] pam_succeed_if.so quiet user ingroup nx
account required     pam_nologin.so

... si j'utilisais l'auth, comme l'autre réponse le demandait, ça ne marcherait pas.


2

La version de Vesa K de la réponse de Ryan Novosielski fonctionne pour moi, mais les lignes sont en:

/etc/pam.d/sshd

ne pas:

/etc/pam.d/login

Dans mon cas, je veux juste que l'UID 1000 sous Ubuntu 14.04 LTS soit autorisé à se connecter via SSH.

# Disallow non-root logins when /etc/nologin exists.
account [success=1 default=ignore] pam_succeed_if.so quiet uid eq 1000
account    required     pam_nologin.so

1

Je ne sais pas s'il est possible de remplacer la /etc/nologincréation / l'utilisation sans trucs sales. Mais pour votre objectif, vous pouvez utiliser une fonction comme celle-ci:

off () { 
   touch /tmp/GOING-DOWN
   sudo sh -c "sleep ${1-1} && [ -f /tmp/GOING-DOWN ] && /sbin/poweroff"
}

Lors de la reconnexion, la suppression du fichier /tmp/GOING-DOWNempêchera l'arrêt.

modifier : Ajout d'un moyen simple pour annuler l'arrêt.


0

J'ai essayé la règle de Ryan aujourd'hui et j'ai découvert que les réponses des robots de Gils et de Ryan ont des règles de réussite / par défaut "inversées", nologin bloque uniquement le groupe nx. C'est ainsi que j'ai implémenté cette règle (le groupe nx n'est pas bloqué par nologin).

account [success=1 default=ignore] pam_succeed_if.so quiet user ingroup nx
account required     pam_nologin.so
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.