Включить ecryptfs для всех новых пользователей, даже тех, кто аутентифицируется через kerberos и ldap

5

Как я могу убедиться, что каждый пользователь зашифровал свой домашний каталог при первом входе в систему?

У меня есть настройка pam для использования аутентификации Kerberos и авторизации LDAP (что, я думаю, не должно действительно влиять на ecryptfs).

Я также установил pam-mkhomedir для создания домашних каталогов из / etc / skel, в котором я разместил некоторые стандартные конфигурации.

Глядя на каталог .ecryptfs в одной учетной записи пользователя, которая уже активирована ecryptfs, существуют некоторые пользовательские конфигурации, такие как точка монтирования (например, для установки / home / d_inevitable), что было бы нехорошо в / etc / Skel.

Также необходимо скопировать конфигурации в файле / etc / skel после домашний каталог с ecryptfs.

    
задан d_inevitable 10.03.2012 в 16:53
источник

1 ответ

6

Мне удалось заставить его работать с помощью pam_exec:

  1. Создайте скрипт для настройки 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
    
  2. Добавить запись, чтобы выполнить ее с помощью pam_exec в auth:

    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, если скрипт не запускается с правами root. Это тот случай, если su используется от пользователя без полномочий root. Таким образом, если ecryptfs не настроен и используется su (то есть, когда пользователь впервые пытается войти в систему, используя su ), его будет отклонено. Таким образом, мы гарантируем, что пользователь не может войти в систему без установки ecryptfs.

  3. Создайте еще один скрипт, чтобы заполнить домашний каталог вместо 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
    
  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.

Update

Вместо того, чтобы напрямую редактировать файлы в /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 применены и что они остаются там.

    
ответ дан d_inevitable 12.03.2012 в 10:08
источник