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

Обліковий запис root. Настройка атрибутів користувацького облікового запису. Програми для створення облікових записів користувачів. Створення програми-скрипта add_user для надання робочого інтерфейсу програмі useradd. Блок схема алгоритму програми.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 10.01.2013
Размер файла 35,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

  • Зміст

Вступ

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

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

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

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

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

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

2. Пограма Useradd

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

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

Висновок

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

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

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

ВСТУП

Користувач 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. Кращий спосіб уникнути неприємностей, це:

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

Не звикайте використовувати root. Чим більш комфортно вам буде в ролі root, тим більше ви будете плутати ваші привілеї з привілеями нормального користувача. Наприклад, ви можете подумати, що ви зараз знаходитеся в системі як larry, хоча насправді будете нестримним root.

Використовуйте підказку, що відрізняється, для root. Для цього варто внести зміни в root-овский .bashrc чи .login файл для того, щоб зробити підказку для root відмінної від інших. Наприклад, багато хто використовують символ ``$'' у підказках звичайних користувачів і залишають символ ``#'' для підказки root.

Входите під ім'ям root тільки тоді, коли це абсолютно необхідно. І, як тільки ви закінчите роботу root, вийдіть (виведіть root із системи). Чим менше використовуєте root, тим менше нашкодите системі.

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

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

username

унікальний ідентифікатор, що привласнюється кожному користувачу в системі. Приклади імен користувачів larry, karl і mdw. Можуть використовуватися букви і цифри, а також нижнє підкреслення і крапка. Звичайно імена користувачів обмежуються вісьмома символами.

user

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

group

ID (чи GID), ідентифікатор групи, це ідентифікатор групи користувача. Кожен користувач належить до однієї чи більше груп, визначених системним адміністратором.

password

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

full name

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

home directory

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

login shell

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

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

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

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

kiwi: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

DSHELL=/bin/bash

# The DHOME variable specifies the directory containing users' home

DHOME= home

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

# /home/groupname/user

GROUP HOMES=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

LETTERHOMES=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

SKEL=/etc/shel

# FIRST_SYSTEM_UID to LAST_SYSTEM_UID inclusive is the range for UIDs

# for dynamically allocated administration and system accounts

FIRST_SYSTEM_UID=100

LAST_SYSTEM_UID=999

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

# allocated user accounts

FIRST_UID=1000

LAST_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).

USERGROUPS=yes

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

# 'users' (or the equivalent group) on your system

USERS_GID=100

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

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

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

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

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

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

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

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

# passwd larry

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

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

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

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

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

pwd_mkdb

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

pwd_mkdb -p /etc/master.passwd

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

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

passwd <ім'я юзера>

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

vipw

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

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

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

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

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

adduser

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

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

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

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

pw useradd

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

pw useradd .....

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

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

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

Наприклад:

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

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

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

при цьому можна мати кілька різних конфігураційних файлів, для різних типів юзерів, і явно вказувати в команді - які "замовчування" використовувати для створення даного юзера. Наприклад, у вас є юзери трьох різних типів (відрізняються своїми 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

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

adduser --group [options] [--gid id] group addgroup [options] [--gid id] group

adduser [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 - програма для зміни прав доступу до файшлів і каталогів.

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

function get_input() - функція для читання даних з клавіатури.

function display () - функція виводу властивостей про профіль користувача.

function check_group () - фунція робить перевірку, щоб уникнути створення двох одинакових груп. Використовує файл /etc/group.

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

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

Login name for new user []: admin

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

Initial group [ users ]: 160

Additional groups (comma separated) []:

Home directory [ /home/admin ]

Shell [ /bin/bash ]

Expiry date (YYYY-MM-DD) []:

New account will be created as follows:

________________________________

Login name: admin

UID: 2000

Initial groups: 161

Additional groups: [ None ]

Home directory: /home/admin

Shell: /bin/bash

Expiry date: [ Never ]

This is it… if you want to bail out? Hit Control-C. Otherwise, press

ENTER to go ahead and make the account.

Creating new account…

Changing the user information for admin

Enter the new value, or press ENTER for the default

Full Name []: Ednak Oleg

Room Number []: 34

Work Phone []: 33-49-10

Home Phone []: 43-52-12

Other []:

Changing password for admin

Enter the new password (minimum of 5, maximum of 127 characters)

Please use a combination of upper and lower case letters and numbers.

New password: 12345

Bad password: too simple.

Warning: weak password (enter it again to use it anyway).

New password: student

Re-enter new password: student

Password changed.

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

root:x:0:0::/root:/bin/bash

bin:x:1:1:bin:/bin:

daemon:x:2:2:daemon:/sbin:

adm:x:3:4:adm:/var/log:

lp:x:4:7:lp:/var/spool/lpd:

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/:

news:x:9:13:news:/usr/lib/news:

uucp:x:10:14:uucp:/var/spool/uucppublic:

#bash

operator:x:11:0:operator:/root:/bin/false

games:x:12:100:games:/usr/games:

ftp:x:14:50::/home/ftp:/bin/false

smmsp:x:25:25:smmsp:/var/spool/clientmqueue:/bin/false

#bash

mysql:x:27:27:MySQL:/var/lib/mysql:/bin/false

rpc:x:32:32:RPC portmap user:/:/bin/false

#bash

gdm:x:42:42:GDM:/var/state/gdm:/bin/false

pop:x:90:90:POP:/:

nobody:x:99:99:nobody:/:

lector:x:1002:104:Dubyna Anatolij Borysovych,BIT,,:/home/lector:/bin/bash

st:x:1003:105:Student,,,:/home/st:/bin/bash

hkotian:x:1006:108:Anatolij Myakotin,,,:/home/hkotian:/bin/bash

oki:x:1007:109:Kulyk Oleg Ihorovych,,,:/home/oki:/bin/bash

vvs:x:1009:111:Vitaliy Vuylov,,,:/home/vvs:/bin/bash

l0calh0st:x:1011:113:Vitya,,,:/home/l0calh0st:/bin/bash

gsv:x:1013:100:ZLUJ,,,:/home/gsv:

st2:x:1014:114:,,,:/home/st2:/bin/bash

Stepanenko,,,:/home/andrew:/bin/bash

trv:x:1016:117:Trofimuk Roman Vasyilovych,,,:/home/trv:/bin/bash

squid:x:1017:118:,,,::

or:x:1018:119:Sanya Rojik,ASP,270,:/home/or:/bin/bash

test$:*:1019:120:test:dev/null:/bin/false

nf:x:1023:125:Natalka Fryz,,,,KSM-33:/home/nf:/bin/bash

amos:x:1059:159:Sergiy,,,,Student:/home/amos:/bin/bash

ksm3:x:1060:100:Student 3 kours (KSM),,,:/home/ksm3:/bin/bash

upm:x:1061:161:Uruzbaev Pavlo,,,246798,Student:/home/upm:/bin/bash

tko:x:1062:162:Tymur Korkishko,,,:/home/tko:/bin/bash

go:x:1063:163:Sasha Glushko,,,,Student:/home/go:/bin/bash

gav:x:1064:164:Andriy Goncaryk,,,,student:/home/gav:/bin/bash

svm:x:1065:165:Shlyahtun Valery,,,,Student KSM-33:/home/svm:/bin/bash

py:x:1066:166:Petrov Yuriy Igorovich,2209,,,Tehnik:/home/py:/bin/bash

ku:x:1067:167:Karrchomny Yuriy,,,,Student EK-33:/home/ku:/bin/bash

sya:x:1068:168:Semchuk Yaroslav,IOSU,435910,,Student:/home/sya:/bin/bash

admin:x:2000:161:Ednak Oleg,34,33-49-10,43-52-

12:/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.

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

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

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

6. 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

pfile=/etc/passwd

gfile=/etc/group

sfile=/etc/shells

# Paths to binaries

useradd=/usr/sbin/useradd

chfn=/usr/bin/chfn

passwd=/usr/bin/passwd

chmod=/bin/chmod

# Defaults

defhome=/home

defshell=/bin/bash

defchmod=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 #))

export 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

if [ -z "$recycleUIDMIN" ]; then

export recycleUIDMIN=1000 ; # this is the default from /etc/login.defs

fi

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

recycleuids=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).

function get_input() {

local output

if [ "`echo $BASH_VERSION | cut -b1`" = "1" ]; then

echo -n "${1} " >&2 ; # fudge for use with bash v1

read output

else # this should work with any other /bin/sh

read -ep "${1} " output

fi

echo $output

}

# Function to display the account info

function display () {

local goose

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

echo -n "$1 "

# If it's null then display the 'other' information

if [ -z "$goose" -a ! -z "$3" ]; then

echo "$3"

else

echo "$goose"

fi

}

# Function to check whether groups exist in the /etc/group file

function check_group () {

local got_error group

if [ ! -z "$@" ]; then

for group in $@ ; do

local uid_not_named="" uid_not_num=""

grep -v "$^" $gfile | awk -F: '{print $1}' | grep "^${group}$" >/dev/null 2>&1 || uid_not_named=yes

grep -v "$^" $gfile | awk -F: '{print $3}' | grep "^${group}$" >/dev/null 2>&1 || uid_not_num=yes

if [ ! -z "$uid_not_named" -a ! -z "$uid_not_num" ]; then

echo "- Group '$group' does not exist"

got_error=yes

fi

done

fi

# Return exit code of 1 if at least one of the groups didn't exist

if [ ! -z "$got_error" ]; then

return 1

fi

}

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

# Set the login variable to the command line param

echo

LOGIN="$1"

needinput=yes

while [ ! -z $needinput ]; do

if [ -z "$LOGIN" ]; then

while [ -z "$LOGIN" ]; do LOGIN="$(get_input "Login name for new user []:")" ; done

fi

grep "^${LOGIN}:" $pfile >/dev/null 2>&1 ; # ensure it's not already used

if [ $? -eq 0 ]; then

echo "- User '$LOGIN' already exists; please choose another"

unset LOGIN

elif [ ! "$LOGIN" = "`echo $LOGIN | tr A-Z a-z`" ]; then # useradd does not allow uppercase

echo "- User '$LOGIN' contains illegal characters (uppercase); please choose another"

unset LOGIN

else

unset needinput

fi

done

# Display the user name passed from the shell if it hasn't changed

if [ "$1" = "$LOGIN" ]; then

echo "Login name for new user: $LOGIN"

fi

#: 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

#

echo

needinput=yes

while [ ! -z "$needinput" ]; do

_UID="$(get_input "User ID ('UID') [ defaults to next available ]:")"

grep -v "^$" $pfile | awk -F: '{print $3}' | grep "^${_UID}$" >/dev/null 2>&1

if [ $? -eq 0 ]; then

echo "- That UID is already in use; please choose another"

elif [ ! -z "$(echo $_UID | egrep [A-Za-z])" ]; then

echo "- UIDs are numerics only"

else

unset needinput

fi

done

# If we were given a UID, then syntax up the variable to pass to useradd

if [ ! -z "$_UID" ]; then

U_ID="-u ${_UID}"

else

# Will we be recycling UIDs?

if [ "$recycleuids" = "yes" ]; then

U_ID="-u $(awk -F: '{uid[$3]=1} END { for (i=ENVIRON["recycleUIDMIN"];i in uid;i++);print i}' $pfile)"

fi

fi

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

#

# We check /etc/group for both the text version and the group ID number

echo

needinput=yes

while [ ! -z "$needinput" ]; do

GID="$(get_input "Initial group [ users ]:")"

check_group "$GID"

if [ $? -gt 0 ]; then

echo "- Please choose another"

else

unset needinput

fi

done

# Syntax the variable ready for useradd

if [ -z "$GID" ]; then

GID="-g users"

else

GID="-g ${GID}"

fi

#: Get additional groups for the user :#

#

echo

needinput=yes

while [ ! -z "$needinput" ]; do

AGID="$(get_input "Additional groups (comma separated) []:")"

AGID="$(echo "$AGID" | tr -d ' ' | tr , ' ')" ; # fix up for parsing

if [ ! -z "$AGID" ]; then

check_group "$AGID" ; # check all groups at once (treated as N # of params)

if [ $? -gt 0 ]; then

echo "- Please re-enter the group(s)"

else

unset needinput ; # we found all groups specified

AGID="-G $(echo "$AGID" | tr ' ' ,)"

fi

else

unset needinput ; # we don't *have* to have additional groups

fi

done

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

#

echo

needinput=yes

while [ ! -z "$needinput" ]; do

HME="$(get_input "Home directory [ ${defhome}/${LOGIN} ]")"

if [ -z "$HME" ]; then

HME="${defhome}/${LOGIN}"

fi

# Warn the user if the home dir already exists

if [ -d "$HME" ]; then

echo "- Warning: '$HME' already exists !"

getyn="$(get_input " Do you wish to change the home directory path? (Y/n) ")"

if [ "$(echo $getyn | grep -i "n")" ]; then

unset needinput

fi

else

unset needinput

fi

done

HME="-d ${HME}"

#: Get the new user's shell :#

echo

needinput=yes

while [ ! -z "$needinput" ]; do

unset got_error

SHL="$(get_input "Shell [ ${defshell} ]")"

if [ -z "$SHL" ]; then

SHL="${defshell}"

fi

# Warn the user if the shell doesn't exist in /etc/shells or as a file

if [ -z "$(grep "^${SHL}$" $sfile)" ]; then

echo "- Warning: ${SHL} is not in ${sfile} (potential problem using FTP)"

got_error=yes

fi

if [ ! -f "$SHL" ]; then

echo "- Warning: ${SHL} does not exist as a file"

got_error=yes

fi

if [ ! -z "$got_error" ]; then

getyn="$(get_input " Do you wish to change the shell? (Y/n) ")"

if [ "$(echo $getyn | grep -i "n")" ]; then

unset needinput

fi

else

unset needinput

fi

done

SHL="-s ${SHL}"

#: Get the expiry date :#

echo

needinput=yes

while [ ! -z "$needinput" ]; do

EXP="$(get_input "Expiry date (YYYY-MM-DD) []:")"

if [ ! -z "$EXP" ]; then

# Check to see whether the expiry date is in the valid format

if [ -z "$(echo "$EXP" | grep "^[[:digit:]]\{4\}[-]\?[[:digit:]]\{2\}[-]\?[[:digit:]]\{2\}$")" ]; then

echo "- That is not a valid expiration date"

else

unset needinput

EXP="-e ${EXP}"

fi

else

unset needinput

fi

done

# Display the info about the new impending account

echo

echo "New account will be created as follows:"

echo

echo "---------------------------------------"

display "Login name: " "$LOGIN"

display "UID: " "$_UID" "[ Next available ]"

display "Initial group: " "$GID"

display "Additional groups: " "$AGID" "[ None ]"

display "Home directory: " "$HME"

display "Shell: " "$SHL"

display "Expiry date: " "$EXP" "[ Never ]"

echo

echo "This is it... if you want to bail out, hit Control-C. Otherwise, press"

echo "ENTER to go ahead and make the account."

read junk

echo

echo "Creating new account..."

echo

echo

# Add the account to the system

CMD="$useradd "$HME" -m "$EXP" "$U_ID" "$GID" "$AGID" "$SHL" "$LOGIN""

$CMD

if [ $? -gt 0 ]; then

echo "- Error running useradd command -- account not created!"

echo "(cmd: $CMD)"

exit 1

fi

# Set the finger information

$chfn "$LOGIN"

if [ $? -gt 0 ]; then

echo "- Warning: an error occurred while setting finger information"

fi

# Set a password

$passwd "$LOGIN"

if [ $? -gt 0 ]; then

echo "* WARNING: An error occured while setting the password for"

echo " this account. Please manually investigate this *"

exit 1

fi

# If it was created (it should have been!), set the permissions for that user's dir

HME="$(echo "$HME" | awk '{print $2}')" ; # We have to remove the -g prefix

if [ -d "$HME" ]; then

$chmod $defchmod "$HME"

fi

echo

echo

echo "Account setup complete."

exit 0

ДОДАТОК Б

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

Размещено на Allbest.ru


Подобные документы

  • Алгоритмічна мова програмування універсального призначення Turbo Pascal. Розробка і створення програми для гри "Шибениця". Алгоритм функціонування программи, блок-схема алгоритму. Використання додаткових модулів Graph та Crt у процессі створення програми.

    курсовая работа [2,0 M], добавлен 23.06.2010

  • Розробка структури, алгоритму роботи програми, яка забезпечує можливість покупки товарів. Створення списку користувачів та списку продуктів. Розробка структур даних та основних процедур програми. Алгоритм створення платформи під назвою "Сlaude Monet".

    курсовая работа [121,3 K], добавлен 14.05.2019

  • Загальна характеристика алгоритму та опис програми. Керівництво системного програміста. Особливості запуску програми в Linux, FreeBSD, Windows. Аналіз результатів тестування програми, що проектується, вивчення та оцінка її практичної ефективності.

    курсовая работа [91,4 K], добавлен 13.06.2014

  • Функції комп'ютерної програми-органайзера, пов'язані із забезпеченням роботи календаря, записної книжки, менеджера контактів (адресно-телефонної книги), годинника, калькулятора. Програмна модель, розробка інтерфейсу і тестування програми, інсталяція.

    курсовая работа [932,8 K], добавлен 03.06.2010

  • Розробка програми реєстрації і автоматизованого створення звіту на рік по викраденим машинам. Математична модель задачі, структура зберігаючих даних. Створення алгоритмів основної програми на мові Turbo Pascal і процедур Vvod і Red. Вихідний код програми.

    курсовая работа [25,4 K], добавлен 07.10.2010

  • Розробка програми для вирішення графічної задачі. При вирішенні задачі необхідно cтворювати програму у середовищі програмування Turbo Pascal. Розробка алгоритму функціонування програми і надання блок-схеми алгоритму. Демонстрація роботи програми.

    курсовая работа [1,3 M], добавлен 23.06.2010

  • Створення програми, що видає результати голосування та підсумки виборів. Алгоритм розробки програми. Опис структури даних та вимоги до них, стандартних процедур та функцій, файлів та їх призначення. Приклад тестування та результати роботи програми.

    курсовая работа [1,0 M], добавлен 28.06.2012

  • Створення програми "Шаховий кінь" в системі програмування Turbo Pascal. Генерування відповідно до заданих початкових кординат маршруту руху коня. Алгоритм задачі: початок, виведення зображення та пошук. Реалізація програми та демонтрація її роботи.

    курсовая работа [1,3 M], добавлен 23.06.2010

  • Розробка та налагодження програми "Заробітна плата" на мові високого рівня С++ для комп'ютерів з операційною системою Windows 7. Текстуальний опис алгоритму. Створення UML-діаграми та обробка інформації з бази даних. Інструкція по роботі з програмою.

    курсовая работа [698,4 K], добавлен 14.10.2012

  • Створення двух файлів В1 і В2 з шести двоцифрових цифр з введенням в довільному порядку цифр з клавіатури із записуванням парних цифр в файл В3, а непарних - у файл В4. Процес розробки програми за допомогою мови "Асемблер". Блок-схема алгоритму задачі.

    курсовая работа [37,6 K], добавлен 26.11.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.