touch /etc/nologin chmod 644 /etc/nologin
Если необходимо вернуться к старому порядку, удалите файл nologin следующим образом:
rm /etc/nologin
Описанная методика используется для отключения всех пользователей, кроме пользователя root. Если нужно временно отключить некоторые учетные записи, можно обратиться к файлу /etc/passwd, а в качестве первого символа в поле пароля следует указать символ *. Однако такой подход применяется редко, и если пользователь недостаточно четко выполняет все действия, можно столкнуться с проблемами при работе всей системы.
Linux располагает утилитой, с помощью которой в файл login.access вводятся имена пользователей и групп. Этот файл предназначен для предоставления доступа к системе.
Рассмотрим версию утилиты под названием deny.access. Сценарий, который выполняется из файла /etc/profile, просматривает файл lockout.user. Этот файл включает имена пользователей, в регистрации которых вы не заинтересованы. Если в файле присутствует слово "all", доступ запрещается всем пользователям, кроме пользователя root.
Ниже приводится пример файла lockout.user. Этот файл может включать строки комментария.
$ pg lockout.users
#lockout.users
#поместите в этот файл имена пользователей по вашему усмотрению
#снятие системной блокировки
#Удалите из этого файла имена пользователей, чтобы пользователи могли
#вернуться назад.
#peter находится в долговременном отпуске и вернется в следующем месяце
peter
#lulu отсутствует две недели, вернется в конце месяца
lulu
dave
pauline
Рассмотрим, как функционирует сценарий. Сначала выполняется команда trap для игнорирования сигналов. Вследствие этого пользователь не может прервать выполнение сценария. Если имеется файл lock.users, сценарий продолжает выполняться. Первым делом проверяется наличие слова "alf" Если это слово присутствует, тогда не принимаются во внимание имена всех пользователей из данного файла. Не следует применять строку комментария для устранения влияния слова "all"; этот путь не приведет к успеху. Однако можно устранить из комментария имена пользователей.
Если обнаружена запись "all", блокируются имена всех пользователей, кроме пользователя root. Чтобы удостовериться в том, что найдено точное соответствие шаблону, применяют шаблон all\> команды grep. На экран для пользователей системы выводится сообщение о том, что система в данный момент недоступна.
Основной функцией является функция get_users. Она реализует просмотр файла lockout.users, причем игнорируются все строки, начинающиеся с символа хэша. Выполняется сравнение имен и проверяется, что имя пользователя root не содержится в файле. В результате этого имя пользователя root блокируется.
Регистрационное имя пользователя, находящегося в текущий момент в системе, извлекается из переменной LOGNAME и сравнивается со значением переменной names. Переменная names сохраняет имя текущего пользователя из просматриваемого файла lockout.users. Если совпадение найдено, значение переменной LOGNAME отображается вместе с сообщением. Затем пользователь завершает работу сценария.
Этот сценарий выполнялся на нескольких машинах, которые охватывали до 40 пользователей. Во время процесса регистрации скорость выполнения сценария была довольно высока. Сценарий использовался с целью временной блокировки доступа для тех пользователей, которые отсутствовали более недели. Кроме того, доступ для отдельных пользователей блокировался ежедневно на определенное время, в течение которого обновлялись жизненно важные системы.
В файл /etc/profile следует поместить следующую строку. Эта строка может быть размешена в конце файла, тогда пользователи получат возможность просматривать это сообщение первым среди дополнительных сведений.
. /apps/bin/deny.access
Каталог /apps/bin является областью, где можно хранить все глобальные сценарии. Возможно применение другой области, однако при этом следует убедиться в том, что каждый пользователь может выполнить этот сценарий и воспользоваться каталогом, в котором он находится.
Если получено сообщение об ошибке "permission denied" ("разрешения нет"), значит, сценарий или каталог не имеют достаточного уровня разрешения.
В данном случае файл lockout.users находится в каталоге /apps/etc. Этот каталог можно изменить, поскольку ваша структура наверняка отличается от рассматриваемой. Поскольку файл является исходным, с помощью команды set можно просматривать код функции (но не фактический файл lockout.users). Если это затруднительно, примените команду unset для удаления функции после ее выполнения. Поместите команду unset непосредственно после обращения к сценарию в файл /etc/profile. Например: