четверг, 9 апреля 2009 г.

План перехода с Windows на Linux: Часть 4. Администрирование пользователей

e-business архитектор IBM Крис Волден -- ваш гид по всем девяти частям серии пособий от developerWorks, помогающих перенести навыки работы с Windows® в Linux®. Он осветит темы от процедуры входа в систему до работы в сети и от приемов использования командной строки до доступа к справочным системам -- вплоть до компиляции пакетов из доступных исходных кодов. В этой части вы научитесь добавлять и удалять пользователей и группы, узнаете о теневом пароле и группах файлов.

Администрирование пользователей в Linux одновременно очень похоже и не похоже на администрирование в Windows. Обе системы многопользовательские и контроль доступа к ресурсам основан на идентификации пользователя. Обе системы позволяют группировать пользователей так, что контроль доступа упрощается и не приходится для внесения каждого изменения затрагивать много пользователей. А дальше начинаются различия.

Суперпользователь

В Linux Суперпользователь (Super User) называется root. Пользователь root может контролировать каждый процесс, имеет доступ к каждому файлу и может выполнить любую функцию в системе. Ничего не может быть спрятано от root'а. Говоря административным языком, root -- это высшее существо. Поэтому очень важно, чтобы учетная запись root была защищена секретным паролем. Не стоит использовать root'а для выполнения обычных задач.

Другим пользователям можно дать привилегии суперпользователя, но делать это надо с осторожностью. Обычно вы будете настраивать отдельные программы, чтобы определенные пользователи могли выполнять их как root, вместо того, чтобы предоставлять всем суперпользовательский доступ.

Создание новых пользователей

Новых пользователей можно создавать либо из консоли, либо с помощью инструментария типа программы Webmin.

Пользователь добавляется командой useradd. Из консоли это делается, например, так:

useradd -c "normal user" -d /home/userid -g users\
-G webadm,helpdesk -s\ /bin/bash userid

Эта команда создает нового пользователя по имени "userid" (последний параметр в команде). Дается комментарий, который говорит, что "userid" -- "normal user" (обычный пользователь). Для него будет создан домашний каталог "/home/userid". Его основной группой будет users, но он также будет входить в группы "webadm" и "helpdesk". В качестве обычного консольного окружения новый пользователь из примера будет использовать оболочку "/bin/bash".

Webmin позволяет создать нового пользователя легко и наглядно. Войдите в Webmin своим любимым браузером и зайдите в раздел System. Выберите инструмент "Users and Groups", а затем щелкните на Create a new user.


Рисунок 1. Экран программы Webmin Create User (Создать пользователя)
Рисунок 1. Экран программы Webmin Create User (Создать пользователя)

Впишите подробности про пользователя и нажмите Create. Будет создан пользователь.

Добавление пользователей посредством инструментария GUI также описано в "Basic tasks for new Linux developers".

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

Из консоли пользовательский пароль меняется командой passwd :

passwd userid

Изменить пароль другого пользователя таким способом может только root. После ввода команды вам будет предложено ввести и подтвердить устанавливаемый пароль. Если они совпадут, то данные пользователя будут обновлены, а пароль изменен. Пользователь также может изменить свой собственный пароль, написав в командной строке консоли passwd; в этом случае прежде чем вводить новый пароль, необходимо будет ввести старый.

Большинство дистрибутивов Linux устанавливаются с модулем password cracker, который вызывается для изменений пароля. Этот модуль проверяет, насколько пароль хорош. Если не очень, то появляется предупреждение, что у пользователя плохой пароль. В зависимости от конфигурации, у него могут потребовать придумать безопасный пароль, а только потом принять его. Root'а же могут просто известить, когда пароль уже установлен.

В Webmin'е пароль меняется с помощью модуля "Change Passwords" из раздела System. Выберите пользователя из списка и введите новый пароль в пустые поля формы.

Удаление пользователей

Из консоли пользователи удаляются командой userdel.

userdel -r userid

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

Как организованы пользователи

Конфигурация Linux имеет в своей основе текст. Поэтому все пользователи в Linux расположены в файле под названием /etc/passwd. Командой more вы можете постранично просмотреть этот файл:

more /etc/passwd

Каталог /etc

Запомните, что большинство конфигурационных файлов у Linux живет в каталоге /etc.

Структура этого файла вполне доходчива. Каждая строка содержит нового пользователя с параметрами, разделенными двоеточием.

userid:x:75000:75000::/home/userid:/bin/bash

В первой колонке находится имя пользователя. Во второй -- его пароль. В третьей -- пользовательский числовой id. В четвертой -- id основной группы пользователя. В пятой -- полное имя пользователя. В шестой -- расположение пользовательского каталога. Обычно этот каталог живет в /home и называется по имени пользователя. Седьмая колонка содержит shell по умолчанию.

Структура файла паролей

Login IDПарольID пользователяID группыКомментарийДомашний каталогОболочка по умолчанию
useridx7500075000 /home/userid/bin/bash

Заметьте, что в приведенном выше примере, в колонке с паролем стоит "x". Это вовсе не означает, что у пользователя такой пароль. Одно время пароли хранились внутри файла в виде обычного текста. Такая конфигурация возможна и сейчас, но встречается редко из-за последствий. Решено было создать нечто под названием теневой пароль. На месте пароля в файле /etc/passwd записывается "х", а закодированная версия пароля идет в файл /etc/shadow. Такая технология улучшает безопасность посредством разделения информации о пользователе и пароля. Алгоритм кодирования паролей MD5 еще улучшил безопасность, позволяя только надежные пароли. Ниже приведен пример записи теневого пароля:

Теневые пароли и права пользователя

Одна из отличительных особенностей управления пользователями в Linux -- наследие стиля UNIX в файле паролей. Пользователь, который регистрируется, должен быть в состоянии прочитать файл /etc/password, чтобы посмотреть, что его имя существует в системе. Хранение паролей в том же файле даст возможность потенциальным взломщикам узнать их; они могли бы запустить файл /etc/passwd и получить имена и зашифрованные пароли, чтобы дальше работать с отдельной программой прямого подбора. Файл с теневым паролем не обязательно должен быть читаемым, поэтому взломщики не получат пароли в какой бы то ни было форме для работы с ними.

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

userid:$1$z2NXZR19$PZpyL84DmPKBXMeURaXXM.:12138:0:186:7:::

Вся функция теневого пароля остается за кадром, а вам редко потребуется делать что-нибудь большее, чем включать ее.




Группы

Группы в Linux почти то же самое, что и в Windows. Вы создаете группу и добавляете в ее список участников. Ресурсы могут иметь права, приписанные группе. Члены группы имеют доступ к ресурсу, ассоциированному с этой группой.

Создание группы выполняется просто, консольной командой groupadd:

groupadd mygroup

Эта команда создаст группу без участников с названием "mygroup". Группы живут в файле с названием /etc/group. Каждой группе отводится отдельная строка, как написанная ниже:

mygroup:x:527:

Первая колонка показывает имя группы. Вторая -- пароль. Опять-таки "x" означает, что настоящий пароль хранится в теневом файле /etc/gshadow. Третья колонка будет содержать разделенные запятыми идентификаторы участников группы.

Чтобы добавить члена группы, используйте команду gpasswd с ключом -a и id пользователя, которого вы хотите добавить:

gpasswd -a userid mygroup

Удалить пользователей из группы можно той же командой, но с ключом -d вместо -a:

gpasswd -d userid mygroup

Вносить изменения в группы можно также прямым редактированием файла /etc/group.

Осторожность при редактировании файла passwd

Реальную опасность при прямом редактировании файлов /etc/passwd и /etc/group представляет случайное дублирование идентификационного номера. Все ресурсы предпочитают использовать не имя пользователя или группы, а именно id номер. Если вы случайно продублируете его, то дадите доступ туда, куда не собирались. Например, если изменить id номер пользователя на 0, который соответствует пользователю root, то войдя в систему он окажется суперпользователем! Также если удалить в файле строку с пользователем или группой, этот пользователь или группа удалятся.

Это все ошибки, которые может совершить человек. Программа же все делает правильно. Однако, иногда быстрое редактирование файла /etc/group -- это самый быстрый способ решить простую проблему. Только представьте, что вы обладаете некоторой реальной властью, когда редактируете эти файлы. Будьте осторожны.

Группы могут быть созданы, отредактированы и уничтожены в программе Webmin тем же самым инструментом, который использовался выше для работы с пользователями.




Пользовательские и групповые приложения

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

-rw-r--r-- 1 userid mygroup 703 Jun 23 22:12 myfile

Не обращая пока что внимания на остальные колонки, посмотрите на третью, четвертую и последнюю. В третьей колонке находится имя владельца файла, userid. Четвертая колонка содержит группу, ассоциированную с файлом, mygroup. Последняя колонка -- это имя файла. Каждый файл имеет только одного владельца и одну группу. Можно дать права Other (Остальным), пользователям, которые не попадают ни в какую категорию. Считайте Other эквивалентом группы Everyone в Windows.

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

Более полную информацию о связи пользователей и групп можно найти в разделе Ресурсы в конце этой статьи. За подробностями о том, как менять полномочия доступа к файлу, обращайтесь к man chmod.

Заключение

В принципе, пользователи и группы в Linux работают так же как и в Windows, с той лишь разницей, что только одна группа может соответствовать ресурсу. Имея дело с группами в Linux, считайте их "дешевыми" и не бойтесь создавать их много для сложного окружения. Создавая группы, основывайтесь на необходимостях доступа к ресурсам, нежели на подразделениях компании.

Информация о пользователе и группе хранится в файлах /etc/passwd и /etc/group, соответственно. Ваша система возможно также содержит файлы /etc/shadow и /etc/gshadow, в которых находятся зашифрованные пароли для большей безопасности. Можно работать с пользователями и группами, непосредственно редактируя файлы, однако делать это надо с большой осторожностью.

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

Комментариев нет:

Отправить комментарий