Вопрос или проблема
Пользователи Samba не могут изменить свои пароли. Пароль может быть изменен только с использованием учетной записи root с помощью команды
smbpasswd -a <имя_пользователя>
Но я хочу, чтобы пользователи могли сами изменять свои пароли. При попытке изменения пароля с помощью учетной записи, не имеющей прав root, я получаю следующее сообщение об ошибке.
$ smbpasswd
Старый пароль SMB:
Новый пароль SMB:
Повторите новый пароль SMB:
Не удалось подключиться к машине 127.0.0.1: NT_STATUS_LOGON_FAILURE
Не удалось изменить пароль для user1
Есть ли причины для этого? Как я могу это исправить?
Каждый метод аутентификации обычно проверяется в Домене. Поскольку в smb.conf указано “security=ads”, то при проверке аутентификации пользователя она всегда проверяется сначала в Домене, и если пользователь обозначен как “Not Found or logon failure”, то не произойдет переход к следующему методу, т.е. sam (локальная база данных пользователей).
Укажите следующую строку в глобальном разделе smb.conf:
auth methods = guest sam_ignoredomain winbind:ntdomain
Затем перезапустите службу smb.
Ответ или решение
Если ваши обычные пользователи не могут изменять свои пароли Samba, и это возможно только из-под root, это может свидетельствовать о неправильной настройке службы Samba или особенностях конфигурации безопасности вашей системы. Давайте разберем возможные причины и предложим решения для исправления этой ситуации.
Анализ проблемы и возможные причины
-
Конфигурация безопасности:
Вы указали, что в конфигурационном файле
smb.conf
используется строкаsecurity=ads
. Это означает, что Samba настроена на использование режима Active Directory Security (ADS). В этом режиме все аутентификации изначально проверяются через домен Active Directory. Если пользователя нет в домене или возникает какая-либо ошибка, подобнаяNT_STATUS_LOGON_FAILURE
, авторизация завершится неудачно, и использование локальной базы данных пользователей (sam) не произойдет. -
Права доступа:
Ошибка
Could not connect to machine 127.0.0.1: NT_STATUS_LOGON_FAILURE
также может указывать на то, что у пользователя недостаточно привилегий для изменения пароля через интерфейс Samba из-за установленных политик безопасности.
Решения
-
Изменение конфигурации
smb.conf
:Чтобы разрешить обычным пользователям изменять пароли, необходимо в глобальную секцию вашего конфигурационного файла
smb.conf
добавить следующую строку:auth methods = guest sam_ignoredomain winbind:ntdomain
Это изменение позволит Samba использовать локальную базу данных пользователей (sam), если проверка аутентификации неэффективна в домене. Затем перезапустите службу Samba, чтобы изменения вступили в силу:
sudo systemctl restart smbd sudo systemctl restart nmbd
-
Проверка прав доступа:
Убедитесь, что пользователи имеют необходимые права для изменения своих паролей. Возможно, потребуется соответствующая настройка политик безопасности как на стороне Samba, так и в Active Directory, если таковой используется.
-
Диагностика с помощью логов:
Используйте логи Samba для получения дополнительной информации о возникших ошибках. Логи могут помочь выявить, на каком этапе происходит сбой:
sudo cat /var/log/samba/log.smbd sudo cat /var/log/samba/log.nmbd
Заключение
Правильная настройка конфигурационного файла Samba и проверка прав доступа значительно упростят управление паролями пользователями. Эти рекомендации помогут вам устранить проблему и настроить систему таким образом, чтобы пользователи могли самостоятельно изменять свои пароли без привилегий root. Важно следовать обновлениям и документировать изменения в настройках для поддержки системного администрирования и обеспечения безопасности вашей сети.