Створення програми додавання користувачів в 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