web-dev-qa-db-ja.com

KerberosやLDAPを介して認証するユーザーも含め、すべての新しいユーザーに対してecryptfsを有効にします

初めてログインするときに、すべてのユーザーのホームディレクトリが暗号化されていることを確認するにはどうすればよいですか?

Kerberos認証とLDAP承認を使用するようにpamをセットアップしています(これはecryptfsに実際に影響を与えるべきではないと思います)。

また、pam-mkhomedirをセットアップして、いくつかの標準構成を配置した/ etc/skelからホームディレクトリを作成しました。

すでにecryptfsが有効になっている1つのユーザーアカウントの.ecryptfsディレクトリを見ると、たとえば/ etc/skelでは役に立たないマウントポイント(/ home/d_inevitableに設定)など、ユーザー固有の構成がいくつかあります。

また、/ etc/skelの設定をコピーする必要がありますafter ecryptfsでホームディレクトリがマウントされています。

5
d_inevitable

私はpam_execを使用してそれを動作させることができました:

  1. /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
    
  2. 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のセットアップなしではログインできないようにします。

  3. 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
    
  4. 別のエントリを追加して、セッションでこのスクリプトを実行します

    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を実行します:

pam-auth-update

Enable EcryptFS for users from remote directories such as LDAP.を確認し、eCryptfs Key/Mount Managementuncheckedであることを確認します。その他のオプションはすべて好みに合わせて残します。

これにより、/etc/pam.dの関連する構成が適用され、そこにとどまることが保証されます。

6
d_inevitable