Автор Тема: Как поменять атрибут всем юзерам?  (Прочитано 14910 раз)

marawu

  • Пользователь
  • **
  • Сообщений: 76
  • !
    • Просмотр профиля
Как поменять атрибут всем юзерам?
« : 07 Сентябрь 2016, 07:05:42 »
В openLDAP есть атрибут loginShell и там по умолчанию прописано /sbin/nologin. Мне нужно поменять его всем пользователям на /bin/bash и сделать так, чтобы в дальнейшем при создании юзера этот атрибут был уже прописан как надо. МНе нужно какую-то схему изменить?

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Как поменять атрибут всем юзерам?
« Ответ #1 : 07 Сентябрь 2016, 09:03:23 »
Здравствуйте. Лёгкого пути сделать такое, насколько я знаю, нет. В клиенте LdapAdmin вроде бы была какая-то возможность массовой модификации, но насколько добротно это реализовано не знаю -- не пользовался.

Можно сделать в 3 этапа из командной строки:
1. Получить список записей из каталога, которые небходимо модифицировать и сохраниь его в файл:
ldapsearch -x -LLL -b 'dc=mycompany,dc=ru' '(loginShell=/sbin/nologin)' dn > users.ldif

В файле users.ldif будет список DN записей пользователей, что-то типа:
uid=ivanov,ou=People,dc=mycompany,dc=ru

uid=petrov,ou=People,dc=mycompany,dc=ru

uid=sidorov,ou=People,dc=mycompany,dc=ru

2. Для каждой из этих записей нужно добавить в файл сведения о модификации:
uid=ivanov,ou=People,dc=mycompany,dc=ru
changetype: modify
replace: loginShell
loginShell: /bin/bash
И так для каждой записи. Между записями должна оставаться пустая строка.

3. Изменить содержимое этих записей, применив сформированный LDIF модификации:
ldapmodify -Y EXTERNAL -H ldapi:/// -f ./users.ldif
Перед этим неплохо было бы сделать резервную копию каталога =).

Такие дела. Егор


marawu

  • Пользователь
  • **
  • Сообщений: 76
  • !
    • Просмотр профиля
Re: Как поменять атрибут всем юзерам?
« Ответ #2 : 07 Сентябрь 2016, 09:09:10 »
Здравствуйте. Лёгкого пути сделать такое, насколько я знаю, нет. В клиенте LdapAdmin вроде бы была какая-то возможность массовой модификации, но насколько добротно это реализовано не знаю -- не пользовался.

Можно сделать в 3 этапа из командной строки:
1. Получить список записей из каталога, которые небходимо модифицировать и сохраниь его в файл:
ldapsearch -x -LLL -b 'dc=mycompany,dc=ru' '(loginShell=/sbin/nologin)' dn > users.ldif

В файле users.ldif будет список DN записей пользователей, что-то типа:
uid=ivanov,ou=People,dc=mycompany,dc=ru

uid=petrov,ou=People,dc=mycompany,dc=ru

uid=sidorov,ou=People,dc=mycompany,dc=ru

2. Для каждой из этих записей нужно добавить в файл сведения о модификации:
uid=ivanov,ou=People,dc=mycompany,dc=ru
changetype: modify
replace: loginShell
loginShell: /bin/bash
И так для каждой записи. Между записями должна оставаться пустая строка.

3. Изменить содержимое этих записей, применив сформированный LDIF модификации:
ldapmodify -Y EXTERNAL -H ldapi:/// -f ./users.ldif
Перед этим неплохо было бы сделать резервную копию каталога =).

Такие дела. Егор

Ок, а чтобы в дальнейшем при создании пользователей автоматом уже был этот атрибут в нужном виде? Правильно ли я понимаю, что это нужно будет модифицировать схему?

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Как поменять атрибут всем юзерам?
« Ответ #3 : 07 Сентябрь 2016, 12:14:25 »
Модифицировать схему не нужно -- это точно =) . Если Вы собираетесь работать с LDAP, неплохо было бы иметь хотя бы минимальную базу, чтобы мы разговаривали на одном языке. Предлагаю почитать главы 2 и 3 учебника LFRS.

По существу вопроса: тут многое зависит от клиента, с помощью которого эти записи создаются. То есть, значения по умолчанию атрибутов на уровне каталога не задаются и должны явно указываться при создании записи, но многие графические клиенты позволяют задавать значения по умолчанию для тех или иных атрибутов для облегчения рутинной работы сисадмина. Посмотрите настройки своего клиента.

Егор