Вопрос или проблема
Я использую 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/<имя>
(без домена).
Заключение
Следуя этим шагам, вы сможете установить домашнюю директорию пользователей на основе подстроки их имени. Если вы столкнетесь с какими-либо проблемами, убедитесь, что скрипт выполняется без ошибок и что все необходимые разрешения заданы правильно.