pam_exec в linux mint не работает

Я пытаюсь запустить сценарий, когда пользователь входит в систему с помощью pam_exe.so.

/etc/pam.d/common-sesion :

session required    pam_unix.so 
session optional    pam_sss.so 
session optional    pam_systemd.so 
session optional    pam_ecryptfs.so unwrap
session optional    pam_ck_connector.so nox11

session required    pam_oddjob_mkhomedir.so umask=0077 

# end of pam-auth-update config

session optional    pam_exec.so   debug seteuid log=/tmp/pam_exec.log /usr/local/createlink

Сценарий создания ссылки:

#!/bin/bash

if [ ! -L /home/$PAM_RUSER/zdrive ]; then
    ln -s /mnt/dcs/home/$PAM_RUSER /home/$PAM_RUSER/zdrive
fi

и

$ ls -l /usr/local/createlink
-rwxr-xr-x 1 root root 200 Apr 18 15:10 createlink*

Однако при этом пользователю не разрешено входить в систему .. он показывает ошибку аутентификации, когда вход в систему графически

, когда я su - из командной строки я получаю «su: ошибка запрещена в разрешении». файл журнала /tmp/pam_exec.log не создается.

Запуск linux mint 18

Схожу с ума по этому поводу ... Любая помощь приветствуется !!!!

Всем спасибо за ваше время

0
задан 18 April 2017 в 18:04
1 ответ

Одна из возможных причин для входа в систему теперь все неудачи - это статус выхода из вашего скрипта. Если ваш сценарий возвращает ненулевое значение, это считается pam_exec ошибкой, и установка сеанса может быть прервана. (Фактическое решение об отмене неочевидно; похоже, это связано с количеством дополнительных модулей, задействованных в стеке.)

Глядя на ваш код, вы используете $ PAM_RUSER вместо $ PAM_USER для идентификации учетной записи пользователя, который выполняет вход. $ PAM_RUSER (обычно) пуст, поэтому ваш код становится эквивалентным этому

if [ ! -L /home/zdrive ]; then
    ln -s /mnt/dcs/home/ /home/zdrive
fi

Если ссылка изначально не существует , он создан, и статус выхода сценария хороший. При втором и последующем вызове скрипта ссылка будет изначально существовать, поэтому тест не пройден, и это подразумевается статус выхода скрипта.

Вы можете исправить это, слегка изменив свой код :

#!/bin/bash

if [ ! -L "/home/$PAM_USER/zdrive" ]; then
    ln -s "/mnt/dcs/home/$PAM_USER" /home/$PAM_USER/zdrive"
fi
exit 0

Еще одна полезная часть отладки - системный журнал. Не сбрасывайте со счетов это. Например, размещение этой строки сразу после строки #! предоставит вам информацию в /var/log/user.log или в эквиваленте вашего дистрибутива:

logger -t "${0/*\/}" "id=$(id); PAM_RHOST=$PAM_RHOST, PAM_RUSER=$PAM_RUSER, PAM_SERVICE=$PAM_SERVICE, PAM_TTY=$PAM_TTY, PAM_USER=$PAM_USER, PAM_TYPE=$PAM_TYPE."

Пример вывода для ] ssh roaima @ localhost whoami :

Jul  4 22:48:56 vml1 pam_exec_test.sh: id=uid=0(root) gid=0(root) groups=0(root); PAM_RHOST=localhost, PAM_RUSER=, PAM_SERVICE=sshd, PAM_TTY=ssh, PAM_USER=roaima, PAM_TYPE=open_session.
Jul  4 22:48:56 vml1 pam_exec_test.sh: id=uid=0(root) gid=0(root) groups=0(root); PAM_RHOST=localhost, PAM_RUSER=, PAM_SERVICE=sshd, PAM_TTY=ssh, PAM_USER=roaima, PAM_TYPE=close_session.
0
ответ дан 5 December 2019 в 08:18

Теги

Похожие вопросы