d_i*_*ble 6 single-sign-on ecryptfs pam
如何确保所有用户在第一次登录时都加密了他们的主目录?
我已将 pam 设置为使用 Kerberos 身份验证和 LDAP 授权(我认为这对 ecryptfs 没有任何影响)。
我还设置了 pam-mkhomedir 以从 /etc/skel 创建主目录,我在其中放置了一些标准配置。
查看一个已启用 ecryptfs 的用户帐户中的 .ecryptfs 目录,有一些特定于用户的配置,例如挂载点(设置为 /home/d_inevitable),这在 /etc/skel 中是没有用的。
在使用 ecryptfs 挂载主目录后,还需要复制 /etc/skel 中的配置。
我已经设法使用 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
Run Code Online (Sandbox Code Playgroud)
确保脚本是可执行的:
sudo chmod a+rx /etc/security/ecryptfs
Run Code Online (Sandbox Code Playgroud)添加条目以在 auth 上使用 pam_exec 执行它:
sudo vim /etc/pam.d/common_auth
Run Code Online (Sandbox Code Playgroud)
添加以下几行:
auth required pam_exec.so expose_authtok /etc/security/ecryptfs
auth optional pam_ecryptfs.so unwrap
Run Code Online (Sandbox Code Playgroud)
将pam_exec设置为必须的,因为它不会安装ecryptfs如果脚本不以root身份运行。如果su从非 root 用户使用,就是这种情况。因此,如果未设置并su使用ecryptfs (即用户首次尝试使用 登录时su),则他将被拒绝。因此,我们确保用户在没有 ecryptfs 设置的情况下无法登录。
创建另一个脚本来填充主目录以代替 pam_mkhomedir
sudo vim /etc/security/mkhome
Run Code Online (Sandbox Code Playgroud)
如果文件 .donotremove 不存在,此脚本将复制 /etc/skel 中的所有内容。
#!/bin/bash
cd ~
if [ ! -f .donotremove ] ; then
echo Copying /etc/skel
cp -ra /etc/skel/* ~
touch .donotremove
fi
Run Code Online (Sandbox Code Playgroud)
还要确保这个文件是可执行的:
sudo chmod a+rx /etc/security/mkhome
Run Code Online (Sandbox Code Playgroud)添加另一个条目以在会话上执行此脚本
sudo vim /etc/pam.d/common_session
Run Code Online (Sandbox Code Playgroud)
添加以下几行:
session optional pam_ecryptfs.so unwrap
session optional pam_exec.so seteuid /etc/security/mkhome
Run Code Online (Sandbox Code Playgroud)现在 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
Run Code Online (Sandbox Code Playgroud)
然后运行pam-auth-update:

检查Enable EcryptFS for users from remote directories such as LDAP.并确保eCryptfs Key/Mount Management是选中。将所有其他选项留给您的偏好。
这将确保应用中的相关配置/etc/pam.d并且它们保持在那里。
| 归档时间: |
|
| 查看次数: |
3791 次 |
| 最近记录: |