- Регистрация
- 04.03.23
- Сообщения
- 487
- Реакции
- 73
1. Создать питоновский файл и добавить в него:
2. Установить пакет sudo pip3 install ldap3
3. Запустить с помощью команды /opt/rbta/venvs/aldpro-common/bin/python3 /root/1.py > password (Путь к файлу меняем на свой )
Python:
from ldap3 import Server, Connection, ALL, MODIFY_REPLACE
# Параметры подключения к LDAP/FREEIPA
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'
# Указываем дату истечения срока действия пароля напрямую
expiration_date_str = "202909151435Z"
# Список исключаемых пользователей (например, администраторов)
EXCLUDED_USERS = ['admin', 'root', 'service']
# Создаем LDAP-фильтр для поиска пользователей
search_filter = f'(&(objectClass=person){"".join([f"(!(uid={user}))" for user in EXCLUDED_USERS])})'
# Подключаемся к LDAP-серверу
server = Server(FREEIPA_SERVER, use_ssl=True, get_info=ALL)
connection = Connection(server, user=BIND_USER, password=BIND_PASSWORD, raise_exceptions=True)
try:
# Авторизуемся в LDAP
connection.bind()
print("Успешно подключились к LDAP-серверу.")
# Ищем всех пользователей, удовлетворяющих условиям фильтра
connection.search(DOMAIN_BASE_DN, search_filter, attributes=['uid'])
# Обновляем срок действия пароля для каждого пользователя
for entry in connection.entries:
uid = entry.uid.value
user_dn = f"uid={uid},cn=users,cn=accounts,{DOMAIN_BASE_DN}"
mod_attrs = {'krbPasswordExpiration': [(MODIFY_REPLACE, expiration_date_str)]}
connection.modify(user_dn, mod_attrs)
if connection.result['result'] == 0:
print(f"Срок действия пароля для пользователя {uid} успешно обновлён.")
else:
print(f"Ошибка при обновлении срока действия пароля для пользователя {uid}: {connection.result['message']}")
finally:
# Завершаем сеанс связи с LDAP
connection.unbind()
print("Отключение от LDAP-сервера выполнено.")
3. Запустить с помощью команды /opt/rbta/venvs/aldpro-common/bin/python3 /root/1.py > password (Путь к файлу меняем на свой )