Pam mount
Автоматическое монтирование сетевых ресурсов с помощью pam_mount
Введение
PAM(Pluggable Authentication Modules) - подключаемые модули аутентификации. Они позволяют произвести аутентификацию пользователя, управлять распределением системных ресурсов, а так же выполнять какие-либо операции перед тем, как пользователь получит доступ к системным службам.
Одним из таких модулей является pam_mount, который позволяет автоматически монтировать сетевые ресурсы, включая зашифрованные, при логине пользователя в систему.
Установка
yum install pam_mount или apt-get install pam_mount (нужное подчеркнуть).
Общие положения
Для работы pam_mount необходимо подключить его, определив в /etc/pam.d/auth*.
Все инструкции, в которых указывается "что" и "для какого пользователя" хранятся в виде обычного xml-файла в /etc/security/pam_mount.conf.xml. Настройки хранящиеся в этом файле едины для всех пользователей, если нужно определить индивидуальные настройки для конкрентного пользователя, то они задаются в домашнем каталоге пользователя в файле .pam_mount.conf.xml (он обязатьно должен быть скрытым).
*/etc/pam.d/auth - в разных системах файл описывающий подключение pam-модулей обслуживающих авторизацию пользователя называются по разному: /etc/pam.d/auth - Debian /etc/pam.d/login - Ubuntu /etc/pam.d/system-auth - Mandriva, ALT Linux.
Подключение pam_mount
Модуль должен подключаться в файле описывающем авторизацию пользователя в системе(все в контексте /etc/pam.d), на примере ALT Linux это /etc/pam.d/system-auth:
auth optional pam_mount.so ## обязательно в секции auth, потому что для подключения некоторых сетевых ресурсов требуется пароль(smbfs/cifs,ftp), который вводится при авторизации auth required pam_tcb.so shadow fork prefix=$2a$ count=8 nullok use_first_pass ## последний параметр говорит использовать пароль, который вводился для первого описаного модуля. account required pam_tcb.so shadow fork password required pam_passwdqc.so config=/etc/passwdqc.conf session required pam_tcb.so session required pam_mktemp.so session required pam_limits.so session optional pam_mount.so ## в секции session, для подключения самой сетевой шары.
Настройка pam_mount
pam_mount.conf.xml находится в /etc/security
pam_mount.conf.xml - это простой xml-файл, который делится на 2-и основных секции:
1) определение монтируемых ресурсов
2) специфичные опции
определение монтируемых ресурсов
Описание подключаемого сетевого ресурса заключается в тег <volume />, в нем через пробел указываются:
имя пользователя(user="наш_пользователь") тип файловой системы(fstype="тип_фс") ## nfs,smbfs,cifs,ncpfs,fuse,encfs13 сетевой адрес сервева(server="адрес_севрева") ## dns имя или ip сетевая шара(path="/путь/до/шары") ## для nfs ресурса это путь до шары, для cifs ресурса это название ресурса. точка монтирования(mountpoint="/путь_до_точки_монтирования") опции options="..." ## как правило это опции для cifs ресурса
Таким образом строка для монтирования ресурса может выглядеть так:
<volume user="test" fstype="nfs" server="test" path="/net/test" mountpoint="/mnt/nfs" /> ## Так монтируется nfs ресурс <volume user="test" fstype="cifs" server="test" path="common_share" mountpoint="/mnt/cifs" options="iocharset=utf8,rw,wine,noperm" /> ## Пароль для cifs ресурса не указывается, его вводят при логине в системе.
специфичные опции
<debug enable="1" /> ## включить дебаг
<logout wait="микросекунды" hup="yes/no" term="yes/no" kill="yes/no" /> ## Как зеавершать процесы при разлогинивании пользователя. Можно запретить убивать процессы, работающие по смонтированной фс, что позволит при случайном обрыве конекта завершить корректно процесс.
<luserconf name=".pam_mount.conf.xml" /> ## Позволяет определить имя файла пользовательского pam_mount.conf
<mntoptions allow="options,..." /> ## Определяет какие опции разрешены в пользовательском pam_mount.conf <mntoptions deny="options,..." /> ## Определяет какие опции запрещены в пользовательском pam_mount.conf <mntoptions require="options,..." /> ## Определяет какие опции должны присутствовать в пользовательском файле pam_mount.conf <path>directories...</path> ## Определяет окружение пользователя <mkmountpoint enable="1" remove="true" /> ## Определяет надо ли создавать точку монтирования при логине и удалять ее при разлогинивании.
Так же допускается использование макропеременных:
%(USER) ## Логин пользователя %(DOMAIN_NAME) и %(DOMAIN_USER) ## при работе через winbind %(USERUID) и %(USERGID) ## uid и gid пользователя %(GROUP) ## имя группы для %(USERGID).
Таким образом эти макропеременные можно использовать для указания каталога монтирования и определенных опций:
<volume user="test" fstype="nfs" server="test" path="/net/test" mountpoint="/home/%(USER)" /> <volume user="test" fstype="cifs" server="test" path="common_share" mountpoint="/home/%(USER)" options="iocharset=utf8,rw,wine,noperm,uid=%(USERUID),gid=%(USERGID)" />