Posso consentire a un utente non root di accedere quando esiste / etc / nologin?


8

Supponiamo che un utente non root con privilegi sudo esegua un arresto ritardato ( shutdown +10o qualsiasi altra cosa) e si disconnette. Quindi, prima che si verifichi l'arresto, desidera accedere nuovamente e annullare l'arresto. Il problema è che shutdowncrea /etc/nologine loginconsente a root di accedere solo quando quel file esiste ... è possibile creare un'eccezione da questo per un utente?

In caso contrario, quale sarebbe il modo migliore per consentire a un utente di avviare un arresto ritardato, quindi accedendo e annullandolo in un secondo momento?


Si potrebbe forse usare shutdown nowcon lo atscheduler come soluzione alternativa.
jw013

Risposte:


14

Se il sistema utilizza PAM , il rifiuto di accesso quando /etc/nologinesiste viene attivato dal pam_nologinmodulo .

È possibile saltare la pam_nologinchiamata per gli utenti che soddisfano determinati criteri con pam_succeed_if. Ad esempio, se si desidera consentire agli utenti del admgruppo di accedere a una console di testo anche se /etc/nologinesiste, aggiungere la seguente riga /etc/pam.d/loginappena prima della riga con auth requisite pam_nologin.so:

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

2

La risposta di Gilles sopra è molto buona, ma nota che devi abbinare il "tipo" al tipo di pam_nologin.so. Ad esempio, sul mio sistema RHEL5:

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

... se avessi usato auth, come richiesto dall'altra risposta, non avrebbe funzionato.


2

La versione di Vesa K della risposta di Ryan Novosielski funziona per me, ma le linee sono in:

/etc/pam.d/sshd

non:

/etc/pam.d/login

Nel mio caso, voglio solo che UID 1000 in Ubuntu 14.04 LTS sia autorizzato ad accedere tramite 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

Non sono sicuro se è possibile sovrascrivere la /etc/nologincreazione / l'utilizzo senza trucchi sporchi. Ma per il tuo scopo, puoi usare una funzione come questa:

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

Dopo il nuovo accesso, l'eliminazione del file /tmp/GOING-DOWNimpedirà l'arresto.

modifica : aggiunto un modo semplice per annullare l'arresto.


0

Ho provato la regola di Ryan oggi e ho scoperto che il bot delle risposte di Gils e Ryan ha "invertito" le regole di successo / default, nologin blocca solo nx-group. Ecco come ho implementato questa regola (il gruppo nx non è bloccato da nologin).

account [success=1 default=ignore] pam_succeed_if.so quiet user ingroup nx
account required     pam_nologin.so
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.