- Создаем группу
groupadd admin
- Добавляем туда пользователя
usermod -aG admin test_user
- Устанавливаем компонент, с помощью которого мы сможем описывать правила входа в виде обычного bash скрипта
yum install pam_script -y
- Можем посмотреть какие файлы использует этот компонент
rpm -ql pam_script
[root@lvm ~]# rpm -ql pam_script
/etc/pam-script.d
/etc/pam_script
/etc/pam_script_acct
/etc/pam_script_auth
/etc/pam_script_passwd
/etc/pam_script_ses_close
/etc/pam_script_ses_open
/lib64/security/pam_script.so
/usr/share/doc/pam_script-1.1.8
/usr/share/doc/pam_script-1.1.8/AUTHORS
/usr/share/doc/pam_script-1.1.8/COPYING
/usr/share/doc/pam_script-1.1.8/ChangeLog
/usr/share/doc/pam_script-1.1.8/NEWS
/usr/share/doc/pam_script-1.1.8/README
/usr/share/doc/pam_script-1.1.8/README.pam_script
/usr/share/man/man7/pam-script.7.gz
- Приводим файл
/etc/pam.d/sshd
к следующему виду и добавляем строкуauth required pam_script.so
:
#%PAM-1.0
auth required pam_script.so # Добавляем сюда эту строку
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
# Used with polkit to reauthorize users in remote sessions
-auth optional pam_reauthorize.so prepare
account required pam_access.so
account required pam_time.so
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
# Used with polkit to reauthorize users in remote sessions
-session optional pam_reauthorize.so prepare
- Далее приводим файл
/etc/pam_script
к следующему виду: (у файла должны быть права на исполнение)
#!/bin/bash
if [[ `grep $PAM_USER /etc/group | grep 'admin'` ]]
then
exit 0
fi
if [[ `date +%u` > 5 ]]
then
exit 1
fi
В этом файле мы проверяем состоит ли пользователь в группе admin и, если да, то пускаем его (значит его можно пускать всегда). Если он не состоит в этой группе то срабатывает проверка на то, какой сейчас день недели, если он больше 5, т.е. выходные, то не пускаем.
Проверяем доступ:
Убираем пользователя из группы admin командой sudo gpasswd -d test_user admin
И получаем такой результат: