Створення програми додавання користувачів в Linux

 

Зміст


Вступ

. Концепція роботи з користувачами

.1 Обліковий запис root

.2 Створення облікових записів користувачів

.3 Знищення облікових записів користувачів

.4 Настройка атрибутів користувацького облікового запису

.5 Програми для створення облікових записів користувачів

. Пограма Useradd

. Опис алгоритму роботи програми-скрипта add_user

. Результати виконання програми

Висновок

Список використаної літератури

Додаток А.Текст програми

Додаток Б. Блок схема алгоритму програми


ВСТУП


Користувач root - найбільш важливий у всіх системах. Хоча в деяких системах для цього користувача може використовуватися і інше імя, ідентифікатор користувача під номером 0 завжди відповідає привілейованому користувачу UNIX систем. На користувача root ненакладаються ніякі обмеження доступу.

Реєстраційне імя користувача ( user name ) - це унікальна текстова стрічка, ідентифікуюча аккаунт користувача. Системний адміністратор назаначає це імя при створенні нового користувача системи.

Паролі є ключами безпеки системи. По мірі розвитку UNIX перевірка паролів стає все більш строгою. В попередніх версіях операційної системи можна було в якості пароля вибрати будь-яку стрічку - навіть короткі стрічки типу ах. Сучасні версії примушують в паролі використовувати як мінімум шість символів. Деякі системи також враховують регістр, а в інших очікується використання як мінімум одного символа, що не є цифрою або буквою алфавіту.

Ідентифікатори користувача і групи являють собою цілі числа, змінити може тільки адмінінстратор. Ці значення система використовує для ідентифікації користувача. Якщо змінити ці значення то система перестане розрізняти окремого користувача чи групу по імені, в результаті користувачі не зможуть отримати доступ до своїх файлів.

Всі ці дані записані у файлі /etc/passwd. Метою нашо курсового проекту є створення програми-скрипта add_user для надання робочого інтерфейсу програмі useradd.

1. КОНЦЕПЦІЯ РОБОТИ З КОРИСТУВАЧАМИ


1.1 Обліковий запис root


Звичайні користувачі в загальному випадку обмежені так, що вони не можуть заподіяти шкоду кому-небудь іншому в системі (включаючи саму систему), крім самих себе. Права доступу до файлів у системі організовані таким чином, що простий користувач не може видалити чи змінити файл, файли у каталогах, що використовуються спільно (такі як /bin і /usr/bin). Більшість користувачів також захищають свої власні файли так, що не можуть їх змінити, а іноді і взагалі добратися до них.

Але всі ці обмеження не поширюються на користувача root. Користувач root може читати, чи модифікувати видаляти будь-який файл системи, змінювати його права чи доступу змінювати його власника. Він (root) може також виконувати спеціальні (привілейовані) програми, такі як розбиття диска на чи розділи створення файлової системи. Основна ідея полягає в тому, що хтось (їх може бути декілька), хто виконує реєстрацію користувачів (і має ім'я root), повинен, коли це необхідно, мати можливість виконувати роботи, що не можуть бути виконані звичайним користувачем. Оскільки root може робити усе, що завгодно, йому легко зробити якусь помилку, що приводить до катастрофічних наслідків.

Наприклад, якщо ви як звичайний користувач випадково спробуєте видалити файл у /etc, система не дозволить вам це зробити. Але, якщо ви ввійшли як root, система навіть не пискне, виконуючи усе, що накажете. Легко знищити систему, перебуваючи в системі в якості root. Кращий спосіб уникнути неприємностей, це:

  1. Уважно все перевірити, перш ніж натиснути Enter для виконання команди, що може бути причиною катастрофи. Наприклад, якщо ви збираєтеся очистити каталог, перед натисканням Enter перечитайте всю команду і переконайтесь, що вона написана правильно.
  2. Не звикайте використовувати root. Чим більш комфортно вам буде в ролі root, тим більше ви будете плутати ваші привілеї з привілеями нормального користувача. Наприклад, ви можете подумати, що ви зараз знаходитеся в системі як larry, хоча насправді будете нестримним root.
  3. Використовуйте підказку, що відрізняється, для root. Для цього варто внести зміни в root-овский .bashrc чи .login файл для того, щоб зробити підказку для root відмінної від інших. Наприклад, багато хто використовують символ ``$'' у підказках звичайних користувачів і залишають символ ``#'' для підказки root.
  4. Входите під ім'ям root тільки тоді, коли це абсолютно необхідно. І, як тільки ви закінчите роботу root, вийдіть (виведіть root із системи). Чим менше використовуєте root, тим менше нашкодите системі.

Зрозуміло, є хакери, що використовують root практично завжди і скрізь. Але кожний з них колись по дурості знищив хоча б (у кращому випадку) одну систему. Є загальне правило: поки ви не познайомилися з необмеженими можливостями root, і не звикли до відсутності обмежень, входите під root у крайньому випадку.

Система зберігає наступну інформацію про користувачів:

унікальний ідентифікатор, що привласнюється кожному користувачу в системі. Приклади імен користувачів larry, karl і mdw. Можуть використовуватися букви і цифри, а також нижнє підкреслення і крапка. Звичайно імена користувачів обмежуються вісьмома символами.(чи UID), ідентифікатор користувача, унікальний номер, що привласнюється кожному користувачу системи. Система звичайно відслідковує ідентифікатори користувачів, а не імена.(чи GID), ідентифікатор групи, це ідентифікатор групи користувача. Кожен користувач належить до однієї чи більше груп, визначених системним адміністратором.

Система також зберігає в зашифрованому виді пароль користувача. Команда passwd використовується для установки і зміни пароля.name

"Повне ім'я" чи "дійсне ім'я" зберігається разом з ім'ям користувача. Наприклад, користувач schmoj може мати дійсне ім'я ``Joe Schmo''.directory

Домашній каталог це каталог, у який користувач попадає при вході в систему. Кожен користувач повинний мати свій власний домашній каталог, звичайно в /home.shell

Вихідний shell це shell, що запускається для користувача при його вході в систему. Це, наприклад, може бути /bin/bash чи /bin/tcsh.

Інформація зберігається у файлі реєстрації користувачів /etc/passwd. Кожен рядок цього файлу описує одному користувачі; формат рядка має вигляд:

user name:encrypted password:UID:GID:full name:home directory:login shell

Наприклад, це може виглядати так:

:Xv8Q981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash


Перше поле, ``kiwi'', ім'я користувача.

Наступне поле, ``Xv8Q981g71oKK'', зашифрований пароль. Паролі у виді, що читається, у системі не зберігаються. Самі паролі шифруються як секретні ключі. Іншими словами, ви повинні знати пароль, щоб його розшифрувати. Ця форма шифрации досить надійна. Зауваження перекладача: дивлячись який пароль...

Деякі системи Linux використовують "тіньовий пароль", у якому інформація про паролі зберігається у файлі /etc/shadow. Оскільки /etc/passwd усім доступний, /etc/shadow забезпечує додатковий рівень таємності своєю неприступністю. Тіньовий пароль забезпечує і деякі інші властивості, начебто припинення дії пароля.

Третє поле, ``102'', ідентифікатор користувача (UID). Воно повиннео бути унікальним для кожного користувача. Четверте поле, ``100'', ідентифікатор групи (GID). Цей користувач належить до групи номер 100. Інформація з групи зберігається у файлі /etc/group.

П'яте поле, повне ім'я користувача, ``Laura Poole''. Останні два полючи, домашній каталог користувача (/home/kiwi) і вихідний shell (/bin/bash) відповідно. Домашній каталог користувача не обов'язково повинний мати ім'я, що збігається з ім'ям користувача (username). Однак це допомагає в ідентифікації.


1.2 Створення облікових записів користувачів


При додаванні користувача варто зробити кілька кроків. Користувач повинний бути занесений у файл паролів /etc/passwd під унікальним ім'ям і ідентифікатором. Повинні бути описані ідентифікатор групи (GID), повне ім'я й інша інформація. Повинний бути створений домашній каталог користувача і встановлені необхідні права доступу. Домашній каталог повинний бути постачений необхідними файлами ініціалізації shell. Повинні бути виконані й інші роботи з конфігурації ( наприклад, створений spool для вхідної пошти).

Хоча дуже нескладно додавати користувачів вручну (я так роблю), коли ви супроводжуєте систему з багатьма користувачами, легко щось упустити. Найпростіший спосіб реєстрації користувачів, це використання діалогової програми, що задасть вам усі необхідні питання й автоматично скорегує всі необхідні системні файли. Ця програма називається useradd чи adduser, у залежності від вашого дистрибутива. Сторінки посібника для цих програм повинні бути досить зрозумілими. adduser використовує у своїй роботі файл настроювань /etc/adduser.conf, що задає настроювання за замовчуванням для нового користувача системи.

От приклад звичайного файлу /etc/adduser.conf:


# /etc/adduser.conf 'adduser' configuration

# See adduser (8) and adduser.conf(5) for full documentation

# The DSHELL variable specifies the default login shell on your

# system=/bin/bash


# The DHOME variable specifies the directory containing users' home= home


# If GROUPHOMES is "yes". then the home directories will be created as

# /home/groupname/userHOMES=no


# If LETTERHOMES is "yes", then the created home directories will have

# an extra directory - the first letter of the user name. For example'

# home u user=no


# The SKEL variable specifies the directory containing "skeletal" user

# files; in other words, files such as a sample profile that will be

# copied to the new user's home directory when it is created=/etc/shel


# FIRST_SYSTEM_UID to LAST_SYSTEM_UID inclusive is the range for UIDs

# for dynamically allocated administration and system accounts_SYSTEM_UID=100_SYSTEM_UID=999


# FIRST_UID to LAST_UID inclusive is the range of UIDs of dynamically

# allocated user accounts_UID=1000_UID=29999


# The USERGROUPS variable can be either "yes" or "no" If "yes" each

# created user will be given their own group to use as a default, and

# their home directories will be g+s If "no", each created user will

# be placed in the group whose gid is USERS_GID (see below).=yes


# If USERGROUPS is "no", then USERS_GID should be the GID of the group

# 'users' (or the equivalent group) on your system_GID=100


На додаток до перемінних, котрі потрібні команді adduser, /etc/adduser.conf визначає де за замовчуванням лежать системні файли настроювань для кожного користувача. У даному прикладі вони лежать у каталозі /etc/skel, як визначено в перемінної SKEL=. Файли в даному в каталозі, є настроюваннями системи за замовчуванням для кожного користувача. Це, наприклад, .profile, .tcshrc чи .bashrc, що автоматично копіюються в домашній каталог нового користувача командою adduser. Якщо Ви вважаєте потрібним розмістити в домашньому каталозі кожного нового користувача ще якісь файли настроювань (наприклад, для іксів), покладете їх у каталог /etc/skel.

1.3 Знищення облікових записів користувачів


Видалення користувачів може бути виконане за допомогою команд userdel чи deluser у залежності від кожного конкретного дистрибутива.

Якщо ви побажаєте тимчасово "відключити" користувача від системи, (без видалення його аккаунта), ви можете просто приписати зірочку (``*'') у поле пароля у файлі пароля /etc/passwd. Наприклад, зміна пароля в kiwi у файлі /etc/passwd:

:*Xv80981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash


закриє для kiwi вхід у систему.


1.4 Настройка атрибутів користувацького облікового запису


Після створення користувача вам може знадобитися змінити його атрибути, такі як домашній каталог і пароль. Найпростіший спосіб, це прямо змінити значення в /etc/passwd. Щоб установити пароль користувача використовуйте команду passwd:


# passwd larry


перемінить пароль для larry. Тільки root може змінювати паролі інших користувачів. Звичайний користувач може перемінити тільки свій пароль.

У деяких системах маються команди chfn і chsh, що дозволяють користувачу самому установлювати своє повне ім'я і вихідні атрибути shell. Якщо таких команд ні, то користувачі повинні просити системного адміністратора змінити ці атрибути для них.

1.5 Програми для створення облікових записів користувачів


Для того, щоб пустити у свою систему реального юзера, треба не тільки додати нову облікову картку для нього. Ще треба створити йому домашню директорію і, бажано, покласти туди деякі стартові файли. При цьому треба правильно встановити права нового юзера на ці файли.

Для того, щоб не робити цю роботу вручну, існує спеціальна утиліта . Але, якщо вам потрібно зареєструвати псевдо-юзера чи "поштового юзера", вона не дуже підходить. У цьому випадку краще скористатися більш примітивними засобами._mkdb

Власне, ця утиліта тільки перетворить файл master.passwd у три інших файли Ви можете будь-яким текстовим редактором додати рядок у master.passwd, взявши за зразок кожен з тих рядків, що там уже є (бажано, перед цим уважно прочитати man 5 passwd). Якщо, після цього запустити команду

_mkdb -p /etc/master.passwd


то вона зробить відповідні зміни в spwd.db, pwd.db, passwd.

Не забудьте, що пароль в обліковій картці зберігається в зашифрованому виді. Тому, при складанні запису, це поле облікової картки краще залишити порожнім, а потім занести пароль утилітою, що спеціально для цього призначена:

<ім'я юзера>


Звичайно, це самий складний спосіб, але... Якщо ви коли-небудь візьметеся написати свою програму для реєстрації, то вона повинна буде просто сформувати правильний рядок для файлу master.passwd, занести її в цей файл, а потім просто викликати pwd_mkdb. До речі, інші програми, про які далі мова йде, саме так і роблять.

Ця програма автоматизує процес описаний вище. Вона сама запускає текстовий редактор, а по виходу з редактора, pwd_mkdb.

Полегшення полягає в тому, що вам не треба пам'ятати - який файл ви редагуєте і як правильно викликати pwd_mkdb.

Запис у master.passwd вам все рівно прийдеться скласти самостійно. При цьому не забудьте, що Name і userID повинні бути унікальними для кожного юзера.

Важливе зауваження з приводу текстового редактора. Програма vipw сама не єредактором. Вона запускає текстовий редактор, що заданий в змінній оточення EDITOR, а якщо такий не знайде, то редактор vi. Причому, звичайно, при установці FreeBSD у стартових файлах для root ця перемінна встановлюється, але це той же vi.

Справа в тому, що працювати з цим редактором без підготовки досить складно. Тому, задайте змінну EDITOR, вибравши свій улюблений редактор. Якщо улюбленого редактора у вас поки немає, можна скористатися редактором /bin/ee.

Це програма для додавання нового юзера. Вона задає питання які стосуються нового юзера, сама перевіряє ім'я і user ID на унікальність (причому, для user ID вона сама запропонує придатне значення), створює домашню директорію для юзера і копіює туди заготовки файлів настройки, і навіть може послати привітальний лист зареєстрованому юзеру.

Однак, якщо вам потрібно зареєструвати не звичайного юзера, то вона вам тільки перешкодить.

Наприклад, вам потрібно зареєструвати "поштового юзера". Для такого юзера не потрібна домашня директорія і Shell у цього юзера повинен бути нестандартний. Отож - змусити цю програму не робити домашню директорію дуже важко (якщо взагалі можливо). Крім того, вона не дасть вам вказати в якості Shell довільну програму.

Тому, у цій ситуації, вам доведеться або підчищати за нею все зайве, що вона зробить, або звернутися до інших способів створення облікової картки.useradd

Можливо, вам покажеться більш зручною утиліта pw. Ця програма, за задумом авторів, повинна бути універсальною утилітою для адміністратора в питаннях створення/зміни/видалення юзерів і груп. Тому, для даної задачі (реєстрації нового юзера) її треба запускати так:useradd .....

На відміну від adduser ця утиліта не задає ніяких питань і всі потрібні зведення про нового юзера їй потрібно сказати в командному рядку за допомогою відповідних ключів.

Але, з іншої сторони вона має і ряд переваг:

  1. звичайно, досить їй вказати тільки ім'я нового юзера, все інше вона "складе" сама.

Наприклад:

pw useradd vasia (програма сама підбере придатний userID, і заповнить полючи group, Home dir, Shell і т.п., узявши їх зі свого конфігураційного файлу)

  1. усі дані, що підставляються по замовчуванню, можна легко поміняти, запустивши цю ж програму по іншому:

pw useradd -D ... чи відредагувавши прямо конфігураційний файл /etc/pw.conf (якщо у вас у /etc такого файлу немає, то просто наберіть команду pw useradd -D і він сам створиться).

  1. при цьому можна мати кілька різних конфігураційних файлів, для різних типів юзерів, і явно вказувати в команді - які "замовчування" використовувати для створення даного юзера. Наприклад, у вас є юзери трьох різних типів (відрізняються своїми group, Home dir, Shell і т.п.).

Зробіть три різних конфігураційних файли (просто "скопіюйте" /etc/pw.conf і підправте в кожному те, що потрібно.) Тепер, щоб створити юзера "позамовчуванню" з файлу /etc/pw1.conf, наберіть команду pw useradd vasia -C/etc/pw1.conf

Докладніше про всі параметри (ключах) цієї програми можна подивитися у відповідному man'і (man pw), короткий список ключів можна "запитати" у самої програми, командою pw useradd help (але man pw усе рівно краще прочитати, хоча б раз )

Тут я хочу тільки звернути увагу на ключ -m. Справа в тому, що pw useradd "за замовчуванням" робить тільки запис в обліковій картці. А з цим ключем pw useradd vasia -m вона, також, створить домашню директорію для юзера і скопіює туди відповідні стартові файли і файли настройки.


2. Пограма Useradd


Назва

adduser, addgroup - додати користувача чи групу в систему


Синтаксис

adduser [options] [--home dir] [--uid id] [--ingroup group | --gid id] [--disabled-password] [--gecos gecos] user--system [options] [--home dir] [--uid id] [--group | --ingroup group | --gid id] [--disabled-password] [--gecos gecos] user--group [options] [--gid id] group addgroup [options] [--gid id] group[options] user group


Опції

[--quiet] [--force-badname] [--help] [--version]


Опис

Adduser і addgroup додають користувачів і групи в систему відповідно до опцій командної стрічки і конфігураційної інформації в /etc/adduser.conf. Програми можуть бути запущені в одному з чотирьох режимів:

Додати нормального користувача.

Якщо викликається з одним аргументом не опцією і без опцій --system or --group , то adduser додасть нормального користувача. adduser вибере перший доступний UID з діапазону, зазначеного для нормальних користувачів у конфігураційному файлі. UID може бути перекритий опцією --uid.

За замовчуванням кожному користувачу в GNU/Linux задається відповідна група з таким же ім'ям і ідентифікатором, що дозволяє користувачам легко одержувати доступ до їх домашніх і інших каталогів.

Якщо ця опція відключена установкою USERGROUPS у no, всі ідентифікатори груп користувачів (GID) встановлюються в USERS_GID. Групи користувачів можуть також бути перекриті з командного рядка опціями --gid or --ingroup які встановлюють групу через ID чи ім'я. adduser буде створювати домашній каталог по перемінним DHOME, GROUPHOMES, and LETTERHOMES. Домашній каталог може бути перекритий з командного рядка з опцією --home USERGROUPS встановлене в yes так що будь-які файли, створені в домашній директорії користувача будуть мати правильну групу. adduser буде копіювати файли з SKEL у домашню директорію і пропонувати ввести повне ім'я користувача й інформацію про нього, а також пароль. Ім'я користувача може бути також установлене з опцією --gecos. При завданні опції --disabled-password доступ буде створений, але закритий поки пароль не буде встановлений.

Якщо існує файл /usr/local/sbin/adduser.local , те він буде виконаний після того як був створений доступ для користувача для якої-небудь локальної установки. Аргументи оброблювані в adduser.local це: username uid gid home-directory

Додати системного користувача

Якщо виклик зроблений з одним аргументом не опцією й опцією --system,то adduser додасть системного користувача. adduser вибере перший доступний UID з діапазону, зазначеного для нормальних користувачів у конфігураційному файлі. UID може бути перекритий опцією --uid.

По замовчуванню, системні користувачі відносяться до групи nogroup існуючу групу, використовуйте опцію --gid чи --ingroup групу з таким же ID, використовуйте опцію --group. Домашній каталог створюється по тим же правилам що і для нормальний користувачів. Новий системний користувач буде мати в якості shell'а /bin/false і мати заборонений пароль. Конфігураційний файли з SKEL скопійовані не будуть. Якщо adduser створив домашній каталог і нову групу для системного користувача, то він устанавит права групи суперкористувача на цей каталог.

Додати системну групу

Якщо adduser був викликаний з опцією --group чи був викликаний addgroup , то буде додана системна група.

Ідентифікатор групи (GID) буде обраний з діапазону заданого для системних UIDS в конфигураційному файлі. GID може бути перектритий заданням опції --gid. Група створюється без користувачів. Додати існуючого користувача в існуючу групу, якщо виклик був із двома аргументами не опціями, то adduser додасть існуючого користувача в існуючу групу.

Опції

--disabled-password

Не запускати passwd для установки пароля. Користувач не зможе користатися створеним доступом у систему поки не буде заданий пароль.

-force-badname

По замовчуванню, потрібно щоб ім'я користувача і групи складалося з прописних букв, дозволено один чи багато прописних чи букв цифр. Ця опція включає для This option forces adduser і addgroup більш м'які вимоги.

-gecos name

Заповнює поле де міститься повне ім'я користувача, під час створення нового користувача. adduser не буде запитувати іншу інформацію про користувача, якщо задана дана опція.

-gid id

Коли створюється група, ця опція включає новий GID, що задвется в ній. Коли створюється користувач, ця група поміщає його в задану даною опцією групу.

-group

Коли використовується разом з опцією --system, те буде створена група з таким же ім'ям і ID як у системного користувача. Якщо не використовується з опцією --system, то буде створена група з заданим ім'ям. Ця дія виконується за замовчуванням, якщо викликана програма addgroup.

-help Видає коротеньку інструкцію.

-home каталог

Використовувати каталог як домашній каталог користувача замість того, що задається по умочанию а конфігураційному файлі. Якщо каталог не існує, то він створюється і туди копіюються файли.

-ingroup група

Додати нового користувача в групу замість групи чи користувачів групи заданої за замовчуванням перемінної USERS_GID у adduser.conf.

-quiet

Не видавати повідомлення в процесі роботи.

-system

Створити системного користувача.

-uid id

Установлює новий ідентифікатор користувача (UID) у заданий. adduser буде видавати повідомлення про помилку, якщо такий вже існує.

-version

Видає інформацію про версію й авторські права.


3. Опис алгоритму роботи програми-скрипта add_user


Скрипт програми add_user починаеться з коментарів. Як прийнято перший коментар показує який командний інтерпретатор ми використовуємо. В нашому випадку він вказує на /bin/sh. З наступних коментарів можна отримати інформацію про скрипт-програму та синтаксис для запуску.


# Program: /usr/sbin/adduser for Slackware Linux

# Purpose: Interactive front end to /usr/sbin/useradd

# Syntax: adduser [<new_user_name>]


Далі задаються шляхи до файлів в яких буде міститися інформація про користувача його логін і пароь для входу в систему, групи до яких він належить, оболочка в якій буде працювати користувач після входу в систему. Після задаються шляхи до файлів двійкового формату, тобто до програм які будуть використовуватися при виконанні даного скрипта. А саме

  • useradd - програма для створення користувача в системі;
  • passwd - програма для задання або зміни пароля користувача;
  • chfn - програма для занесення або зміни даних про користувача;
  • chmod - програма для зміни прав доступу до файшлів і каталогів.

З цієї точки починаеться текст скрипта який командний інтерпретатор виконує підчас запуску програми. Коротко опишемо функції що використовуються та кроки виконання.get_input() - функція для читання даних з клавіатури.display () - функція виводу властивостей про профіль користувача.check_group () - фунція робить перевірку, щоб уникнути створення двох одинакових груп. Використовує файл /etc/group.

Потім проходить зчитування імені нового користувача, ініціалізація його логіну і групи, а також визначення до яких груп буде належати даний користувач, створення домашнього каталогу, ініціалізація нового шелу ( в домашній каталог копіюються файли ініціалізації та настройки ). В кінці ініціалізуються програми passwd і chfn.


4. Результати виконання програми

name for new user []: admin

ID (UID) [ defaults to next available ]: 160

group [ users ]: 160

groups (comma separated) []:

directory [ /home/admin ]

[ /bin/bash ]

date (YYYY-MM-DD) []:

account will be created as follows:

________________________________name:admin:2000groups:161groups:[ None ]directory:/home/admin:/bin/bashdate:[ Never ]

is it… if you want to bail out? Hit Control-C. Otherwise, pressto go ahead and make the account.

new account…the user information for adminthe new value, or press ENTER for the defaultName []: Ednak OlegNumber []: 34Phone []: 33-49-10Phone []: 43-52-12[]:password for adminthe new password (minimum of 5, maximum of 127 characters)use a combination of upper and lower case letters and numbers.password: 12345password: too simple.: weak password (enter it again to use it anyway).password: studententer new password: studentchanged.


Вміст файлу /etc/passwd:

:x:0:0::/root:/bin/bash:x:1:1:bin:/bin::x:2:2:daemon:/sbin::x:3:4:adm:/var/log::x:4:7:lp:/var/spool/lpd::x:5:0:sync:/sbin:/bin/sync:x:6:0:shutdown:/sbin:/sbin/shutdown:x:7:0:halt:/sbin:/sbin/halt:x:8:12:mail:/::x:9:13:news:/usr/lib/news::x:10:14:uucp:/var/spool/uucppublic:

#bash:x:11:0:operator:/root:/bin/false:x:12:100:games:/usr/games::x:14:50::/home/ftp:/bin/false:x:25:25:smmsp:/var/spool/clientmqueue:/bin/false

#bash:x:27:27:MySQL:/var/lib/mysql:/bin/false:x:32:32:RPC portmap user:/:/bin/false

#bash:x:42:42:GDM:/var/state/gdm:/bin/false:x:90:90:POP:/::x:99:99:nobody:/::x:1002:104:Dubyna Anatolij Borysovych,BIT,,:/home/lector:/bin/bash:x:1003:105:Student,,,:/home/st:/bin/bash:x:1006:108:Anatolij Myakotin,,,:/home/hkotian:/bin/bash:x:1007:109:Kulyk Oleg Ihorovych,,,:/home/oki:/bin/bash:x:1009:111:Vitaliy Vuylov,,,:/home/vvs:/bin/bashcalh0st:x:1011:113:Vitya,,,:/home/l0calh0st:/bin/bash:x:1013:100:ZLUJ,,,:/home/gsv::x:1014:114:,,,:/home/st2:/bin/bash,,,:/home/andrew:/bin/bash:x:1016:117:Trofimuk Roman Vasyilovych,,,:/home/trv:/bin/bash:x:1017:118:,,,:::x:1018:119:Sanya Rojik,ASP,270,:/home/or:/bin/bash$:*:1019:120:test:dev/null:/bin/false:x:1023:125:Natalka Fryz,,,,KSM-33:/home/nf:/bin/bash:x:1059:159:Sergiy,,,,Student:/home/amos:/bin/bash:x:1060:100:Student 3 kours (KSM),,,:/home/ksm3:/bin/bash:x:1061:161:Uruzbaev Pavlo,,,246798,Student:/home/upm:/bin/bash:x:1062:162:Tymur Korkishko,,,:/home/tko:/bin/bash:x:1063:163:Sasha Glushko,,,,Student:/home/go:/bin/bash:x:1064:164:Andriy Goncaryk,,,,student:/home/gav:/bin/bash:x:1065:165:Shlyahtun Valery,,,,Student KSM-33:/home/svm:/bin/bash:x:1066:166:Petrov Yuriy Igorovich,2209,,,Tehnik:/home/py:/bin/bash:x:1067:167:Karrchomny Yuriy,,,,Student EK-33:/home/ku:/bin/bash:x:1068:168:Semchuk Yaroslav,IOSU,435910,,Student:/home/sya:/bin/bash:x:2000:161:Ednak Oleg,34,33-49-10,43-52-

:/home/admin:/bin/bash

useradd блок схема алгоритм

ВИСНОВОК


В даному курсовому проекті розглянуто скрипт-програму add_user. Дана програма є одним із варіантів інтерфейсу для вбудованої програми адміністрування системи Linux - useradd. Результатом виконання програми є новий обліковий запис користувача системи з настройками і конфігурацією заданою по замовчуванню. При написанні даної програми-скрипта були використані такі програми для управління користувацькими обліковими записами як /usr/bin/chfn, /bin/chmod, /usr/bin/passwd.

Недоліком даної програми є те, шо спочатку потрібно за допомогою програми addgroup створити групу з іменем користувача. Програма видає запит яка група для цього користувача буде основною. Тоді ми вказуємо ідентифікатор групи яку ми створили перед запуском програми add_user. Також потрібно знати який ідентифікатор користувача в файлі .etc/passwd записаний останнім. Це потрібно для вказання при запиті який номер ідентифікатора присвоїти новому коритувачу.

Перевагами даної програми є те шо при запуску непотрібно вказувати ніяких опцій ( при запуску useradd потрібно або вказувати декілька опцій для правильного створення користувацького облікового запису або після закінчення виконання програми відкривати файл /etc/passwd і виправляти все самому).


СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ


1.Секреты UNIX, 2-е изд. : Пер. с англ. - М. : Издательський дом « Вильямс », 2001. - 928с.

2.LINUX. Л. Кунин, Р. Рассел. - BHV - Киев, 1998.

.Знакомство с UNIX. С. Золотов. - СПб.: BHV - Санк-Петербург, 1998.

.Операцыонные системы. Энциклопедия пользователя. Марк А. Спортак и др.; перев. с англ. - Киев, ДиаСофт, 1998.

.Основы UNIX. Учебное руководство для специалистов. Дж. Челлис, Ч. Перкинс; перевод с англ. - Лори, 1997.

.Linux для чайников. Учебный курс, 2-е изд. - Русская редакция, 1998.


ДОДАТОК А


Текст програми


#!/bin/sh


#######################################################################

#

# Program: /usr/sbin/add_user for Slackware Linux

# Purpose: Interactive front end to /usr/sbin/useradd

#

#######################################################################

#

# Syntax: adduser [<new_user_name>]

#

#######################################################################


# Path to files=/etc/passwd=/etc/group=/etc/shells


# Paths to binaries=/usr/sbin/useradd=/usr/bin/chfn=/usr/bin/passwd=/bin/chmod

# Defaults=/home=/bin/bash=711 ; # home dir permissions - may be preferable to use 701, however.


# Determine what the minimum UID is (for UID recycling)

# (we ignore it if it's not at the beginning of the line (i.e. commented out with #))

recycleUIDMIN="$(grep ^UID_MIN /etc/login.defs | awk {'print $2'} 2>/dev/null)"

# If we couldn't find it, set it to the default of 1000

[ -z "$recycleUIDMIN" ]; thenrecycleUIDMIN=1000 ; # this is the default from /etc/login.defs



# This setting enables the 'recycling' of older unused UIDs.=no


# Function to read keyboard input.

# bash1 is broken (even ash will take read -ep!), so we work around

# it (even though bash1 is no longer supported on Slackware).

get_input() {output[ "`echo $BASH_VERSION | cut -b1`" = "1" ]; then-n "${1} " >&2 ; # fudge for use with bash v1output# this should work with any other /bin/sh-ep "${1} " output$output

}


# Function to display the account info

display () {goose="$(echo $2 | cut -d ' ' -f 2-)" ; # lop off the prefixed argument useradd needs-n "$1 "

# If it's null then display the 'other' information[ -z "$goose" -a ! -z "$3" ]; then"$3""$goose"

}


# Function to check whether groups exist in the /etc/group filecheck_group () {got_error group[ ! -z "$@" ]; thengroup in $@ ; douid_not_named="" uid_not_num=""-v "$^" $gfile | awk -F: '{print $1}' | grep "^${group}$" >/dev/null 2>&1 || uid_not_named=yes-v "$^" $gfile | awk -F: '{print $3}' | grep "^${group}$" >/dev/null 2>&1 || uid_not_num=yes[ ! -z "$uid_not_named" -a ! -z "$uid_not_num" ]; then"- Group '$group' does not exist"_error=yes

# Return exit code of 1 if at least one of the groups didn't exist[ ! -z "$got_error" ]; then1

}


#: Read the login name for the new user :#

# Set the login variable to the command line param="$1"=yes[ ! -z $needinput ]; do[ -z "$LOGIN" ]; then[ -z "$LOGIN" ]; do LOGIN="$(get_input "Login name for new user []:")" ; done"^${LOGIN}:" $pfile >/dev/null 2>&1 ; # ensure it's not already used[ $? -eq 0 ]; then"- User '$LOGIN' already exists; please choose another"LOGIN[ ! "$LOGIN" = "`echo $LOGIN | tr A-Z a-z`" ]; then # useradd does not allow uppercase"- User '$LOGIN' contains illegal characters (uppercase); please choose another"LOGINneedinput


# Display the user name passed from the shell if it hasn't changed[ "$1" = "$LOGIN" ]; then"Login name for new user: $LOGIN"


#: Get the UID for the user & ensure it's not already in use :#

#

# Whilst we _can_ allow users with identical UIDs, it's not a 'good thing' because

# when you change password for the uid, it finds the first match in /etc/passwd

# which isn't necessarily the correct user

#=yes[ ! -z "$needinput" ]; do

_UID="$(get_input "User ID ('UID') [ defaults to next available ]:")"-v "^$" $pfile | awk -F: '{print $3}' | grep "^${_UID}$" >/dev/null 2>&1[ $? -eq 0 ]; then"- That UID is already in use; please choose another"[ ! -z "$(echo $_UID | egrep [A-Za-z])" ]; then"- UIDs are numerics only"needinput

# If we were given a UID, then syntax up the variable to pass to useradd[ ! -z "$_UID" ]; then_ID="-u ${_UID}"

# Will we be recycling UIDs?[ "$recycleuids" = "yes" ]; then_ID="-u $(awk -F: '{uid[$3]=1} END { for (i=ENVIRON["recycleUIDMIN"];i in uid;i++);print i}' $pfile)"


#: Get the initial group for the user & ensure it exists :#

#

# We check /etc/group for both the text version and the group ID number=yes[ ! -z "$needinput" ]; do="$(get_input "Initial group [ users ]:")"_group "$GID"[ $? -gt 0 ]; then"- Please choose another"needinput

# Syntax the variable ready for useradd[ -z "$GID" ]; then="-g users"="-g ${GID}"


#: Get additional groups for the user :#

#=yes[ ! -z "$needinput" ]; do="$(get_input "Additional groups (comma separated) []:")"="$(echo "$AGID" | tr -d ' ' | tr , ' ')" ; # fix up for parsing[ ! -z "$AGID" ]; then_group "$AGID" ; # check all groups at once (treated as N # of params)[ $? -gt 0 ]; then"- Please re-enter the group(s)"needinput ; # we found all groups specified="-G $(echo "$AGID" | tr ' ' ,)"needinput ; # we don't *have* to have additional groups


#: Get the new user's home dir :#

#=yes[ ! -z "$needinput" ]; do="$(get_input "Home directory [ ${defhome}/${LOGIN} ]")"[ -z "$HME" ]; then="${defhome}/${LOGIN}"

# Warn the user if the home dir already exists[ -d "$HME" ]; then"- Warning: '$HME' already exists !"="$(get_input " Do you wish to change the home directory path? (Y/n) ")"[ "$(echo $getyn | grep -i "n")" ]; thenneedinputneedinput="-d ${HME}"


#: Get the new user's shell :#=yes[ ! -z "$needinput" ]; dogot_error="$(get_input "Shell [ ${defshell} ]")"[ -z "$SHL" ]; then="${defshell}"

# Warn the user if the shell doesn't exist in /etc/shells or as a file[ -z "$(grep "^${SHL}$" $sfile)" ]; then"- Warning: ${SHL} is not in ${sfile} (potential problem using FTP)"_error=yes[ ! -f "$SHL" ]; then"- Warning: ${SHL} does not exist as a file"_error=yes[ ! -z "$got_error" ]; then="$(get_input " Do you wish to change the shell? (Y/n) ")"[ "$(echo $getyn | grep -i "n")" ]; thenneedinputneedinput="-s ${SHL}"


#: Get the expiry date :#=yes[ ! -z "$needinput" ]; do="$(get_input "Expiry date (YYYY-MM-DD) []:")"[ ! -z "$EXP" ]; then

# Check to see whether the expiry date is in the valid format[ -z "$(echo "$EXP" | grep "^[[:digit:]]\{4\}[-]\?[[:digit:]]\{2\}[-]\?[[:digit:]]\{2\}$")" ]; then"- That is not a valid expiration date"needinput="-e ${EXP}"needinput


# Display the info about the new impending account"New account will be created as follows:""---------------------------------------""Login name: " "$LOGIN""UID: " "$_UID" "[ Next available ]""Initial group: " "$GID""Additional groups: " "$AGID" "[ None ]""Home directory: " "$HME""Shell: " "$SHL""Expiry date: " "$EXP" "[ Never ]"

"This is it... if you want to bail out, hit Control-C. Otherwise, press""ENTER to go ahead and make the account."junk

"Creating new account..."


# Add the account to the system="$useradd "$HME" -m "$EXP" "$U_ID" "$GID" "$AGID" "$SHL" "$LOGIN""

$CMD

[ $? -gt 0 ]; then"- Error running useradd command -- account not created!""(cmd: $CMD)"1


# Set the finger information

$chfn "$LOGIN"[ $? -gt 0 ]; then"- Warning: an error occurred while setting finger information"


# Set a password

$passwd "$LOGIN"[ $? -gt 0 ]; then"* WARNING: An error occured while setting the password for"" this account. Please manually investigate this *"1


# If it was created (it should have been!), set the permissions for that user's dir="$(echo "$HME" | awk '{print $2}')" ; # We have to remove the -g prefix[ -d "$HME" ]; then

$chmod $defchmod "$HME"

"Account setup complete."0

ДОДАТОК Б


БЛОКСХЕМА АЛГОРИТМУ ПРОГРАМИ






















































Зміст Вступ . Концепція роботи з користувачами .1 Обліковий запис root .2 Створення облікових записів користувачів .3 Знищення облікових запи

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ