Сброс пароля всем пользователям

Костюков Владимир

Команда форума
Админ
Регистрация
04.03.23
Сообщения
451
Реакции
70
1. Создать питоновский файл и добавить в него:

Python:
from ldap3 import Server, Connection, ALL, MODIFY_REPLACE
# Параметры подключения. Требуется первичная настройка.
FREEIPA_SERVER = 'dc.rnc.ald'
DOMAIN_BASE_DN = 'dc=rnc,dc=ald'
BIND_USER = 'uid=admin,cn=users,cn=accounts,' + DOMAIN_BASE_DN
BIND_PASSWORD = 'fTAsjb8Re'
NEW_PASSWORD = 'fTAsjb8Re' # Этот пароль будет у всех пользователей.
EXCLUDED_USERS = ['admin']  # Список пользователей, которых не трогаем например ['admin','kostyukov']

# Создание подключения к LDAP-серверу
server = Server(host=FREEIPA_SERVER, use_ssl=True, get_info=ALL)
connection = Connection(server, user=BIND_USER, password=BIND_PASSWORD, raise_exceptions=True)

try:
    connection.bind()  # Авторизуемся в каталоге
    print("Успешно подключились к LDAP-серверу.")

    # Поиск всех активных пользователей
    search_filter = '(objectClass=person)'
    attributes = ['uid']
    connection.search(DOMAIN_BASE_DN, search_filter, attributes=attributes)

    users = connection.entries

    # Проходим по найденным пользователям и меняем пароль
    for entry in users:
        uid = entry.uid.value
        if uid not in EXCLUDED_USERS:
            user_dn = f"uid={uid},cn=users,cn=accounts,{DOMAIN_BASE_DN}"
            mod_attrs = {'userPassword': [(MODIFY_REPLACE, [NEW_PASSWORD])]}  # Задали новый пароль
            connection.modify(user_dn, mod_attrs)
            if connection.result['result'] == 0:
                print(f"Пароль для пользователя {uid} успешно сменён.")
            else:
                print(f"Ошибка при смене пароля для пользователя {uid}: {connection.result['message']}")
        else:
            print(f"Пропущен пользователь {uid} согласно настройкам исключения.")
finally:
    connection.unbind()  # Отключаемся от LDAP-сервера
    print("Отключение от LDAP-сервера выполнено.")
или рандомный пароль

Python:
from ldap3 import Server, Connection, ALL, MODIFY_REPLACE
import secrets
import string

# Параметры подключения
FREEIPA_SERVER = 'dc.rnc.ald'
DOMAIN_BASE_DN = 'dc=rnc,dc=ald'
BIND_USER = 'uid=admin,cn=users,cn=accounts,' + DOMAIN_BASE_DN
BIND_PASSWORD = 'fTAsjb8Re'
EXCLUDED_USERS = ['admin']  # Пользователи, которых мы исключаем из смены пароля

# Функция для генерации случайного безопасного пароля
def generate_random_password():
    alphabet = string.ascii_letters + string.digits + "!@#$%^&*()-_=+[]{}|;:,.<>?/"
    while True:
        password = ''.join(secrets.choice(alphabet) for i in range(12))
        if (
            any(c.islower() for c in password)
            and any(c.isupper() for c in password)
            and sum(c.isdigit() for c in password) >= 3
        ):
            return password

# Создание подключения к LDAP-серверу
server = Server(host=FREEIPA_SERVER, use_ssl=True, get_info=ALL)
connection = Connection(server, user=BIND_USER, password=BIND_PASSWORD, raise_exceptions=True)

try:
    connection.bind()  # Авторизуемся в каталоге
    print("Успешно подключились к LDAP-серверу.")
   
    # Поиск всех активных пользователей
    search_filter = '(objectClass=person)'
    attributes = ['uid']
    connection.search(DOMAIN_BASE_DN, search_filter, attributes=attributes)

    users = connection.entries

    # Меняем пароль каждому пользователю отдельно
    for entry in users:
        uid = entry.uid.value
        if uid not in EXCLUDED_USERS:
            new_password = generate_random_password()  # Генерируем случайный пароль
           
            user_dn = f"uid={uid},cn=users,cn=accounts,{DOMAIN_BASE_DN}"
            mod_attrs = {'userPassword': [(MODIFY_REPLACE, [new_password])]}
            connection.modify(user_dn, mod_attrs)
           
            if connection.result['result'] == 0:
                print(f"Пароль для пользователя {uid} успешно сменён на {new_password}.")
            else:
                print(f"Ошибка при смене пароля для пользователя {uid}: {connection.result['message']}")
        else:
            print(f"Пропущен пользователь {uid} согласно настройкам исключения.")
finally:
    connection.unbind()  # Закрываем соединение
    print("Отключение от LDAP-сервера выполнено.")
2. Установить пакет sudo pip3 install ldap3
3. Запустить с помощью команды /opt/rbta/venvs/aldpro-common/bin/python3 /root/1.py > password (Путь к файлу меняем на свой )
 
Последнее редактирование:
Назад
Сверху Снизу