Как сделать так, чтобы при первом входе в систему домашний каталог зашифровывался у всех пользователей?
Я настроил pam для использования аутентификации Kerberos и авторизации LDAP (что, на мой взгляд, не должно эффект на ecryptfs).
Я также настроил pam-mkhomedir для создания домашних каталогов из / etc / skel, в который я поместил несколько стандартных конфигураций.
Если посмотреть на каталог .ecryptfs в одной учетной записи пользователя, для которого уже включена поддержка ecryptfs, есть некоторые пользовательские конфигурации, такие как точка монтирования (например, / home / d_inevitable), которая не годится для / etc /skel.
Также необходимо скопировать конфигурации в / etc / skel после того, как домашний каталог был смонтирован с помощью ecryptfs.
Мне удалось заставить это работать с помощью pam_exec:
Создайте сценарий для установки ecryptfs для всех новых пользователей в /etc/security/ecryptfs
:
#!/bin/bash
home=`eval echo ~$PAM_USER`
ecryptfs=/home/.ecryptfs/$PAM_USER/.ecryptfs
read password
if [ -d $ecryptfs ]; then
# ecryptfs is set
echo "Ecryptfs is already configured"
exit 0
elif [ `id -u` == 0 ]; then
# Setup ecryptfs and make home
umask 077
mkdir -p $home
group=`id -gn $PAM_USER`
chown $PAM_USER:$group $home
ecryptfs-setup-private -u $PAM_USER -l "$password" -b --nopwcheck
exit 0
else
# NOT ROOT
echo "Cannot login with 'su' for the first time"
exit 1
fi
Удостоверьтесь, что сценарий является исполняемым файлом:
sudo chmod a+rx /etc/security/ecryptfs
Добавьте запись для выполнения его с pam_exec на авторе:
sudo vim /etc/pam.d/common_auth
Добавьте следующие строки:
auth required pam_exec.so expose_authtok /etc/security/ecryptfs
auth optional pam_ecryptfs.so unwrap
pam_exec
установлен на необходимый, потому что это не установит ecryptfs, если сценарий не будет работать как корень. Дело обстоит так, если su
используется от некорневого пользователя. Таким образом, если ecryptfs не является установкой и su
используется (это - когда пользователь пытается войти во впервые использование su
) затем его будет отказан. Как таковой мы удостоверяемся, что пользователь не может войти в систему без установки ecryptfs.
Создайте другой сценарий для заполнения корневого каталога вместо pam_mkhomedir
sudo vim /etc/security/mkhome
Этот сценарий скопирует все в/etc/skel, если файл .donotremove не будет существовать.
#!/bin/bash
cd ~
if [ ! -f .donotremove ] ; then
echo Copying /etc/skel
cp -ra /etc/skel/* ~
touch .donotremove
fi
Также удостоверьтесь, что этот файл является исполняемым файлом:
sudo chmod a+rx /etc/security/mkhome
Добавьте другую запись для выполнения этого сценария на сессии
sudo vim /etc/pam.d/common_session
Добавьте следующие строки:
session optional pam_ecryptfs.so unwrap
session optional pam_exec.so seteuid /etc/security/mkhome
Теперь пользователи LDAP могут войти и иметь зашифрованный корневой каталог ecryptfs.
Вместо того, чтобы редактировать файлы в /etc/pam.d
непосредственно (который обычно не рекомендуется), лучше применить настройки как профиль PAMConfig.
Просто вставьте этот код в новый файл /usr/share/pam-configs/ecryptfs-nonlocal
:
Name: Enable EcryptFS for users from remote directories such as LDAP.
Default: no
Priority: 0
Conflicts: ecryptfs-utils
Auth-Type: Additional
Auth-Final:
required pam_exec.so expose_authtok /etc/security/ecryptfs
optional pam_ecryptfs.so unwrap
Session-Type: Additional
Session-Final:
optional pam_ecryptfs.so unwrap
optional pam_exec.so seteuid /etc/security/mkhome
Password-Type: Additional
Password-Final:
optional pam_ecryptfs.so
И затем выполненный pam-auth-update
:
Проверить Enable EcryptFS for users from remote directories such as LDAP.
и удостоверьтесь это eCryptfs Key/Mount Management
неконтролируем. Оставьте на виду все другие опции на ваше усмотрение.
Это удостоверится что соответствующие конфигурации в /etc/pam.d
применяются и что они остаются там.