gate# dhcp-lease-list
user1$ klist user1$ cd / # klist # cp -v /tmp/krb5cc_`id -u user1`_* /tmp/krb5cc_0 # klist # mount.cifs //gate.corp13.un/user1 -o rw,user,sec=krb5,vers=3.1.1,uid=`id -u user1`,gid=`id -g user1` /home/user1/ # ls -l /home/user1
# rm /tmp/krb5cc_0 # umount /home/user1/
# umount /home/user1/
# cat /usr/share/libpam-script/pam_script_auth
#!/bin/bash if ! id $PAM_USER &>/dev/null; then useradd -m -s /bin/bash $PAM_USER echo //gate.corp13.un/corp_share /home/$PAM_USER/Public cifs rw,user,sec=krb5,noauto,vers=3.1.1 0 0 >> /etc/fstab fi
gate# dhcp-lease-list gate# client1=192.168.13.101 gate# clientN=192.168.13.102 gate# ssh $clientN clientN# DEBIAN_FRONTEND=noninteractive apt -y install krb5-user cifs-utils nfs-common libpam-krb5 libpam-script gate# scp -3 $client1:/etc/krb5.conf $clientN:/etc/ gate# scp -3 $client1:/etc/pam.d/common-auth $clientN:/etc/pam.d/ gate# scp -3 $client1:/usr/share/libpam-script/pam_script_auth $clientN:/usr/share/libpam-script/ gate# scp -3 $client1:/usr/share/libpam-script/pam_script_ses_open $clientN:/usr/share/libpam-script/
В вебинаре создание учетной записи происходит до проверки ее подлинности, поэтому лучше расположить модули так:
# cat /etc/pam.d/common-auth
... auth [success=2 default=ignore] pam_krb5.so minimum_uid=1000 auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass auth requisite pam_deny.so auth sufficient pam_script.so auth required pam_permit.so ...
Вариант решения - не удалять в скрипте /tmp/krb5cc_0 и обновлять TGT через cron
client1:~# crontab -l
0 */8 * * * kinit -R >/dev/null 2>&1
Усиливается проблема (уже была) параллельного подключения нескольких пользователей к рабочей станции
Особенно, если для отладки пользователи постоянно создаются/удаляются
... sed -i.bak -e "/\/home\/$PAM_USER/d" /etc/fstab ...
# cat /usr/share/libpam-script/pam_script_auth
#!/bin/bash if ! id $PAM_USER &>/dev/null; then useradd -m -s /bin/bash $PAM_USER sed -i.bak -e "/\/home\/$PAM_USER/d" /etc/fstab echo //gate.corp13.un/$PAM_USER /home/$PAM_USER cifs rw,user,sec=krb5,noauto,vers=3.1.1,uid=`id -u $PAM_USER`,gid=`id -g $PAM_USER` 0 0 >> /etc/fstab echo //gate.corp13.un/corp_share /home/$PAM_USER/Public cifs rw,user,sec=krb5,noauto,vers=3.1.1 0 0 >> /etc/fstab systemctl daemon-reload fi
# cat /usr/share/libpam-script/pam_script_ses_open
#!/bin/sh cp /tmp/krb5cc_`id -u $PAM_USER`* /tmp/krb5cc_0