Может ли PAM установить домашний каталог в виде подстроки имени пользователя?

Вопрос или проблема

Я использую pam (через authd), чтобы позволить пользователям входить в Azure VM (Ubuntu 24.04 LTS) с использованием их имени пользователя Azure AD, которое является их адресом электронной почты. Таким образом, они входят, скажем, с помощью ssh [email protected]@my_vm_ip. Это работает.

Их имя пользователя на VM — [email protected], а их домашний каталог — /home/[email protected].

У нас только один домен, и мы хотим, чтобы домашний каталог содержал только часть имени из их адреса электронной почты (например, /home/bill).

Я пытался создать скрипт, чтобы export HOME=/home/${USER%@*} и вызывать этот скрипт из /etc/pam.d/sshd, но ничего не работает.

Есть ли способ установить домашний каталог пользователя только на его имя вместо всего его адреса электронной почты?

Ответ или решение

Да, можно настроить домашний каталог пользователя в Ubuntu на основе подстроки его имени пользователя, например, только имени без домена. Ваша задача будет заключаться в том, чтобы изменить механизм создания домашнего каталога, который обычно определяется в процессе аутентификации PAM.

Вот шаги, которые помогут вам достичь желаемого результата:

1. Создание пользовательского скрипта

Создайте скрипт, который будет выделять имя из адреса электронной почты и задавать домашнюю директорию. Например, создайте файл /usr/local/bin/set_home_dir.sh и добавьте следующий код:

#!/bin/bash

# Извлеките имя пользователя из адреса электронной почты
USERNAME=${PAM_USER%@*}
# Установите домашнюю директорию
export HOME=/home/$USERNAME

# Создайте домашнюю директорию, если она не существует
if [ ! -d "$HOME" ]; then
    mkdir -p "$HOME"
    chown $PAM_USER:$PAM_USER "$HOME"
    chmod 700 "$HOME"
fi

Не забудьте сделать этот скрипт исполняемым:

sudo chmod +x /usr/local/bin/set_home_dir.sh

2. Изменение конфигурации PAM

Теперь вам необходимо обновить конфигурацию PAM для sshd. Откройте файл /etc/pam.d/sshd и добавьте следующую строку в начале файла:

session required pam_exec.so /usr/local/bin/set_home_dir.sh

Эта строка вызывает ваш скрипт каждый раз, когда пользователь входит в систему.

3. Изменение конфигурации sshd

Убедитесь, что у вас правильно настроены параметры SSH. Откройте файл /etc/ssh/sshd_config и проверьте, что у вас настроено следующее:

PermitUserEnvironment yes

Это позволяет использовать переменную окружения HOME, установленную в вашем скрипте.

4. Перезапуск служб

После внесения изменений вам необходимо перезапустить службу SSH для применения новых настроек:

sudo systemctl restart ssh

5. Проверка

Теперь выполните вход через SSH с помощью пользователя, и его домашний каталог должен быть установлен как /home/<имя> (без домена).

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...