Тепер статті може редагувати кожен. Приєднуйтесь до нашої вікі-спільноти!

UMS utilities

Матеріал з USIC Wiki
Перейти до: навігація, пошук
Тукс

Ця стаття описує програмне забезпечення Інтернет-центру.

Зміст

[ред.] 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

Не потребує виклику додаткових утиліт.

Особисті інструменти
Простори назв
Варіанти
Дії
Навігація
Інструменти