Можно ли удаленно отменить запланированное отключение при наличии / run / nologin?

Рассмотрим этот сценарий:

  1. Пользователь ssh в систему и делает все, что он / она хочет.
  2. Затем планирует shutdown с помощью:

     sudo shutdown -h +1 
  3. Окончательно закрывает сессию ssh

Теперь /run/nologin был создан, и никто больше не может войти в систему, но что-то появляется, и мы хотим вернуться в систему через ssh прежде чем она выйдет из строя.

Можно ли удаленно отменить запланированное отключение, когда нам больше не разрешено входить в систему?

Помимо использования учетной записи «root» для создания нового ssh соединения, мы на самом деле можем использовать PAM для разрешения входа определенных пользователей или групп.

Конфигурации PAM sshd находятся по адресу: /etc/pam.d/sshd которые отвечают за то, что вы ищете.

Редактируя этот файл и используя файл pam_succeed_if.so мы можем разрешить конкретному пользователю или группе войти в систему, даже если на компьютере существует /run/nologin .

pam_succeed_if.so предназначен для успешной или неудачной аутентификации на основе характеристик учетной записи, принадлежащей аутентифицируемому пользователю, или значений других элементов PAM. Один из вариантов – выбрать, загружать ли другие модули на основе этого теста.

Поэтому мы используем его для определения того, что мы должны загружать модуль pam_nologin.so или нет, основываясь на вашем имени пользователя или группе пользователей.

Откройте файл, используя ваш любимый текстовый редактор:

 $ sudo vi /etc/pam.d/sshd 

И найдите эти строки:

 # Disallow non-root logins when /etc/nologin exists. account required pam_nologin.so 

Добавьте эту строку между ними:

 account [default=1 success=ignore] pam_succeed_if.so quiet user notingroup sudo 

Так что теперь строки должны выглядеть так:

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

Теперь пользователи, которые входят в группу sudo могут войти в систему, даже если существует /run/nologin .

И чтобы разрешить конкретному пользователю:

 account [default=2 success=ignore] pam_succeed_if.so quiet user != username 

Для более гибких условий оформления заказа:

 man pam_succeed_if 

Если root может удаленно войти в систему, nologin игнорируется. Тем не менее, большинство здравомыслящих администраторов не разрешают root для удаленного входа в систему в пользу авторизованного пользователя, который входит в систему и использует sudo . Однако, если это не так, root может войти в систему и прервать завершение работы.

nologin игнорируется для пользователя root. Таким образом, вы можете использовать SSH для подключения от имени пользователя root, но, вероятно, у вас есть дистрибутив, который по умолчанию не разрешает вход с правами root. Вы можете создать ключ SSH и поместить его в ~root/.ssh/authorized_keys , затем вы можете войти с этим ключом как root.