5.5 Основи системного адміністрування
Ви адміністратор всіх тих комп'ютерів, на яких ви є користувачем root. Це може бути комп'ютер на вашому робочому столі, з одним або двома користувачами, а може бути і більшою сервер з декількома сотнями користувачів. Безумовно, вам необхідно знати, як маніпулювати користувачами і безпечно вимикати комп'ютер. Насправді, це не так складно, як здається, але доведеться звикнути до деяких особливостей. На додаток до цього, вам доведеться ознайомитися з деякими ідеями, і принципами роботи системи паролів.
5.5.1 Користувачі і групи
допоміжні програми
Найпростіший спосіб маніпулювання користувачами - за допомогою що поставляються з дистрибутивом допоміжних скриптів і програм. В Slackware для роботи з користувачами є такі програми: adduser. userdel (8), chfn (1), chsh (1) і passwd (1). А для роботи з групами є groupadd (8), groupdel (8) і groupmod (8). За винятком chfn. chsh і passwd перераховані програми можуть виконуватися тільки користувачем root і тому розташовані вони в / usr / sbin. chfn. chsh і passwd можуть бути виконані будь-ким, а розташовані вони в каталозі / usr / bin.
Login name for new user (8 characters or less) []: jellyd
Це ім'я, яке користувач буде використовувати для входу в систему. Він повинен складатися з восьми-менш символів, так як все login утиліти розраховані на це. Зазвичай використовуються тільки маленькі букви, але можна користуватися і великими.
User id for jellyd [defaults to next available]:
ID (UID) користувача, це насправді то, за допомогою чого в системі Linux визначається приналежність файлів. Кожен користувач має унікальний номер, починаючи з 1000 в Slackware. Ви можете вибрати UID для нового користувача, або ви можете просто дозволити програмі adduser привласнити користувачеві наступний вільний номер.
Initial group for jellyd [users]:
Всі користувачі за замовчуванням потрапляють в групу users. Ви можете захотіти створити окрему групу для кожного з користувачів, але це не рекомендується.
Additional groups for jellyd (seperated with commas, no spaces) []:
Тут вам пропонується додати користувача в додаткові групи. Один користувач може значитися в декількох групах. Це корисно, якщо у вас є різні групи для різних завдань, наприклад, для зміни файлів веб-сайту, для ігор і т.д.
jellyd's home directory [/ home / jellyd]:
jellyd's shell [/ bin / bash]:
bash це оболонка за замовчуванням в Slackware Linux і підійде для більшості людей. Якщо ваш новий користувач раніше користувався Unix, він може бути захоче якусь іншу оболонку, до якої звик більше. Ви можете поміняти оболонку зараз, або ж користувач зробить це пізніше самостійно за допомогою chsh команди.
jellyd's account expiry date (YYYY-MM-DD) []:
Ви можете задати дату, після якої користувач не буде більше мати доступу до системи. За замовчуванням, це нескінченність. Наприклад, ця опція може бути корисна для ISP, якщо вони хочуть створити користувача до певної дати, поки не отримувати плату за наступний рік.
OK, I'm about to make a new account. Here's
what you entered so far:
Звичайно, можливо додавати, змінювати і видаляти користувачів і групи вручну. Після того, як ви ознайомитеся з процедурою, можливо, ви знайдете, що використання скриптів складніше, ніж створення вручну.
Спочатку, додамо нового користувача в файли / etc / passwd (5), / etc / shadow (5) і / etc / group (5). Файл passwd містить деяку інформацію про користувача, але не містить їх паролів. Цей файл повинен бути доступний для читання всім користувачам, але ви не хочете, щоб паролі, навіть закодовані, були доступні для читання всьому світу, так як це буде величезною допомогою зловмисникам. Тому закодовані паролі зберігаються в тіньовому файлі, який доступний для читання лише root користувачеві, а в файлі passwd паролі користувачів відображаються, як '' x ''. Файл group показує список всіх груп, і хто з користувачів до яких груп ставитися.
Давайте розглянемо / etc / passwd файл і і розберемося, як додати когось. Типова рядок файлу виглядає таким чином:
chris: x: 1000: 100: Chris Lumens, Room 2. / home / chris: / bin / bash
Кожен рядок, відповідає користувачеві. Поля в кожній лінії розділені двокрапкою. Поля в порядку зліва на право: ім'я для входу в систему, закодований пароль ( '' x '' для всіх в Slackware системі, так як ми користуємося пакетом для тіньових файлів паролів), ID користувача, ID групи, додаткова інформація про користувача, розділена комами, домашній каталог і оболонка. Що вам треба зробити, так це додати в кінець файлу рядок, заповнивши всі перераховані поля відповідними новому користувачеві значеннями.
Переконайтеся, що пароль x, що ID користувача унікальний, що користувач входить в групу 100 ( '' users '' група в Slackware) і що обрана правильна оболонка.
Тепер додамо рядок в / etc / shadow. який містить паролі. Типова рядок цього файлу виглядає ось так:
Як ви бачите, це в основному інформація про закінчення аккаунта. Якщо ви не користуєтеся інформацією про закінчення аккаунта, вам треба тільки заповнити деякі з полів зі спеціальними значеннями. Якщо ви цього не знадобиться провести спочатку деякі обчислення і прийняти деякі рішення, до того, як ви зможете заповнити всі ці поля. Для нашого нового користувача впишіть якесь сміття в поле пароля. Не хвилюйтеся про те, який саме зараз встановлений пароль, так як через хвилину ми змінимо це. У паролі можуть бути використані будь-які символи крім двокрапки. Залиште '' кількість днів, з моменту зміни пароля '' порожнім. Введіть 0, 99999 і 7 як це вказано в прикладі вище (в ті ж поля), і залиште інші поля порожніми.
Для тих з вас, хто побачивши мій пароль в цьому прикладі, і думає, що ви можете зламати його, продовжуйте, будь ласка. Ви тепер знаєте пароль до тестової системи, що знаходиться за firewall. Це дуже вам допоможе :)
Так як все є членами '' users '' групи за замовчуванням, вам не треба додавати нового користувача в неї. Якщо ви захочете створити нову групу або додати нового користувача в інші групи, вам необхідно буде відредагувати / etc / group. Ось типова рядок файлу:
Поля: ім'я групи, пароль групи, ID групи і члени групи. Створення нової групи, це всього лише додавання ще одного рядка, з унікальним ID і вказівкою списку користувачів, яких ви хочете включити в групу, в цей файл. Всі з перерахованих користувачів, якщо вони в даний момент в системі, змушені будуть вийти і знову ввійти в систему, щоб зміни вступили в силу.
Тепер давайте повернемося до команди passwd. щоб створити пароль для створеного нами користувача. Потім скористаємося mkdir. щоб створити домашній каталог там, де ми вказали, що він буде розташований в / etc / passwd файлі.
Якщо ви встановили sendmail (8), вам необхідно буде створити новий файл з відповідними правами, що належить новому користувачеві в / var / spool / mail каталозі. Ось приклад:
#chown jellyd.users / var / spool / mail / jellyd
Ці команди створять файл черзі пошти (mail spool файл) для нового користувача '' jellyd '' і встановлять правильні права і приналежність файлу.
Для видалення користувача, просто видаліть все, що ви вводили при створенні. Видаліть згадки про користувача з / etc / passwd і / etc / group. Видаліть його login ім'я, з усіх груп в / etc / group. видаліть його черга пошти, якщо така є, і так само не забудьте видалити домашній каталог користувача, якщо є необхідність.
Видалення груп простіше. Просто видаліть рядок, що визначає групу з файлу / etc / group.
зміна паролів
Програма passwd змінює пароль, модифікуючи / etc / shadow файл. Цей файл містить всі паролі системи в закодованої формі. Для того, щоб змінити ваш пароль, виконайте:
$ Passwd Changing password for chris
Enter the new password (minumum of 5, maximum of 127 characters)
Please use a combination of upper and lower case letters and numbers.
Як бачите, вас просять ввести ваш старий пароль. Він не з'явиться на екрані, як і при вході в систему. Потім вам необхідно ввести новий пароль. passwd зробить багато різних перевірок вашого пароля, і поскаржиться вам, якщо знайде ваш пароль ненадійним. Ви можете проігнорувати ці повідомлення, якщо забажаєте. Потім вам запропонують ввести пароль знову, щоб підтвердити його.
Якщо ви root, то ви можете змінити чий завгодно пароль:
Вам треба буде пройти через ту ж саму процедуру, за винятком того, що не знадобиться вказувати старий пароль. (Одна з переваг користувача root.).
Якщо у вас в системі є користувачі, які насаджують вам, ви можете тимчасово заблокувати їх еккаунт. Пізніше ви можете знову активізувати їх. Як блокування, так і подальше включення користувача можуть бути зроблені за допомогою passwd. Щоб відключити еккаунт, як root, виконайте наступне:
Це змінить пароль david-а на щось, що не може бути підібрано. Для повернення користувача, виконайте наступне:
Тепер еккаунт david-а знову працює, як і раніше. Призупинення аккаунта може бути корисна, якщо користувач грає не за правилами, встановленими у вашій системі або якщо вони експортували дуже велику копію xeyes (1) на ваш робочий стіл X.
Зміна інформації користувача
Користувачі можуть поміняти в будь-який момент часу свою оболонку і свою finger інформацію. В Slackware Linux chsh (change shell - змінити оболонку) і chfn (change finger - змінити finger) використовуються для цього.
Користувач може вибрати будь-яку з оболонок, перерахованих в / etc / shell. Для більшості bash буде ідеальним вибором. Хтось може бути знайомий з оболонками, що зустрічаються в інших Unix системах використовуваних. Вибрати оболонку можна за допомогою chsh.
Changing the login shell for chris
Enter the new value, or press return for the default
Login Shell [/ bin / bash]:
Після введення пароля введіть повний шлях до нової оболонці. Переконайтеся спочатку, що вона перерахована в / etc / shells (5). root може так само змінити оболонку користувача, вказавши як аргумент програмі chsh ім'я користувача.
5.5.2 Правильне вимкнення комп'ютера
Дуже важливо вимикати комп'ютер правильно. Просте відключення живлення може спричинити серйозну шкоду системи. Поки комп'ютер включений, навіть якщо ви нічого не робите, деякі файли відкриті системою. Пам'ятайте, що в фоновому режимі завжди виконуються якісь системні процеси. Ці процеси керують системою, і багато файлів відкриті цими програмами весь час. Якщо просто вимкнути живлення, ці файли не закриваються правильно, і через це можуть пошкодитися. Залежно від того, які з файлів були пошкоджені, система може бути серйозно пошкоджена. У будь-якому випадку, вам доведеться пройти через тривалу процедуру перевірки системи при наступному завантаженні системи.
Так що якщо ви збираєтеся вимкнути, або пере-завантажити комп'ютер, дуже важливо робити це правильно. Є кілька шляхів зробити це; ви можете вибрати, той, який вам сподобається найбільше. Більшість способів, які використовуються для виключення так само можуть бути використані для пере-завантаження.
Перший метод це програма shutdown (8) і напевно це найпоширеніший метод. shutdown може бути використана для виключення або пере-завантаження в певний час, і може видати повідомлення всім користувачам системи, яка говорила, що система буде виключена.
Звичайний варіант використання shutdown.
В цьому випадку ми не послали специфічне повідомлення користувачам; вони побачать стандартне повідомлення shutdown програми. '' Now '' цей час, коли ми хочемо вимкнути систему, а '' -h '' означає halt (зупинити) систему. Це не дуже важливий спосіб виключення багатокористувацької системи, але для вашого домашнього комп'ютера, цього більше ніж достатньо. Ввічливіше на багато користувачів буде заздалегідь попередити користувачів:
Ця команда пере-завантажить комп'ютер через годину (60 хвилин), що цілком нормально на звичайній на багато користувачів. Дійсно важливі системи повинні заздалегідь створювати розклад пере-завантаження і надавати його в / etc / motd (5).
Для пере-завантаження використовується та ж команда, але з ключем '' -r '' замість '' -h '':
Ви можете використовувати той же формат для часу з shutdown -r. що і з shutdown -h. Є багато інших дій, які ви можете виконувати за допомогою shutdown. щоб контролювати, коли саме пере-завантажити або вимкнути комп'ютер. Дивіться man сторінку для подробиць.
Більш низько рівневий спосіб пере-завантаження комп'ютера, це спілкування безпосередньо з init. Всі інші методи, це лише більш зручні способи спілкування з init. але ви можете так само і безпосередньо сказати init -у, чого ви хочете, за допомогою telinit (8) (зверніть увагу на те, що в імені команди є тільки одна '' l '' 26). Використання telinit повідомить init -у, в який з рівнів завантаження (runlevel) перейти, що в свою чергу, викличе виконання відповідного сценарію. Цей сценарій вб'є або породить процеси, відповідно до обраного рівнем завантаження. Це може бути використано для виключення або пере-завантаження, так як обидва ці процеси є певними рівнями завантаження.
Рівень завантаження 0 це режим вимкнення. Сказавши init увійти в режим завантаження 0, ми змусимо його вбити всі процеси, демонтувати файлові системи і зупинити систему. Це відмінний спосіб виключення комп'ютера. На багатьох laptop-ах це так само викличе відключення живлення.
Рівень завантаження 6 це режим пере-завантаження. Всі процеси будуть вбиті, файлові системи демонтувати, і комп'ютер пере-завантажиться. Це самий '' правильний '' метод пере-завантаження.
Є ще один спосіб пере-завантаження комп'ютера. Всі інші (перераховані вище) методи можуть бути виконані тільки користувачем root. Проте, можна пере-завантажити комп'ютер, якщо ви не root, в тому випадку, якщо у вас є фізичний доступ до клавіатури. Виконання комбінації з трьох пальців (control-alt-delete) викличе негайну пере-завантаження комп'ютера. що дійсно відбувається в цьому випадку, так це виконання програми / usr / sbin / ctrlaltdel (8). Так що якщо у програми якісь дивні права доступу, або якщо вона відсутня, натискання цих кнопок ні до чого не приведе 27.
5.5.3 Підсумок
В цьому розділі обговорені питання створення та видалення користувачів і груп. Ви повинні вміти робити це, як за допомогою поставляються спец-програм, так і вручну. В добавок, ви повинні знати, що відбувається на різних стадіях процесу створення користувача, мати загальні уявлення про те, як вибрати пароль, і як змінювати інформацію користувача. Так само ви повинні знати, як правильно вимикати комп'ютер, і чому важливо робити це правильно. Це найважливіші частини системного адміністрування системи, будь то ваш домашній комп'ютер, або великий мережевий сервер.