Когда пользователь входит в систему, а домашний каталог отсутствует, мы хотим создать домашний каталог пользователя, используя pam_mkhomedir . Это обычная практика. Вот краткое описание pam_mkhomedir:
PAM-модуль pam_mkhomedir создаст домашний каталог пользователя, если он не существует в начале сеанса. Это позволяет пользователям присутствовать в центральной базе данных (такой как NIS, kerberos или LDAP) без использования распределенной файловой системы или предварительного создания большого количества каталогов. Директория скелета (обычно / etc / skel /) используется для копирования файлов по умолчанию, а также устанавливает umask для создания.
Однако это система FreeBSD 8.2 с ZFS. Сначала нам нужно выполнить команду ZFS, потому что нам нужна одна файловая система ZFS на пользователя . pam_mkhomedir
можно сделать mkdir
, но нам нужно сделать что-то вроде zfs create /zpool/home/$USER
.
Кто-нибудь знает, возможно ли использовать PAM для выполнения команд во время первого сеанса входа пользователя?
Ответы:
Существует модуль PAM, который называется
pam_exec
- если вы пишете скрипт, который проверяет и / или создает том ZFS, вы можете связать его с вашими существующими правилами PAM и сохранить все в порядке, не предполагая интерактивный вход в систему, стандартные оболочки и каталоги скелетов и т. Д. Например, вы могли бы иметьили что-то, что подходит для вашей конкретной установки.
(Как отметил Том Шоу в комментариях, наличие
session required pam_mkhomedir.so
было бы излишним.)источник
Стоит отметить, что, как и было задано, ваш вопрос содержит неверное предположение: даже PAM понятия не имеет, является ли это первым логином пользователя; он только знает, есть ли у пользователя домашний каталог или нет.
Итак, учитывая это предостережение, это не PAM, но вы можете легко выполнить что-то из команды
/etc/bashrc
, которой предшествует проверка, а затем отбрасывание точечного файла в домашнем каталоге пользователя. Нужны root привилегии? Либо соответствующим образом заблокированныйsudo
, либо двоичный файл setuid, скорее всего, подойдет вам лучше всего. Обе опции также дают вам возможность поместить дотфайл куда-нибудь, где пользователь не сможет изменить или удалить его (если вам небезразличны такие вещи).источник
Итак, у вас есть два варианта:
1) Измените исходный код pam_mkhomedir, чтобы сначала создать файловую систему zfs, прежде чем создавать каталог. 2) позвольте pam_mkhomedir работать как обычно, затем добавьте скрипт, чтобы проверить и увидеть, есть ли папки в собственной файловой системе zfs, где пользователь вышел из системы. Когда вы поймете эти случаи, переместите каталог / home, создайте файловую систему, затем переместите файлы обратно в каталог.
Я подозреваю, что оставление пользователя на главной / домашней странице в течение начального дня не вызовет слишком много проблем, поэтому я бы выбрал последний вариант, более простой.
источник