Статьи :Операционные системы :Железо :
OS FAQ :
Кодинг :
Сейчас на сайте :0 пользователей, 17 гостей : |
UNIX - многопользовательская операционная система. Пользователи, занимающиеся общими задачами, могут объединяться в группы. Каждый пользователь обязательно принадлежит к одной или нескольким группам. Все команды выполняются от имени определенного пользова
Автор: Разместил: Amro Дата: 2006-04-04 10:02 Комментарии: ![]() ![]()
Пока комментариев нет
Основы операционной системы UNIX - 03. Пользователи и группыUNIX - многопользовательская операционная система. Пользователи, занимающиеся общими задачами, могут объединяться в группы. Каждый пользователь обязательно принадлежит к одной или нескольким группам. Все команды выполняются от имени определенного пользователя, принадлежащего в момент выполнения к определенной группе. В многопользовательских системах необходимо обеспечивать защиту объектов (файлов, процессов), принадлежащих одному пользователю, от всех остальных. ОС UNIX предлагает базовые средства защиты и совместного использования файлов на основе отслеживания пользователя и группы, владеющих файлом, трех уровней доступа (для пользователя-владельца, для пользователей группы-владельца, и для всех остальных пользователей) и трех базовых прав доступа к файлам (на чтение, на запись и на выполнение). Базовые средства защиты процессов основаны на отслеживании принадлежности процессов пользователям. Для отслеживания владельцев процессов и файлов используются числовые идентификаторы. Идентификатор пользователя и группы - целое число (обычно) в диапазоне от 0 до 65535. Присвоение уникального идентификатора пользователя выполняется при заведении системным администратором нового регистрационного имени. Значения идентификатора пользователя и группы - не просто числа, которые идентифицируют пользователя, - они определяют владельцев файлов и процессов. Среди пользователей системы выделяется один пользователь - системный администратор или суперпользователь, обладающий всей полнотой прав на использование и конфигурирование системы. Это пользователь с идентификатором 0 и регистрационным именем root. При представлении информации человеку удобнее использовать вместо соответствующих идентификаторов символьные имена - регистрационное имя пользователя и имя группы. Соответствие идентификаторов и символьных имен, а также другая информация о пользователях и группах в системе (учетные записи), как и большинство другой информации о конфигурации системы UNIX, по традиции, представлена в виде текстовых файлов. Эти файлы - /etc/passwd, /etc/group и /etc/shadow (в системах с теневым хранением паролей) - детально описаны ниже. Файл /etc/passwdКаждая строка (учетная запись) в файле /etc/passwd описывает одного известного системе пользователя и имеет семь разделенных двоеточиями полей. Пример записи:
Назначение полей этой записи представлено в следующей таблице. Таблица 1. Поля файла /etc/passwd и их назначение
Файл /etc/groupЭтот файл соотносит числовые идентификаторы групп с символьными именами. Каждая строка файла /etc/group содержит четыре поля. Поля разделяются двоеточиями. Назначение полей этой записи представлено в табл. 2. Таблица 2. Поля файла /etc/group и их назначение
Пример записи из файла /etc/group:
Файл /etc/shadowЭтот файл используется в системах с теневым хранением паролей, где они вынесены из доступного всем пользователям на чтение файла /etc/passwd для повышения безопасности системы. Здесь (помимо собственно зашифрованных паролей) хранятся дополнительные ограничения, связанные с регистрационным именем и паролем пользователя. Доступ к этому файлу на чтение имеет только пользователь root, а работают с ним команды passwd и login. Файл содержит по одной записи из восьми полей, разделенных двоеточиями, для каждой учетной записи в системе. Назначение полей этой записи представлено в табл. 3. Таблица 3. Поля файла /etc/shadow и их назначение
Системные регистрационные именаКаждая версия ОС UNIX резервирует несколько специальных регистрационных имен для предопределенных системных целей. Так, в UNIX SVR4 системными считаются регистрационные имена, соответствующие идентификаторам от 0 до 100. Наиболее часто резервируются регистрационные имена, представленные в табл. 4. Таблица 4. Системные регистрационные имена в ОС UNIX SVR4
Точно так же задаются и системные группы в файле /etc/group. В SVR4 зарезервированными считаются имена групп с идентификаторами от 0 до 100. Изменение действующего идентификатора пользователяКоманда su предназначена для временного изменения действующего (эффективного) идентификатора пользователя и сеанса пользователя. Она имеет следующий синтаксис:
Команда su запрашивает пароль (у всех пользователей, кроме root, и если пароль существует). В случае соответствия пароля создается новый сеанс от имени нового пользователя. В следующем примере сохраняется среда пользователя с именем user01, включая текущий рабочий каталог и переменные среды:
Если введена команда su - регистрационное_имя, то система предоставляет пользователю командный интерпретатор и среду в соответствии с указанным регистрационным именем:
Команда в формате su регистрационное_имя -c аргументы воспринимает аргумент как команду, которую необходимо выполнить с регистрационным именем нового пользователя. Для выполнения команды запрашивается пароль нового пользователя и используются его права доступа. После завершения выполнения происходит возврат в среду пользователя, вызвавшего команду su. Таким образом, если пользователю, например, надо удалить файл пользователя с регистрационным именем new_user, необходимо выполнить команду:
Команда su без указания регистрационного имени позволяет получить права пользователя root. При этом необходимо знать и правильно ввести пароль пользователя root. Если пользователь работает под регистрационным именем root, вводить пароль при изменении действующего идентификатора не нужно. Изменение действующего идентификатора группыСразу после регистрации пользователь работает от имени основной группы (задана в файле /etc/passwd). Кроме основной, пользователь может принадлежать к любому количеству дополнительных групп. Эти группы задаются путем указания регистрационного имени в четвертом поле строки в файле /etc/group, описывающей дополнительную группу. Членство в дополнительных группах либо учитывается при определении прав доступа автоматически (BSD-системы), либо для перехода в дополнительную группу и изменения тем самым действующего идентификатора группы используется команда newgrp (SVR4) со следующим синтаксисом:
Команда newgrp встроена в некоторые командные интерпретаторы (sh, ksh). Команда newgrp переводит пользователя в новую группу путем запуска нового командного интерпретатора с реальным и эффективным идентификатором (GID) новой группы. При этом новый командный интерпретатор запускается даже если переход в группу завершился ошибкой (например, указана несуществующая группа). Естественно, в новом командном интерпретаторе будут иметь нестандартные и непустые значения только переменные, экспортированные в среду. При вызове без операнда, команда newgrp переводит пользователя в его основную группу, отменяя тем самым действие предыдущих команд newgrp. Если во втором поле записи соответствующей группы в файле /etc/group указан пароль (т.е. если это поле не пустое) и пользователь не указан в четвертом поле как член группы, при переходе в группу у пользователя запрашивается пароль. Единственный способ создать пароль группы - воспользоваться командой passwd для задания пароля одной из учетных записей пользователей, а затем скопировать зашифрованный пароль из файла /etc/shadow в файл /etc/group. Пароли групп сейчас используют редко. Изменение пароля и характеристик учетной записи, связанных с регистрациейКоманда passwd позволяет любому пользователю изменить пароль или получить список атрибутов текущего пароля для своего регистрационного_имени. Привилегированные пользователи могут запускать passwd для выполнения этих функций для любого пользователя, а также для установки атрибутов пароля для любого пользователя. Пароль обычно задается администратором при создании учетной записи пользователя для владельца регистрационного_имени. В дальнейшем пользователь может изменить пароль с помощью команды passwd. Команда passwd имеет следующий синтаксис:
Опции команды представлены в табл. 5. Обычные пользователи могут использовать только опцию -s. Таблица 5. Опции команды passwd
Правила построения паролейПри создании паролей обычно необходимо выполнять следующие требования:
Эти требования не распространяются на пользователя root. Действие команды passwdПри использовании для изменения пароля команда passwd запрашивает у обычных пользователей их старый пароль, если он задан. Если с момента задания старого пароля прошло достаточно много времени, passwd затем предлагает пользователю дважды ввести новый пароль; в противном случае программа прекращает работу. Затем passwd проверяет, удовлетворяет ли новый пароль описанным выше правилам построения. При вводе нового пароля второй раз, две копии нового пароля сравниваются. Если они не совпадают, цикл запроса нового пароля повторяется, но не более двух раз. Пользователь root может изменять любой пароль; команда passwd не запрашивает у него старый пароль. Устаревание паролейПароли действительны в течение ограниченных периодов времени (определяемых системным администратором), после чего их необходимо изменить. Поэтому необходимо хранить информацию о периоде активности для каждого пароля. Когда приближается дата истечения срока действия пароля, его владельцу предлагается выбрать новый пароль в течение определенного количества ближайших дней. Процесс отслеживания сроков действия паролей и уведомления пользователей о необходимости сменить пароль называется устареванием паролей (password aging). Информация о паролях всех пользователей системы хранится в файле /etc/shadow, который могут читать только привилегированные пользователи. Каждая строка пользователя в файле /etc/shadow содержит четыре параметра, определяющих устаревание пароля (поля 3-6, см. табл. 3). Последние три из этих параметров можно установить опциями командной строки -n, -x и -w, соответственно. При отсутствии опций, их значения берутся из файла /etc/default/passwd. Показ атрибутов пароляКогда команда passwd используется для показа атрибутов пароля, результаты выдаются в следующем формате:
или, если отсутствует информация, связанная с устареванием пароля,
Поля определены следующим образом:
Стандартные значения атрибутовПрисваивая значения набору параметров в файле /etc/default/passwd, администратор может управлять устареванием и длиной паролей. Можно задать следующие параметры:
Обратите внимание, что аргументы опций команды passwd (min, max и warn), а также соответствующие поля файла /etc/shadow задают параметры устаревания в днях; тогда как соответствующие поля файла /etc/default/passwd (MINWEEKS, MAXWEEKS и WARNWEEKS) - в неделях. Просмотр базы данных учетных записейДля просмотра базы данных учетных записей системы предназначена команда logins. Команда logins выдает информацию о пользовательских и системных регистрационных именах. Содержание выдаваемой информации управляется опциями команды и может включать: регистрационное имя, идентификатор пользователя, описание учетной записи в файле /etc/passwd (реальное имя пользователя или другая информация), имя основной группы, идентификатор основной группы, имена групп, идентификаторы групп, начальный каталог, начальный командный интерпретатор и четыре параметра устаревания пароля. По умолчанию выдается следующая информация: регистрационное имя, идентификатор пользователя, имя основной группы, идентификатор основной группы и поле описания учетной записи в файле /etc/passwd. Результат сортируется по идентификатору пользователя, в результате чего сначала идут системные регистрационные имена, а затем - пользовательские. Команда logins имеет следующий синтаксис:
Действие опций команды logins представлено в табл. 6. Таблица 6. Опции команды logins
При совместном использовании нескольких опций будут показаны учетные записи, удовлетворяющие любому из критериев. При совместном использовании опций -l и -g информация о пользователе будет выдаваться один раз, даже если он принадлежит к нескольким указанным группам. Получение списка зарегистрировавшихся пользователейДля получения списка пользователей, работающих сейчас в системе, используется команда who со следующим синтаксисом:
Последний вариант выдает строку, соответствующую запрашивающему сеансу, и может использоваться для самоидентификации. Утилита who выдает имя пользователя, терминал, время регистрации, время, прошедшее после последней выполненной команды, а также идентификатор процесса командного интерпретатора. Для получения этой информации она просматривает файл /var/adm/utmp. Если указан файл (который должен иметь формат utmp(4)), информация берется из него. В общем случае, результат имеет следующий вид: имя [состояние] терминал время [ожидание] [pid] [комментарий] [статус выхода] где:
Опции команды who представлены в табл. 7. Таблица 7. Опции команды who
Рассмотрим примеры выполнения команды who в ОС Solaris 8: [kravchuk@arturo 09:40:03 /]$ who -a | more . system boot Фев 23 15:39 . run-level 3 Фев 23 15:39 3 0 S rc2 . Фев 23 15:41 old 84 id= s2 term=0 exit=0 root + console Фев 27 21:34 0:28 4612 (:0) rc3 . Фев 23 15:41 old 359 id= s3 term=0 exit=0 sac . Фев 23 15:41 old 411 id= sc LOGIN console Фев 23 15:41 0:28 428 panaslog . Фев 23 15:41 old 413 id= e1 netwatch . Фев 25 12:02 old 415 id= up term=15 exit=0 zsmon . Фев 23 15:41 old 423 informix + pts/1 Мар 25 10:13 15:21 1796 (khomjak.profix.com) eugene + pts/3 Мар 22 18:23 15:24 23392 (khomjak.profix.com) serj + pts/4 Мар 18 10:41 old 13278 (sysadm.profix.com) serj + pts/15 Мар 25 11:32 14:51 3004 (sysadm.profix.com) kravchuk + pts/14 Мар 26 09:39 . 11615 (creator.profix.com) slavik + pts/2 Мар 21 14:18 16:13 14526 (slavik.profix.com) informix + pts/17 Мар 21 13:19 17:50 14012 (bachin.profix.com) informix pts/6 Мар 25 18:34 15:05 3572 id=t800 term=0 exit=0 (lyapota.profix.com) lyapota pts/7 Мар 25 18:34 17:58 3577 id=t900 term=0 exit=0 (lyapota.profix.com) informix + pts/5 Мар 5 14:48 15:33 27664 (slavik.profix.com) kravchuk pts/8 Мар 25 18:24 15:15 8916 id=tB00 term=0 exit=0 --More-- В простейшем случае программа who вызывается без параметров: [kravchuk@arturo 09:45:35 /]$ who root console Фев 27 21:34 (:0) informix pts/1 Мар 25 10:13 (khomjak.profix.com) eugene pts/3 Мар 22 18:23 (khomjak.profix.com) serj pts/4 Мар 18 10:41 (sysadm.profix.com) serj pts/15 Мар 25 11:32 (sysadm.profix.com) kravchuk pts/14 Мар 26 09:39 (creator.profix.com) slavik pts/2 Мар 21 14:18 (slavik.profix.com) informix pts/17 Мар 21 13:19 (bachin.profix.com) informix pts/5 Мар 5 14:48 (slavik.profix.com) root pts/13 Фев 27 21:35 (:0.0) root pts/16 Мар 25 17:24 (:0.0) Наконец, вот как используется команда who для самоидентификации: [kravchuk@arturo 09:45:38 /]$ who am i kravchuk pts/14 Мар 26 09:39 (creator.profix.com) Средства создания, изменения и удаления учетных записей пользователейПоскольку база данных учетных записей организована в виде обычных текстовых файлов, основные задачи управления учетными записями могут решаться с помощью обычного текстового редактора, например, vi. Однако поскольку при этом требуется согласованное изменение нескольких файлов, в системе для управления учетными записями предлагается ряд утилит командной строки, средства на основе меню или на основе графического пользовательского интерфейса. Для создания, изменения и удаления учетных записей все версии ОС UNIX предлагают три команды, useradd, usermod и userdel, соответственно. Они в большинстве систем имеют следующий синтаксис:
Эти команды позволяют выполнить только согласованные и допустимые изменения в файлах /etc/passwd, /etc/shadow и /etc/group. Команды управления учетными записями, в общем случае, может выполнять только пользователь root. Основные опции команд управления учетными записями представлены в табл. 8. Таблица 8. Основные опции команд управления учетными записями
Учтите, что вновь созданная учетная запись блокируется до тех пор, пока не будет выполнена команда passwd, задающая пароль новому пользователю. Рассмотрим ряд простых примеров управления учетными записями: # useradd -с "Student 1" -d /home/user01 -g ixusers -m -s /bin/bash user01 # usermod -с "Student 1 of UNIX Course" -G others -s /bin/ksh user01 # userdel -r user01 Средства создания, изменения и удаления группДля создания, изменения и удаления групп все версии ОС UNIX предлагают три команды, groupadd, groupmod и groupdel, соответственно. Они имеют следующий синтаксис:
Эти команды позволяют выполнить только согласованные и допустимые изменения в файле /etc/group. Команды управления группами, в общем случае, может выполнять только пользователь root. Опции и операнды команд управления группами представлены в табл. 9. Таблица 9. Опции команд управления группами
Учтите, что при удалении группы просто удаляется строка из файла /etc/group. Никакие изменения в файловой системе и в учетных записях пользователей команды groupmod и groupdel не производят. Соответствующие действия по согласованию, при необходимости, должен выполнять системный администратор - пользователь root. Рассмотрим ряд простых примеров управления группами: # groupadd -g 101 informix # groupmod -g 102 -o -n ixusers informix # groupdel ixusers |