初めてログインするときに、すべてのユーザーのホームディレクトリが暗号化されていることを確認するにはどうすればよいですか?
Kerberos認証とLDAP承認を使用するようにpamをセットアップしています(これはecryptfsに実際に影響を与えるべきではないと思います)。
また、pam-mkhomedirをセットアップして、いくつかの標準構成を配置した/ etc/skelからホームディレクトリを作成しました。
すでにecryptfsが有効になっている1つのユーザーアカウントの.ecryptfsディレクトリを見ると、たとえば/ etc/skelでは役に立たないマウントポイント(/ home/d_inevitableに設定)など、ユーザー固有の構成がいくつかあります。
また、/ etc/skelの設定をコピーする必要がありますafter ecryptfsでホームディレクトリがマウントされています。
私はpam_execを使用してそれを動作させることができました:
/etc/security/ecryptfs
のすべての新規ユーザー用に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
Authで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
はrequiredに設定されます。これは、スクリプトがrootとして実行されない場合、ecryptfsをセットアップしないためです。これは、su
が非rootユーザーから使用される場合です。したがって、ecryptfsがセットアップされておらず、su
が使用されている場合(つまり、ユーザーがsu
を使用して初めてログインしようとする場合)、拒否されます。そのため、ユーザーはecryptfsのセットアップなしではログインできないようにします。
Pam_mkhomedirの代わりにホームディレクトリを作成する別のスクリプトを作成します
Sudo vim /etc/security/mkhome
このスクリプトは、ファイル.donotremoveが存在しない場合、/ etc/skel内のすべてをコピーします。
#!/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
がuncheckedであることを確認します。その他のオプションはすべて好みに合わせて残します。
これにより、/etc/pam.d
の関連する構成が適用され、そこにとどまることが保証されます。