Могу ли я разрешить пользователю без полномочий root регистрироваться, когда существует / etc / nologin?

Предположим, что пользователь без полномочий root с привилегиями sudo выполняет отложенное завершение ( shutdown +10 или что-то еще) и выходит из системы. Затем, прежде чем завершить работу, он хочет вернуться в систему и отменить выключение. Проблема заключается в том, что shutdown создает /etc/nologin , и login позволяет root регистрироваться только тогда, когда этот файл существует … возможно ли создать исключение для этого пользователя?

Если нет, то каким будет лучший способ позволить пользователю инициировать отложенное завершение работы, а затем войти в систему и отменить ее позже?

    Если ваша система использует PAM , отказ в регистрации при /etc/nologin инициируется модулем pam_nologin .

    Вы можете пропустить вызов pam_nologin для пользователей, соответствующих определенным критериям, с помощью pam_succeed_if . Например, если вы хотите разрешить пользователям в группе adm входить в текстовую консоль, даже если /etc/nologin существует, добавьте следующую строку в /etc/pam.d/login непосредственно перед строкой с параметром auth requisite pam_nologin.so :

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

    Я не уверен, возможно ли переопределить создание / использование /etc/nologin без грязных трюков. Но для вашей цели вы можете использовать такую ​​функцию:

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

    При повторной регистрации удаление файла /tmp/GOING-DOWN предотвратит выключение.

    edit : Добавлен простой способ отменить выключение.

    Ответ Гилле выше, очень хорошо, но обратите внимание, что вы должны соответствовать типу с типом pam_nologin.so. Так, например, в моей системе RHEL5:

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

    … если я использовал auth, как просил другой ответ, это не сработало.

    Версия Vesa K's версии ответа Райана Новосильского работает для меня, но линии находятся в:

     /etc/pam.d/sshd 

    не:

     /etc/pam.d/login 

    В моем случае я просто хочу, чтобы UID 1000 под Ubuntu 14.04 LTS разрешалось входить в систему через 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 

    Сегодня я попробовал правило Райана и выяснил, что у ботов Gils's и Ryan есть правила успеха / по умолчанию, «отмененные», nologin блокирует только nx-группу. Вот как я применил это правило (nx-группа не блокируется nologin).

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