Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Предыдущий Содержание Следующий

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.

Добавить пользователя можно при помощи программы adduser. Мы начнём с разбора процедуры, комментируя все вопросы, задаваемые программой и кратко описывая, что же всё это означает. Вариант ответа по умолчанию, предлагаемый программой практически на каждый из вопросов, показывается в скобках и может быть использован для ответа практически на все вопросы.

#adduser

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

Домашние каталоги по умолчанию располагаются в /home каталоге. Если вы работаете в очень большой системе, возможно возникнет необходимость разместить домашние каталоги в другом месте. Эта опция позволяет вам уточнить, где должен располагаться домашний каталог пользователя. Вы можете так же парализовать пользователя, указав его домашним каталогом что-то вроде /usr/bin/false, но мы не рекомендуем пользоваться этим методом.

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:
New login name: jellyd
New UID: [Next available]
Initial group: users
Additional groups: [none]
Home directory: /home/jellyd
Shell: /bin/bash
Expiry date: [no expiration]
This is it... if you want to bail out, hit Control-C.
Otherwise, press ENTER to go ahead and make the account.

Теперь вы видите всю введённую информацию и если что-то не так, вы можете остановиться при помощи Control-C и начать всё сначала. Иначе вы можете нажать ввод, и пользователь будет создан.

Making new account...
Changing the user information for jellyd
Enter the new value, or press return for the default
           Full Name []: Jeremy
           Room Number []: Smith 130
           Work Phone []:
           Home Phone []:
           Other:

Вся эта информация дополнительна, она используется для finger. Вы можете оставить пустыми эти поля. Пользователь может так же изменить эту информацию в любой момент при помощи chfn. Но может быть полезно указать по крайней мере имя и телефон, на тот случай, если вы захотите связаться с персоной.

Changing password for jellyd
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:
Re-enter new password:
Password changed.
Done...

Вам придётся ввести пароль для нового пользователя. Если новый пользователь не присутствует при создании эккаунта, просто укажите какой-то пароль по умолчанию и скажите пользователю поменять его на что-то более надёжное.

Выбор пароля Выбор надёжного пароля это первый шаг по защите системы от взлома. Пароль не должен быть легко угадываемым, так как в этом случае шансы несанкционированного проникновения в систему возрастают. Идеальный пароль это случайный набор символов, включая большие и маленькие буквы, числа и другие символы. Имейте ввиду, что tab лучше не использовать, так как он трактуется по разному разными системами, и при удалённом доступе могут возникнуть проблемы.

В общем, руководствуйтесь здравым смыслом: не выбирайте в качестве пароля чей-то день рождения, какую-то общую фразу, что-то что есть у вас на столе, что-то, что тесно связанно с вами. ''secure1'' так же плохой пароль.

Удаление пользователя ещё более простая процедура. Просто запустите userdel и имя пользователя, которого вы хотите удалить. Вам необходимо убедиться, что пользователь в этот момент не в системе, и что нет процессов, выполняемых этим пользователем. Так же помните, что если вы удалили пользователя то его больше нет.

#userdel jellyd

Выполнив эту команду, вы удалите ''jellyd'' из вашей системы. Так ему и надо:) Команда удаляет пользователя из файлов /etc/passwd и /etc/group, но не удалит его домашний каталог. Если вы так же хотите удалить и домашний каталог, вы должны воспользоваться следующей командой:

#userdel -r jellyd

Временная парализация эккаунта, будет описана в разделе ''Изменение паролей'', так как это требует изменения пароля пользователя. Изменение регистрационной информации пользователя будет описано в разделах ''Изменения пароля'' и ''Изменение информации о пользователе''.

Программы для создания и удаления групп очень просты. groupadd просто создаст ещё одну группу в файле /etc/group, с уникальным group ID, а groupdel удалит указанную группу. Вам надо будет вручную добавить пользователей в созданную группу, путём редактирования /etc/group.

Давайте создадим группу:

#groupadd cvs

Или удалим:

#groupdel cvs

Вручную  

Конечно, возможно добавлять, изменять и удалять пользователей и группы вручную. После того, как вы ознакомитесь с процедурой, возможно, вы найдёте, что использование скриптов сложнее, чем создание вручную.

Вначале, добавим нового пользователя в файлы /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, который содержит пароли. Типичная строка этого файла выглядит вот так:

chris:$1$w9bsw/N9$UWLr2bRER6YyBS.CAEp7R.:11055:0:99999:7:::

Опять таки, каждая строка соответствует одному пользователю, и поля разделены двоеточием. Поля: имя входа в систему, закодированный пароль, количество дней со дня Эпохи (1 Января 1970) до дня, когда пароль был изменён последний раз. количество дней, после которых пароль может быть изменён, количество дней после которых пароль должен быть изменён, количество дней до истечения эккаунта, время когда пользователь получит сообщение о закрытии его эккаунта, дни после истечения эккаунта,после которых эккаунт полностью блокируется, дни с момента Эпохи, когда эккаунт должен быть заблокирован и зарезервированное поле.

Как вы видите, это в основном информация об истечении эккаунта. Если вы не пользуетесь информацией об истечении эккаунта, вам надо только заполнить некоторые из полей со специальными значениями. Иначе, вам понадобится произвести вначале некоторые вычисления и принять некоторые решения, до того, как вы сможете заполнить все эти поля. Для нашего нового пользователя впишите какой-то мусор в поле пароля. Не волнуйтесь о том, какой именно сейчас установлен пароль, так как через минуту мы изменим это. В пароле могут быть использованы любые символы кроме двоеточия. Оставьте ''количество дней, с момента изменения пароля'' пустым. Введите 0, 99999 и 7 как это указанно в примере выше (в те же поля), и оставьте остальные поля пустыми.

Для тех из вас, кто увидев мой пароль в этом примере, и думает, что вы можете взломать его, продолжайте, пожалуйста. Вы теперь знаете пароль к тестовой системе, находящейся за firewall. Это очень вам поможет :)

Так как все являются членами ''users'' группы по умолчанию, вам не надо добавлять нового пользователя в неё. Если вы захотите создать новую группу или добавить нового пользователя в другие группы, вам необходимо будет отредактировать /etc/group. Вот типичная строка файла:

cvs::102:chris,logan,david,root

Поля: имя группы, пароль группы, ID группы и члены группы. Создание новой группы, это всего лишь добавление ещё одной строчки, с уникальным ID и указанием списка пользователей, которых вы хотите включить в группу, в этот файл. Все из перечисленных пользователей, если они в данный момент в системе, вынуждены будут выйти и снова войти в систему, чтобы изменения вступили в силу.

Теперь давайте вернёмся к команде passwd, чтобы создать пароль для созданного нами пользователя. Затем воспользуемся mkdir, чтобы создать домашний каталог там, где мы указали, что он будет расположен в /etc/passwd файле.

Если вы установили sendmail(8), вам необходимо будет создать новый файл с соответствующими правами, принадлежащий новому пользователю в /var/spool/mail каталоге. Вот пример:

#touch /var/spool/mail/jellyd
#chown jellyd.users /var/spool/mail/jellyd
#chmod 660 /var/spool/mail/jellyd25

Эти команды создадут файл очереди почты (mail spool файл) для нового пользователя ''jellyd'' и установят правильные права и принадлежность файла.

Для удаления пользователя, просто удалите всё, что вы вводили при создании. Удалите упоминания о пользователе из /etc/passwd и /etc/group. Удалите его login имя, из всех групп в /etc/group, удалите его очередь почты, если таковая имеется, и так же не забудьте удалить домашний каталог пользователя, если есть необходимость.

Удаление групп проще. Просто удалите строку, определяющую группу из файла /etc/group.

Изменение паролей

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

$ passwd Changing password for chris
Old password:
Enter the new password (minumum of 5, maximum of 127 characters)
Please use a combination of upper and lower case letters and numbers.
New password:

Как видите, вас просят ввести ваш старый пароль. Он не появится на экране, как и при входе в систему. Затем вам необходимо ввести новый пароль. passwd произведёт много различных проверок вашего пароля, и пожалуется вам, если найдёт ваш пароль ненадёжным. Вы можете проигнорировать эти сообщения, если пожелаете. Затем вам предложат ввести пароль опять, для подтверждения.

Если вы root, то вы можете изменить чей угодно пароль:

# passwd ted

Вам надо будет пройти через ту же самую процедуру, за исключением того, что не понадобится указывать старый пароль. (Одно из преимуществ пользователя root...).

Если у вас в системе есть пользователи, которые насаждают вам, вы можете временно заблокировать их эккаунты. Позже вы можете опять активизировать их. Как блокировка, так и последующее включение пользователя могут быть произведены при помощи passwd. Чтобы отключить эккаунт, как root, выполните следующее:

# passwd -l david

Это изменит пароль david-а на что-то, что не может быть подобрано. Для возвращения пользователя, выполните следующее:

# passwd -u david

Теперь эккаунт david-а опять работает, как и раньше. Приостановка эккаунта может быть полезна, если пользователь играет не по правилам, установленным в вашей системе или если они экспортировали очень большую копию xeyes(1) на ваш рабочий стол X.

Изменение информации пользователя

Пользователи могут поменять в любой момент времени свою оболочку и свою finger информацию. В Slackware Linux chsh (change shell - изменить оболочку) и chfn (change finger - изменить finger) используются для этого.

Пользователь может выбрать любую из оболочек, перечисленных в /etc/shell. Для большинства bash будет идеальным выбором. Кто-то может быть знаком с оболочками, встречающимися в других Unix системах используемых. Выбрать оболочку можно при помощи chsh:

$ chsh
Password:
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 имя пользователя.

finger информация это необязательная информация. Она содержит такие поля, как полное имя, номера телефона и номер кабинета. Она может быть изменена при помощи chfn, так же, как и при создании эккаунта. Как всегда, root может изменить finger информацию для любого пользователя.

5.5.2  Правильное выключение компьютера

Очень важно выключать компьютер правильно. Простое отключение питания может вызвать серьёзные повреждения системы. Пока компьютер включён, даже если вы ничего не делаете, некоторые файлы открыты системой. Помните, что в фоновом режиме всегда выполняются какие-то системные процессы. Эти процессы управляют системой, и много файлов открыты этими программами всё время. Если просто отключить питание, эти файлы не закрываются правильно, и из-за этого могут повредиться. В зависимости от того, какие из файлов были повреждены, система может быть серьёзно повреждена. В любом случае, вам придётся пройти через длительную процедуру проверки системы при следующей загрузке системы.

Так что если вы собираетесь выключить, или пере-загрузить компьютер, очень важно делать это правильно. Есть несколько путей сделать это; вы можете выбрать, тот, который вам понравится больше всех. Большинство способов, используемых для выключения так же могут быть использованы для пере-загрузки.

Первый метод это программа shutdown(8) и наверное это самый распространённый метод. shutdown может быть использована для выключения или пере-загрузки в определённое время, и может выдать сообщение всем пользователям системы, говорящее, что система будет выключена.

Обычный вариант использования shutdown:

# shutdown -h now

В этом случае мы не послали специфическое сообщение пользователям; они увидят стандартное сообщение shutdown программы. ''now'' это время, когда мы хотим выключить систему, а ''-h'' значит halt (остановить) систему. Это не очень вежливый способ выключения многопользовательской системы, но для вашего домашнего компьютера, этого больше чем достаточно. Более вежливо на многопользовательской системе будет заранее предупредить пользователей:

#shutdown -h +60

Эта команда пере-загрузит компьютер через час (60 минут), что вполне нормально на обычной многопользовательской системе. Действительно важные системы должны заранее создавать расписание пере-загрузки и предоставлять его в /etc/motd(5).

Для пере-загрузки используется та же команда, но с ключом ''-r'' вместо ''-h'':

#shutdown -r now

Вы можете использовать тот же формат для времени с shutdown -r, что и с shutdown -h. Есть много других действий, которые вы можете выполнять при помощи shutdown, чтобы контролировать, когда именно пере-загрузить или выключить компьютер. Смотрите man страницу для подробностей.

Второй способ выключения или пере-загрузки компьютера, это использование halt(8) и reboot(8) программ. halt немедленно выключит ваш компьютер, а reboot пере-загрузит его. reboot это всего лишь символическая ссылка на halt. Вызываются команды вот так:

#halt
#reboot

Более низко уровневый способ пере-загрузки компьютера, это общение напрямую с init. Все остальные методы, это лишь более удобные способы общения с init, но вы можете так же и напрямую сказать init-у, чего вы хотите, при помощи telinit(8) (обратите внимание на то, что в имени команды есть только одна ''l''26). Использование telinit сообщит init-у, в какой из уровней загрузки (runlevel) перейти, что в свою очередь, вызовет выполнение соответствующего сценария. Этот сценарий убьёт или породит процессы, в соответствии с выбранным уровнем загрузки. Это может быть использовано для выключения или пере-загрузки, так как оба этих процесса являются определёнными уровнями загрузки.

#telinit 0

Уровень загрузки 0 это режим выключения. Сказав init войти в режим загрузки 0, мы заставим его убить все процессы, размонтировать файловые системы и остановить систему. Это отличный способ выключения компьютера. На многих laptop-ах это так же вызовет отключение питания.

#telinit 6

Уровень загрузки 6 это режим пере-загрузки. Все процессы будут убиты, файловые системы размонтированы, и компьютер пере-загрузится. Это самый ''правильный'' метод пере-загрузки.

Есть ещё один способ пере-загрузки компьютера. Все остальные (вышеперечисленные) методы могут быть выполнены только пользователем root. Тем не менее, можно пере-загрузить компьютер, если вы не root, в том случая, если у вас есть физический доступ к клавиатуре. Выполнение комбинации из трёх пальцев (control-alt-delete) вызовет немедленную пере-загрузку компьютера. что действительно происходит в этом случае, так это выполнение программы /usr/sbin/ctrlaltdel(8). Так что если у программы какие-то странные права доступа, или если она отсутствует, нажатие этих кнопок ни к чему не приведёт27.

5.5.3  Итог

В этом разделе обсуждены вопросы создания и удаления пользователей и групп. Вы должны уметь делать это, как при помощи поставляемых спец-программ, так и вручную. В добавок, вы должны знать, что происходит на различных стадиях процесса создания пользователя, иметь общие представления о том, как выбрать пароль, и как изменять информацию пользователя. Так же вы должны знать, как правильно выключать компьютер, и почему важно делать это правильно. Это самые важные части системного администрирования системы, будь то ваш домашний компьютер, или большой сетевой сервер.


Предыдущий Содержание Следующий

File translated from TEX by TTH, version 2.89.
On 24 Apr 2001, 16:43.