|
Тепер статті може редагувати кожен. Приєднуйтесь до нашої вікі-спільноти! |
UMS utilities
Зміст |
[ред.] LDAP скрипти
[ред.] Доступ до користувацьких записів
Скрипти приймають список параметрів зі STDIN у вигляді <key>=<value>.
Всі виклики всю службову інформацію пишуть в syslogd.
[ред.] Створення користувача
Параметри:
- name (string)- ім'я користувача в юнікоді.
- login (string) - UNIX-ім'я корисувача.
- profession (integer) - значення, яким кодується факультет, підрозділ, спеціальність і т.д.
- class (integer) - значення, яким кодується професія користувача (викладач, бакалавр, магістр, спеціаліст і т.д.)
- reader_card_number, passport_number, student_card_number (string) - номери читацьких, паспортів і студаків, серія разом з номером, задавати будь-який параметр, або і всі разом
- entry_year - числове значення, рік вступу.
- password (plaintext) - пароль
- loginShell (string) - оболонка користувача за замовчуванням (якщо не вказано, ініціалізується значенням defaultLoginShell з конфігураційного файлу)
name - повне ім'я з трьох слів.
reader_card_number - число з п'яти цифр.
student_card_number - дві великі українські літери і 8 цифр, без пробілів.
Обмежень на passport_number немає.
Додавання користувача зі студентським такого типу: ХХ0*******. Скрипт занесе у базу без нуля, у зв'язку з тим, що тип атрибуту номера квитка в класі студентів - "лдапівський" int, тому не дозволяє зберігати з нулем спочатку.
[ред.] Редагування користувача
Параметри:
- login - логін користувача, обліковий запис якого модифікуємо. Обов'язковий параметр.
- name - нове ім'я користувача в юнікоді.
- entry_year - числове значення, рік вступу.
- profession - числове значення, яким кодується факультет, підрозділ, спеціальність і т.д.
- class - числове значення, яким кодується професія користувача (викладач, бакалавр, магістр, спеціаліст і т.д.)
- reader_card_number, passport_number, student_card_number (string) - номери читацьких, паспортів і студаків, серія разом з номером, задавати будь-який параметр, або і всі разом
- password - новий пароль (plaintext)
- gid - новий ID групи за замовчуванням. Має бути ID існуючої групи.
- home - домашня директорія
Користувач зі студентським такого типу: ХХ0******* - збереже без нуля (див. зауваження для usic_useradd).
"- При зміні одного поля через usic_usermod з передачею усього масиву полів, які вже є в базі, видає помилки з ряду 34 і т.і (34==вже існує такий читацький квиток). Поле, яке намагаюсь змінити - не читацький. Так і має працювати? Тобто треба передавати тільки логін та те поле, яке змінюєш, і не більше? - Так і повинно бути. Тобто він перевіряє, чи такий номер є, але не перевіряє, чий він. Якщо треба, я виправлю."
[ред.] Видалити користувача
Параметри:
- login - dn в лдапі, UNIX-name.
Приклад використання:
echo dzubchik | usic_userdel
Використання PHPUtils:
$ldap->UserDel("dzubchik"); //видалить користувача dzubchik
[ред.] Отримати дані
Приклад використання
echo -e "login=login\nvalues=name,entry_year" | $path_to_script/usic_userinfo
буде повертати ім'я та рік вступу у вигляді масиву name=>***, entry_year=>0111
Параметри:
- login - dn, UNIX-ім'я користувача.
- values - список атрибутів, розділених комами, значення яких скрипт поверне у вигляді списку типу <назва атрибуту>=<значення атрибуту>.
Можливі значення values:
- name - ім'я користувача в юнікоді.
- entry_year (integer) - рік вступу.
- profession (integer) - яким кодується факультет, підрозділ, спеціальність і т.д.
- reader_card_number, passport_number, student_card_number (string)- номери читацьких, паспортів і студаків, серія разом з номером, задавати будь-який параметр, або і всі разом
- uid (integer)- ID користувача.
- gid (integer)- ID групи користувача за замовчуванням.
- home (string) - домашня директорія.
- loginShell (string) - оболонка за замовч.
Повертає значення через STDOUT.
Користувач зі студентським такого типу: ХХ0*******. Зараз виводить просто значення з бази, без нуля (див. зауваження для usic_useradd).
Використання PHPUtils:
$ldap->UserInfo(array("login"=>"dzubchik")); //поверне всі дані про користувача $ldap->UserInfo(array("login"=>"dzubchik","values"=>array("name"))); //поверне прізвище,ім'я та по-батькові
[ред.] usic_search
Параметри: такі ж, як і в usic_usermod. Повертає список користувачів, облікові записи яких відповідають всім вказаним параметрам. Наприклад, такий запит:
- entry_year=2006
- profession=50103
поверне всіх інформатиків, що вступили в 2006-му році.
Як значення атрибутів можна викоростовувати шаблони, наприклад:
- login=v*
поверне записи, в яких логін починається на v.
[ред.] Return codes
00 -- операція успішно виконана
11 -- помилка при з'єднанні з сервером (bind)
15 — LDAP вiдхилив запит
21 -- помилка при створенні каталога користувача
22 -- помилка передачі параметрів (конфігураційним файлом або на stdin)
23 -- помилка при видаленні каталога користувача
31 -- внутрішня помилка при створенні/видаленні/пошуку облікового запису
32 -- обліковий запис за заданими параметрами не знайдено в базі
33 -- обліковий запис за заданими параметрами вже існує в базі
34 -- користувач з заданим номером читацького квитка вже існує в базі
35 -- користувач з заданим номером студентського квитка вже існує в базі
36 -- користувач з заданим номером паспорта вже існує в базі
[ред.] Доступ до записів груп
[ред.] Додати групу
usicgroup add group [user1] [user2] ...
$ldap->GroupAddUser(array("group"=>"test"); // створить групу test, якщо така не існує $ldap->GroupAddUser(array("group"=>"taskfreak","login"=>array("sakib","dzubchik","robert"))); //додасть юзерів в групу //якщо група не існує - буде створена
[ред.] Видалити групу
usicgroup remove group [user1] [user2] ...
$ldap->GroupRemove(array("group"=>"test"); // видалить групу test, якщо така існує $ldap->GroupRemove(array("group"=>"taskfreak","login"=>array("sakib","dzubchik"))); //видалить юзерів з групи
[ред.] Показати групу
usicgroup show [group]
$ldap->GroupShowUsers(); // поверне список усіх груп $ldap->GroupShowUsers("vpn"); // поверне список користувачів в групі vpn $ldap->GroupShowUsers(array("www","staff","vpn")); //поверне унікальних користувачів в усіх групах $ldap->GroupShowUsers(array("www","staff","vpn"),'NU'); //поверне користувачів, що є в усіх групах
[ред.] Перевірити належність до групи
usicgroup check group user
$ldap->GroupCheckUser(array("group"=>"staff","login"=>"robert")); // поверне true, якщо такий юзер є, інакше - помилка(string)
[ред.] Return codes
- 00 — виконано успiшно, в режимi check — користувач є членом групи;
- 01 — в режимi check — користувач не є членом групи;
- 02 — в режимi show — вивiд порожнiй;
- 15 — LDAP вiдхилив запит;
- 22 — помилка передачі параметрів
- 31 — внутрішня помилка при створенні/видаленні/пошуку групи
- 32 — групи за заданими параметрами не знайдено в базі
- 33 — група з заданими параметрами вже існує в базі
[ред.] config file
Система скриптів може брати частину параметрів з окремого конфігураційного файлу. Такий собі usic.config.file. Так, наприклад, usic_useradd, usic_userdel, usic_usermod скрипти беруть значення групи користувача за замовчуванням, домашній каталог, default login shell.
Форма конфігураційного файлу:
- [BLOCK]
- <key>=<value>
- [/BLOCK]
BLOCK задає простір імен для окремого проекту. Наприклад, для usic_useradd, usic_userdel, usic_usermod це може бути:
- [UMS]
- defaultHomedir=/home
- defaultGID=888
- defaultLoginShell=/bin/bash
- [/UMS]
[ред.] Коди полей
Поля class, profession зберігаються в ldap через числові значення.
[ред.] Поле class
- Mathematics - 40301
- Computer Science - 50103
- Economics - 30501
- Finance - 30508
- Politology - 30104
- Sociology - 30101
- Social Work - 11111
- Biology - 40102
- Ecology - 40106
- Physics - 40203
- Chemistry - 40101
- History - 20302
- Culture - 20101
- Philology - 20303
- Philosophy - 20301
- Law - 30401
(from http://www.ukma.kiev.ua/ua/vstup/a_2008/sertificates/index.php)
[ред.] Поле profession
- bachelor - 0
- master - 1
- candidate - 2
- teacher - 3
- employee - 4
- graduate - 5
- preparatory school - 6
- sponsor - 7
Обов'язкові поля, які мають бути надані для кожної profession (перевіряється до виклику утиліт):
- 0,1 - student or reader card
- 2,6 - reader card
- 3,4 - reader card or passport
- 5,7 - passport
[ред.] upload
Не потребує виклику додаткових утиліт.