учебники, программирование, основы, введение в,

 

Установка ОС Solaris и управление пользователями

Отличия установки Solaris на компьютеры SPARC
Система устанавливается на компьютеры различной архитектуры сходным образом, но при этом следует помнить о некоторых различиях.
Во-первых, для каждой архитектуры используется свой дистрибутив (количество компакт-дисков в дистрибутиве одинаково для обеих архитектур).
Во-вторых, для установки на платформе Intel недоступен способ Factory JumpStart.
В-третьих, установка на системы SPARC начинается со взаимодействия с firmware - встроенным в ПЗУ программным обеспечением компьютера, которое производит загрузку установочной программы с компакт-диска, ленты, через сеть с NFS-сервера и т.п. Для установки Solaris на компьютер архитектуры x86 проще всего использовать загрузочный компакт-диск из дистрибутива.
В-четвертых, на компьютеры SPARC устанавливается 64-битная версия Solaris, которая не может работать с 32-битной архитектурой x86.
Solaris 9 специально создана для компьютеров SPARC, поэтому возможных проблем при установке на эти компьютеры неизмеримо меньше. Например, практически исключена несовместимость оборудования и ПО. Именно поэтому далее речь будет идти о трудностях, которые можно встретить при установке Solaris 9 на компьютеры x86.
Трудности при установке Solaris 9 на компьютеры x86
Отсутствие поддержки DMA
В процессе копирования mini-root на жесткий диск может появиться ошибка, информация о которой выглядит так: вначале несколько раз повторяется сообщение
Warning: /pci@0,0/pci-ide@7,1/ide@0 (ata0)
timeout : abort request, target=0 lun=0

а затем копирование прекращается с сообщением об ошибке:
Warning: /pci@0,0/pci-ide@7,1/cmdk@0,0 (Disk 0)
Error for command 'read sector'. Error level 'Informational'
Sense Key: aborted command
Vendor 'Gen-ATA' error code: 0x3

Это говорит о том, что система не смогла корректно работать с ATA DMA (Direct Memory Access) в вашем компьютере и поддержку ATA DMA в Solaris (а не в BIOS!) следует отключить. Для этого надо:

  1. Запустить установку заново.
  2. После того как DCA определит, какие устройства есть в системе и загрузит соответствующие драйверы, появится экран с вопросом о том, какой диск является загрузочным (в заголовке экрана будет написано Boot Solaris). Выбрать Boot Tasks (нажав F4).
  3. Появится экран Boot Tasks, там следует выбрать View/Edit Property Settings.
  4. Найти в появившемся списке свойств ata-dma-enabled.
  5. Присвоить этому параметру значение 0.
  6. Выбрать возврат к предыдущему экрану (Back), нажав F2.
  7. Возвратиться к экрану Boot Solaris, нажав F3.
  8. Продолжить установку системы, как было показано ранее.

Надо отметить, что в Solaris 8 x86 поддержка ATA DMA по умолчанию была выключена. В Solaris 9 умолчание изменили: теперь поддержка ATA DMA включена по умолчанию.
Есть данные, говорящие о том, что Solаris 8 x86 при установленном в DCA параметре ata-dma-enabled=1 корректно работал с приводами ATAPI CDROM/DVD-ROM, в отличие от Solaris 9 x86, который не использует DMA для этих устройств.
Невозможность работы в графическом режиме
Если параметрам видеосистемы присвоить значения, которые не соответствуют аппаратной конфигурации компьютера (неверный тип видеокарты, неподдерживаемые разрешение или частота кадровой развертки монитора), то при попытке работы в графическом режиме (например, при переходе к графической части установки способом Web Start) программа установки зависнет.
Попробуйте нажать Ctrl-C, возможно, программа kdmconfig будет аварийно завершена и установку можно будет продолжить.
Если это не помогло, придется устанавливать систему заново с указанием правильных параметров видеоадаптера и монитора программе kdmconfig. В случае, если Solaris не поддерживает установленное у вас в компьютере видеооборудование (например, очень старая или весьма оригинальная видеокарта), то следует либо выбрать минимальный вариант видеоадаптера (VGA, 16 цветов, 60 Гц развертка), либо отказаться от работы в графическом режиме и вообще не запускать графическую среду Solaris. В последнем случае возможным выходом явится установка системы с помощью программы suninstall.
Неожиданное прерывание установки
Если установка системы прервалась на этапе копирования файлов, когда разделы диска уже определены, можно запустить ее заново командой /sbin/cd0_install. Часть настроек придется повторить. Это возможно только в том случае, если в результате прерывания установки вы видите стандартное приглашение к вводу команд в командной строке, вот такое:
#

Невозможность войти под именем root
С именем root запрещено входить в систему интерактивно через сеть или подсоединяться к ней по протоколу ftp. Однако если пароль root забыт или неизвестен, следует обнулить этот пароль так, чтобы он стал пустым. Методика этого процесса описана в лекции 1. Помните, что для этого требуется физический доступ к компьютеру под управлением Solaris, удаленно сбросить пароль root невозможно. Поэтому не следует бояться, что злонамеренные хакеры воспользуются описанным способом без вашего ведома. С другой стороны, следует ограничить доступ к компьютеру посторонних людей!
Не распознается сетевая карта
Еще на начальном этапе установки DCA (вы, конечно, помните, DCA - это Device Configuration Assistant, программа, которая определяет, что за оборудование установлено в компьютер, и помогает обнаружить новые устройства) легко определил вашу сетевую карту, и вы до самого конца установки пребывали в уверенности, что Solaris ее поддерживает. Не тут-то было! Никакой сетевой карты после установки Solaris не видит, и все настройки сети отправились коту под хвост! Что можно сделать в этом случае?
Возможно, следует поменять сетевую карту. Однако для NE2000-совместимых карт можно попробовать менее сложный способ. Правда, покажется ли он вам менее сложным к концу следующей страницы?
В Solaris для драйвера каждого устройства существует конфигурационный файл, в котором указано, какие адреса портов и прерывания использует соответствующее устройство. Конфигурационный файл может содержать одни комментарии, тогда драйвер будет использовать значения по умолчанию. Однако файл конфигурации должен присутствовать в любом случае. Файлы конфигурации расположены в файлах /kernel/drv/*.conf и /platform/i86pc/kernel/drv/*.conf.
Мы уже предположили, что у нас есть cетевой адаптер, совместимый с NE2000. Обычно эти адаптеры имеют диапазон адресов портов от 0x240 до 0x360. Но Solaris по умолчанию не ищет адаптер с адресом больше 0x300, так как NE2000 может конфликтовать с другими устройствами. Стало быть, для того чтобы Solaris мог работать с адаптером NE2000 на 0x320, следует изменить файл конфигурации, предварительно удостоверившись в том, что аппаратных конфликтов при этом не будет.
В Solaris файл устройства и драйвер для семейства адаптеров, совместимых с NE2000, принято называть nei. В некоторых системах этот драйвер просто выключен по умолчанию.
Для изменения параметров, используемых драйвером, в нашем случае понадобится изменить файл /kernel/drv/nei.conf. Возможно, вместо этого придется менять файл /platform/i86pc/kernel/drv/nei.conf, в зависимости от системы. Иногда файлы *.conf с одинаковыми именами есть в обоих каталогах - тогда, как показывает практика, лучше использовать каталог /platform/i86pc/kernel/drv/. Для платформы, отличной от x86, следует выбрать каталог, соответствующий платформе. В файле *.conf должно быть нечто вроде:
name="nei" parent="isa" reg=0x1,0x320,0x1f interrupts=11;

Здесь name="nei" обозначает символическое имя, которое будет иметь файл устройства в каталоге /dev. Параметр parent="isa" означает тип шины. Здесь тип ISA включает и шину PCI, что может поначалу ввести в заблуждение. Для Solaris этот параметр равен либо sysbus (это системная шина SPARC), либо isa, что означает любую шину, кроме SPARC sysbus. Флаг "0x1" означает, что далее идет определение диапазона I/O портов, а не смещения в памяти; 0x320 показывает начальный I/O адрес в шестнадцатеричном виде; 0x1f есть размер диапазона портов ввода-вывода от начального адреса; "interrupts=11" показывает IRQ 11 в десятичном виде.
При выполнении подобной операции с файлом конфигурации драйвера другого устройства попробуйте команды
grep conf /kernel/drv/*.conf

и
grep conf /platform/`uname -m`/kernel/drv/*.conf

чтобы выяснить, как называется нужный файл.
Выключите компьютер и (если требуется) измените адрес перемычками на сетевом адаптере. После перезагрузки система должна увидеть карту. Для карт "plug and play" следует отключить функцию самонастройки и установить конкретные номер порта и IRQ.
При добавлении ранее неизвестного системе сетевого адаптера необходимо также создать файл /etc/hostname.nei0 и указать в нем IP-адреса. Это требуется для того, чтобы система увидела не только новое устройство, но и распознала в нем новый сетевой интерфейс. Также добавьте в /etc/hosts строчку, сопоставляющую имя данному интерфейсу, например:
10.1.1.1 mycomputer.domain.com

В этом примере предполагается, что файл /etc/hostname.nei0 содержит адрес 10.1.1.1.
Для того чтобы в каталогах /devices и /dev гарантированно были нужные файлы нового устройства, дайте команду devfsadm (для Solaris 8 и более ранних версий - drvconfig):
devfsadm

или
/usr/sbin/drvconfig -i nei

Эта команда выполняется автоматически при добавлении нового устройства с помощью команды add_drv во время следующей перезагрузки системы. Подробнее о добавлении устройств говорится в лекции 12.
Далее наберите touch /reconfigure; reboot (это можно делать только как root).
После перезагрузки, чтобы быть уверенным, что адаптер опознан, дайте команду
ifconfig nei0 plumb

Строка nei0 должна появиться в выводе программы prtconf.

Русификация Solaris
Solaris 9 имеет встроенную поддержку русского языка во всех кодировках, включая кодировку Unicode (UTF-8). Поэтому все поставляющиеся с системой программы корректно работают с русским языком. Для корректной работы клавиатурного переключателя языков и программы Netscape Navigator следует при установке системы выбирать вариант локализации RU.UTF-8.
Как и в других системах UNIX, поддержка русского языка в программах, которые вы скачали из Сети в исходных текстах или двоичном виде и установили в систему, зависит только от разработчика этих программ. Гарантировать корректность такой поддержки нельзя.
Использовать русскоязычные имена файлов в системе можно, но из соображений совместимости с другими системами этого лучше не делать.
При установленной локализации RU.UTF-8 (Unicode) переключение с английского алфавита на русский при вводе текста осуществляется нажатием клавиш Compose+c, c. Клавиша Compose на стандартной 104-клавишной клавиатуре находится между клавишей "Win" и правой клавишей "Control". Нажатие Compose+c, с означает, что сначала вы нажимаете одновременно клавиши "Compose" и "с", а затем, отпустив их, однократно нажимаете клавишу "c". Для обратного переключения языка ввода на английский следует нажать Ctrl-пробел.
Сброс конфигурации системы
Бывают ситуации, когда вы уже окончательно запутались в настройке системы и готовы начать все заново, лишь бы она заработала. Для сброса настроек служит команда
sys-unconfig

Сбрасываемая информация о настройках включает в себя имя хоста, имя домена NIS, часовой пояс, IP-адреса интерфейсов, маску сети и пароль root. То, что делает sys-unconfig, является операцией, обратной по отношению к тому, что выполняют программы sysidnet, sysidns и sysidsys. Более детальная информация об этих программах находится на соответствующих страницах руководства по sysidtool.
Программа sys-unconfig:

  • записывает /etc/inet/hosts в /etc/inet/hosts.saved;
  • если /etc/vfstab содержит файловые системы, монтируемые по NFS, копирует /etc/vfstab в /etc/vfstab.orig;
  • восстанавливает в первоначальное состояние /etc/inet/hosts (как было сразу после установки системы);
  • удаляет имя хоста из файлов /etc/hostname.interface для всех настроенных к этому моменту интерфейсов (тех, что показывает команда ifconfig -a), за исключением файла локального интерфейса петли (lo0);
  • удаляет имя домена из /etc/defaultdomain;
  • устанавливает часовой пояс в значение PST8PDT в /etc/TIMEZONE;
  • отменяет работу NIS и NIS+, если они были настроены;
  • удаляет упоминания данного хоста в /etc/net/*/hosts;
  • удаляет файл /etc/inet/netmasks;
  • удаляет файл /etc/defaultrouter;
  • удаляет пароль root из /etc/shadow;
  • удаляет файл /etc/.rootkey;
  • запускает все программы конфигурации системы (см. man sysidconfig) c ключом -u;
  • удаляет файл /etc/resolv.conf;
  • удаляет файлы, относящиеся к LDAP, отменяя работу LDAP:
  • /var/ldap/ldap_client_cache,
  • /var/ldap/ldap_client_file,
  • /var/ldap/ldap_client_cred,
  • /var/ldap/cachemgr.log.

    
По окончании работы sys-unconfig выполняет остановку системы. После перезагрузки потребуется настроить систему заново.
Зачем распределять пользователей по группам?
Как уже говорилось в лекции 1, в Solaris есть ряд предопределенных групп. Большинство из них созданы для запуска системных процессов от имени этих групп. Но одна из групп - staff - предназначена для того, чтобы ее членами были все обычные пользователи, которым разрешена интерактивная работа с системой Solaris. Некоторые приложения (например, sendmail или СУБД Oracle) требует создания специфических групп с определенными именами. При необходимости вы можете создать новую группу и назначить ее в качестве главной или дополнительной группы тем пользователям, которым следует делегировать одинаковые права.
Группа staff часто является главной группой большинства пользователей.
При добавлении пользователя с помощью команды useradd пользователь попадает в группу other, если явно не указано иное. Эта группа имеет идентификатор 1.
При необходимости изменения учетной записи пользователя следует воспользоваться программами управления этими записями. Они описаны в разделе "Программы управления учетными записями пользователей" этой лекции.
При распределении пользователей по группам удобно назначить им в качестве главной группы такую, которая бы соответствовала их основной роли в системе. Например, те пользователи, чья работа с системой будет ограничена получением почты из почтовых ящиков, должны быть отнесены к группе pop3 или imap4. Удобно дать таким группам имена, по которым вы сразу можете вспомнить, ради чего эта учетная запись вообще появилась в системе.
Представьте: после четвертой чашки кофе ваш взгляд упирается в файл /etc/passwd и в мозгу начинает неотвязно биться мысль: нет ли в системе лишних пользователей? Может быть, завалялись какие-нибудь устаревшие учетные записи и их можно вычистить? Открыв /etc/passwd, вы видите несколько сотен пользователей, полтора года назад отнесенных к группе pop3. Ага, догадываетесь вы, эти забирают почту с нашего сервера. А вот эти, из группы oldlamer, что тут делают?
После того как пользователям назначена главная группа, каждый из них может быть добавлен в другие группы. Все группы, кроме главной, в которых участвует пользователь, называются дополнительными для этого пользователя. Для добавления пользователя в дополнительные группы следует использовать программы управления учетными записями. Эти программы изменят файл /etc/group, так как именно этот файл хранит информацию о дополнительных группах пользователей. С другой стороны, вы можете вручную исправить запись о группе в /etc/group, указав в ее последнем поле через запятую тех пользователей, которых собираетесь добавить в эту группу.

Концепция безопасности UNIX
Вся система безопасности UNIX изначально строилась на трех китах: разделение всех пользователей по отношению к объекту на владельца объекта, группу объекта и всех остальных; назначение им прав доступа поотдельности; обязательное наличие у каждого объекта владельца и группы.
В современных системах UNIX для большей гибкости при настройке прав доступа введены дополнительные свойства объектов, такие как флаги для файлов и каталогов, списки управления доступом (ACL) для файлов и каталогов, аутентификация и авторизация с использованием различных служб аутентификации, подобных TACACS и RADIUS, а также модули аутентификации и авторизации (Pluggable Authentication Modules - PAM). В этой книге TACACS и RADIUS не рассматриваются, а технология и настройки PAM обсуждаются в лекции 20.
Естественно, надежность усовершенствованной системы безопасности снизилась, а сложность администрирования выросла, как и при любом другом усложнении любой системы. Так что остается признать: чем больше возможностей по настраиванию системы предоставляется, тем внимательнее надо быть администратору.
Тем не менее для начала познакомимся с классической концепцией безопасности, так как все остальные дополнения представляют собой лишь надстройку над ней.
Объект
Объектом в контексте разговора о безопасности мы называем файл, каталог или процесс. Файл и каталог записаны на некий носитель, их свойства хранятся на том же носителе. Процесс запущен в памяти системы, его свойства возникают при запуске процесса, существуют вместе с ним, пока он работает, и исчезают, как только процесс завершается. Вообще говоря, одну и ту же программу можно запустить с совершенно разными свойствами.
Разделение всех пользователей по отношению к объекту
У каждого объекта есть владелец. Им может быть только один из пользователей данной системы UNIX. Появление объектов, которыми владеют пользователи, не зарегистрированные в данной системе, - это ошибка системного администратора. Такое может произойти при разархивировании файла, созданного в другой системе. Если вместе с файлом была сохранена информация о его владельце, то легко может оказаться, что в другой системе есть пользователь с таким идентификатором (UID), а в нашей - нет.
Обратите внимание: для системы важны не имена пользователей, а их идентификаторы. Допустим, что в чужой системе есть пользователь ivan с UID, равным 1000, а в нашей ivan имеет UID, равный 2001. Тогда при переносе файла с чужой системы к нам с сохранением информации о владельце файла, в нашей системе появится "бесхозный" файл, если у нас нет пользователя с UID 1000, или принадлежащий тому пользователю, чей это UID, если такой найдется.
Право владения объектом в UNIX передается по наследству от процесса к процессу, а при создании файла или каталога его владельцем становится тот пользователь, от чьего имени запущен процесс, создавший файл или каталог.
Однако в ряде случаев запускаемый процесс будет принадлежать не тому, кто запустил процесс-родитель, а иному пользователю. Например, при входе в систему пользователь сообщает имя и пароль программе login. Она работает от имени root (т.е. ее владельцем является пользователь root). Но программа login запускает для пользователя командный интерпретатор так, чтобы владельцем процесса командного интерпретатора был сам входящий в систему пользователь.
Любой объект имеет не только владельца, но и группу. Иногда владельца называют "хозяином", а группу - "группой владельца", "групповым владельцем", "групповым хозяином" и т.п. Смысл этого понятия в том, что каждому объекту в UNIX сопоставляется не только UID (User IDentificator), который идентифицирует владельца объекта, но и GID (Group IDentificator), который идентифицирует группу пользователей, имеющую особые права на объект.
Таким образом реализуется разделение всех пользователей по отношению к объекту на владельца объекта, группу, имеющую особые права на объект, и всех остальных. Группу, обладающую особыми правами на объект, мы будем называть группой объекта. Соответственно, мы будем говорить о группе файла, группе каталога или группе процесса. При этом надо помнить, что группа файла - это не группа, в которую входит файл или его владелец. В общем случае это произвольная группа, объединяющая произвольных пользователей и имеющая особые права на этот объект.
Назначение прав доступа поотдельности
Владельцу файла, группе файла и всем остальным пользователям могут быть поотдельности назначены разные права доступа к файлу. То же справедливо и в отношении каталога. Так реализуется назначение прав доступа к объекту в отдельности его владельцу, группе и "всем остальным".
Последних в документации и профессиональных разговорах иногда называют world ("мир"), имея в виду "вообще всех остальных пользователей этого компьютера". Этот термин происходит из далеких времен, когда компьютеров было мало, а пользователей у одного компьютера - очень много, и администратор мог гордо говорить о них - "мой мир".
Каждый объект имеет владельца и группу
Любой файл, каталог или процесс имеет владельца и группу. Это означает, что файлу, каталогу и процессу обязательно сопоставлены два идентификатора, которые называются UID (User ID) и GID (Group ID) соответственно. Администрировать систему легче, если все объекты имеют UID и GID из числа представленных в /etc/passwd и /etc/group соответственно. "Бесхозные" объекты вносят сумятицу в стройные ряды прав доступа и делают права доступа к ним владельца и группы бессмысленными - ведь никто из пользователей не может получить "чужое" право доступа.

Структура файлов /etc/passwd, /etc/shadow, /etc/group
Файлы /etc/passwd и /etc/group в Solaris имеют такой же формат, как и в других системах UNIX, а файл /etc/shadow одинаков для всех систем ветви System V. Рассмотрим примеры файлов (для этого потребуется воспользоваться командой cat или командой more):
Учетные записи пользователей
cat /etc/passwd
root:x:0:1:Super-User:/:/sbin/sh
daemon:x:1:1::/:
bin:x:2:2::/usr/bin:
sys:x:3:3::/:
adm:x:4:4:Admin:/var/adm:
lp:x:71:8:Line Printer Admin:/usr/spool/lp:
uucp:x:5:5:uucp Admin:/usr/lib/uucp:
smmsp:x:25:25:SendMail Message Submission Program:/:
listen:x:37:4:Network Admin:/usr/net/nls:
nobody:x:60001:60001:Nobody:/:
noaccess:x:60002:60002:No Access User:/:
nobody4:x:65534:65534:SunOS 4.x Nobody:/:
col:x:100:1::/home/col:/bin/sh
temp:x:101:1::/home/temp:/bin/sh
qaz:x:102:1::/home/qaz:/bin/sh
Termos:x:103:1::/home/Termos:/usr/bin/bash

Файл состоит из записей, каждая из которых описывает одного пользователя и занимает одну строку. Поля записей разделяются двоеточиями.
Первое поле - имя пользователя в системе. Это имя пользователь вводит для входа в систему. Имя в Solaris должно иметь длину от 2 до 8 символов и содержать только латинские буквы и цифры. Имя пользователя в Solaris может содержать прописные латинские буквы, однако из соображений совместимости с другими системами UNIX рекомендуется использовать только строчные (маленькие) буквы.
Второе поле - признак наличия пароля. Пустое поле означает отсутствие пароля. Для фактического отсутствия пароля у пользователя необходимо, кроме того, чтобы второе поле в файле /etc/shadow в описании этого пользователя имело значение NP.
Третье поле - идентификатор пользователя, UID.
Четвертое поле - идентификатор главной группы пользователя, GID.
Пятое поле (иногда его называют GECOS) - описание пользователя. Обычно оно содержит полное имя пользователя (имя и фамилию) и координаты для связи с ним - номер офиса, адрес, телефон или пейджер.
Шестое поле - домашний каталог пользователя. При интерактивном входе в систему пользователь сразу попадает именно в этот каталог. Кроме того, некоторые сетевые службы (например, ftpd) требуют, чтобы у каждого пользователя, пытающегося получить доступ к сетевой службе, был "честный", т.е. на самом деле существующий и доступный для пользователя домашний каталог.
Седьмое поле - командный процессор, который будет запущен для пользователя при интерактивном входе в систему. Некоторые сетевые службы (например, ftpd) требуют, чтобы у каждого пользователя, пытающегося получить доступ к сетевой службе, был существующий в системе на самом деле командный процессор. Файл /etc/shells описывает доступные в системе командные процессоры, которые следует назначать пользователям. Сразу после установки системы файл /etc/shells не образуется. Системный администратор должен создать его вручную, если он требуется для каких-то программ в системе, например, для ftpd.
Относительно содержания поля GECOS следует сделать несколько замечаний.
Поле GECOS часто называют полем комментария, и это верно: в нем следует записывать контактную информацию о пользователе. Системному администратору ничего не скажет строка в файле протокола, свидетельствующая о проблеме, вызванной работой пользователя ikonst34. Кто это? Иван Константинович из планового отдела или Илья Константинов из технического? Или это Иконников Станислав из филиала 34? Чтобы не мучаться ассоциациями, навеянными именем пользователя, а точно знать, кто скрывается за лаконичным username, следует заполнять поле комментария.
Каждый элемент этого поля (например, полное имя, номер комнаты в офисе, контактный телефон) принято отделять от других запятой, но это необязательное требование. В настоящее время, к сожалению, не существует строго определенного правила заполнения поля комментария. Хорошим стилем является указание в этом поле следующей информации:

  • полные фамилия, имя и (если это необходимо для однозначной идентификации) отчество пользователя или, если это учетная запись предопределенного псевдопользователя типа bin, полное название приложения, использующего эту запись;
  • номер комнаты и ее местоположение, или контактное лицо, ответственное за запуск приложения, использующего запись;
  • рабочий телефон;
  • другая контактная информация (пейджер, факс, мобильный телефон и т.п.).

Не всегда требуется указывать всю эту информацию. На деле достаточно указать ровно столько сведений, сколько достаточно системному администратору для однозначной идентификации владельца учетной записи. Только имейте в виду - не одному-единственному конкретному системному администратору, а любому администратору, которому придется управлять созданной вами системой. Ведь нынешний системный администратор может уволиться или уехать в отпуск. Сможет ли его преемник или заместитель быстро разобраться в записях /etc/passwd? Делайте записи в поле комментария полезными сведениями, а не отписками.
Например, файл /etc/passwd может содержать такие записи:
root:*:0:0:Root - Michael Kruglov, room 601,
89119119111:/root:/bin/bash
ftp:*:23:1:FTP Admin, Andrei Nezvanyi,
9733333:/home/ftp:/bin/bash
apache:*:404:40:Web Master, Elena
Osatanenko,1001010:/usr/local/httpd:/bin/sh

Каждая запись в файле /etc/passwd размещается на одной строке, здесь они перенесены из-за ограниченного размера страницы книги.
Последнее, что следует сказать о поле GECOS, это почему оно так называется.
В свое время компания General Electric владела компьютером, операционной системой которого была GECOS (General Electric Comprehensive Operating System). Компьютеры под управлением UNIX использовались для подготовки задач для этого компьютера. Изначально в поле комментария хранилась информация для запуска командных файлов и пакетных задач, которые были предназначены для системы GECOS:
cat /etc/shadow
root::6445::::::
daemon:NP:6445::::::
bin:NP:6445::::::
sys:NP:6445::::::
adm:NP:6445::::::
lp:NP:6445::::::
uucp:NP:6445::::::
nuucp:NP:6445::::::
smmsp:NP:6445::::::
listen:*LK*:::::::
nobody:NP:6445::::::
noaccess:NP:6445::::::
nobody4:NP:6445::::::
col:9NvfZSaIQgcQk:12435::::::
temp:*LK*:::::::
qaz:v.srD227fHRx2:12448::::::
Termos:o3HzHXFopdwbU:::::::

Этот файл тоже описывает пользователей. В нем хранятся зашифрованные пароли пользователей. Формат файла таков:
Первое поле - имя пользователя.
Второе поле - зашифрованный пароль, *LK* означает, что учетная запись заблокирована (locked), а NP - что пароль отсутствует (no password).
Третье поле - число дней между 1 января 1970 года и датой последнего изменения пароля.
Четвертое поле - минимальное количество дней, которое должно пройти от одной смены пароля до другой.
Пятое поле - максимальное количество дней, в течение которого пароль считается действительным; по истечении этого срока система попросит ввести новый пароль, так как старый утратит силу.
Шестое поле - количество дней, за которое система предупредит пользователя о необходимости смены пароля.
Седьмое поле - количество дней, которое пользователь может не работать в системе и считаться активным; по истечении этого срока учетная запись автоматически блокируется.
Восьмое поле - дата, до которой учетная запись считается действительной; после этой даты пользователь не сможет войти в систему.
Девятое поле зарезервировано и сейчас не используется.
Данный формат /etc/shadow характерен как для Solaris, так и для других относящихся к System V систем UNIX, например, для Linux.
В /etc/shadow обязательно наличие только первых трех полей в каждой записи, остальные могут отсутствовать - все или часть из них. Рекомендуется вносить исправления в /etc/shadow не вручную, а с помощью программ admintool, usermod, useradd, passwd. Однако, в одном случае - когда забыт пароль root - придется исправлять /etc/shadow в текстовом редакторе.
Пользовательские файлы конфигурации
У каждого пользователя в домашнем каталоге есть несколько файлов конфигурации. Обычно присутствуют файлы конфигурации командного процессора. Если в системе используется несколько командных процессоров, имеет смысл сделать файлы конфигурации для каждого из них (о файлах конфигурации командных процессоров см. лекцию 10). Кроме того, могут быть файлы конфигурации графической среды (.Xsession и другие), файлы конфигурации почтовой системы (.elm, .forward и другие), файлы с историей команд (.history, .bash_history) и прочие. Их объединяет то, что их имена практически всегда начинаются с символа "." (точка). Можно увидеть их в списке файлов каталога, если дать команду
ls -a

Пользовательские файлы конфигураций создаются заранее системным администратором. Стандартные пользовательские файлы конфигураций по умолчанию поставляются вместе с операционной системой и в Solaris располагаются в /etc/skel (от слова skeleton - скелет, т.е. основа). При добавлении в систему нового пользователя они автоматически копируются из каталога /etc/skel в домашний каталог нового пользователя. При добавлении нового пользователя или модификации существующей учетной записи можно указать другой каталог с файлами конфигурации, чтобы копировать не файлы по умолчанию, а другие файлы. Их предварительно следует создать и модифицировать в соответствии с настройками, которые требуется установить для новых пользователей.
Если изменить файлы в каталоге /etc/skel, то измененные файлы будут копироваться в домашние каталоги только тех пользователей, которые будут добавлены после модификации этих файлов. Если новые версии файлов конфигурации надо разложить по каталогам всех пользователей, это надо сделать явным образом, с помощью скрипта или вручную.
Мы будем далее называть /etc/skel каталогом базовых пользовательских файлов конфигурации. После того как пользователь войдет в систему, он может изменить настройки, сделанные для него в файлах конфигурации в своем каталоге, или добавить новые, если системный администратор не запретил ему запись в файлы конфигурации.
Группы пользователей
Все группы, определенные в системе, перечислены в файле /etc/group.
cat /etc/group
root::0:root
other::1:
bin::2:root,bin,daemon
sys::3:root,bin,sys,adm
adm::4:root,adm,daemon
uucp::5:root,uucp
mail::6:root
tty::7:root,adm
lp::8:root,lp,adm
nuucp::9:root,nuucp
staff::10:
daemon::12:root,daemon
sysadmin::14:
smmsp::25:smmsp
nobody::60001:
noaccess::60002:
nogroup::65534:

Первое поле - имя группы.
Второе поле - зашифрованный пароль; это устаревшее поле, в настоящее время нет команды, которая бы позволила установить пароль на группу, и обычно нет необходимости это делать. Если все же такая необходимость появится, то можно установить требуемый пароль какому-нибудь пользователю с помощью программы passwd, а затем копировать поле пароля из /etc/shadow в /etc/group. Пароль группы используется в Solaris только программой newgrp. Эта программа требуется для изменения эффективного группового идентификатора пользователя в ходе его интерактивной работы. Если группа, которой соответствует новый групповой идентификатор, имеет пароль, то программа newgrp его запросит.
Третье поле - идентификатор группы (GID). Этот идентификатор должен быть уникальным в пределах системы, а в случае использования общих файлов групп и паролей - в пределах всей сети организации. Номера от 0 до 99 и от 60001 до 60002 зарезервированы для системных групп. Создавайте свои группы с идентификаторами от 100 до 60000 включительно.
Четвертое поле - список пользователей через запятую; для этих пользователей данная группа будет являться дополнительной. В Solaris принято по умолчанию, что один пользователь может принадлежать не более чем к 15 дополнительным группам.

Программы управления учетными записями пользователей
Для управления учетными записями можно использовать программу admintool при работе в графическом режиме или программы useradd, usermod, userdel, groupadd, groupmod, groupdel в текстовом режиме или в окне терминала.
admintool
Программа admintool является устаревшей, и в системах Solaris 9 и в более поздних, начиная с мая 2002 года, ее может просто не быть. Вместо нее рекомендуется использовать Solaris Management Console (SMC). Однако, в доступных нам версиях Solaris программа admintool вполне способна работать и может оказаться удобной, поэтому здесь мы коротко рассмотрим ее функции. Подробнее программа Solaris Management Console рассматривается в лекции 26.
Программа admintool предназначена для управления пользователями, группами, принтерами, последовательными портами (serial ports), для назначения имени и IP-адреса компьютера (фактически - редактирования файла /etc/hosts) и управления ПО. Последняя функция в admintool в Solaris 9 x86 не всегда поддерживается, но поддерживалась в версиях до Solaris 8 включительно.
Для управления пакетами ПО следует использовать программу prodreg (запускается в графическом режиме), которая служит полноценным интерфейсом для установки и удаления пакетов программ, управляя Solaris Product Registry - базой данных об установленных продуктах.
Для запуска программы следует набрать admintool& в окне терминала при работе в графической среде. В текстовой среде admintool не работает.
Тип объектов, которыми вы собираетесь управлять с помощью admintool, следует выбрать в пункте меню Browse:
Действия, которые можно совершить с выбранным объектом, доступны через пункт меню Edit. Можно добавить или удалить объект, или изменить его свойства.
Например, можно установить любые свойства учетной записи пользователя, которые перечислены выше, при рассмотрении формата файлов /etc/passwd, /etc/shadow и /etc/group.
Фактически, любая программа управления учетными записями, будь то admintool, Solaris Management Console или любая другая программа, для работы со свойствами пользователя в графическом режиме все равно вызывает простые системные программы с интерфейсом командной строки для выполнения любых операций со свойствами пользователя. В Solaris для создания новой учетной записи пользователя (добавления пользователя в систему) используется программа useradd, для модификации учетной записи пользователя - usermod, для удаления учетной записи - userdel.
useradd
Для добавления нового пользователя следует выполнить команду useradd:
При этом пользователь попадает в группу other, если явно не указано иное. Эта группа имеет идентификатор 1.
При добавлении пользователя в Solaris происходит добавление соответствующей строки в файлы /etc/passwd, /etc/shadow и /etc/user_attr. Первые два файла нам уже знакомы. Последний служит для записи дополнительных атрибутов пользователя. Он используется только в Solaris, в других системах UNIX такого файла нет. К дополнительным атрибутам относятся административные права, данные этому пользователю, перечень ролей, назначенных ему, и указание на то, является ли эта учетная запись пользователя информацией о реальном пользователе или информацией о роли. Более подробно о ролях говорится в лекции 21, для получения детальной информации о /etc/user_attr - следует изучить man по user_attr.
По умолчанию useradd добавляет учетную запись пользователя в файлы /etc/passwd и /etc/shadow. Кроме этого, при указании ключа -G запись о пользователе помещается в /etc/group в строку тех групп, которые указываются в качестве дополнительных для него. С помощью ключа -m можно указать, что для пользователя следует создать домашний каталог.
Новые учетные записи пользователей остаются блокированными до тех пор, пока пользователю не будет назначен пароль с помощью программы passwd.
Имя пользователя или роли не может быть длиннее 8 символов и должно содержать только латинские символы, цифры, точку, знак подчеркивания и дефис. Точка является допустимым символом не для всех систем UNIX, поэтому ее не рекомендуется использовать в Solaris в целях совместимости, хотя это требование не является жестким. Первый символ имени должен быть буквой, и по крайней мере одна буква в имени должна быть буквой нижнего регистра.
Следующие ключи изменяют значения свойств учетной записи пользователя, которые задаются по умолчанию в отсутствие этих ключей:

  • -b base_dir - каталог, в котором должен быть создан домашний каталог пользователя; не требуется указывать, если используется ключ -d;
  • -c comment - поле GECOS общей информации о пользователе, как минимум, следует указать полное имя пользователя;
  • -d dir - домашний каталог пользователя; по умолчанию создается в каталоге /home и носит то же имя, что и пользователь (для пользователя lena создается домашний каталог /home/lena);
  • -D - показать значения по умолчанию для группы, системного каталога для домашних каталогов, каталога базовых пользовательских файлов конфигурации, командного процессора и ряда других свойств. Значения по умолчанию, принятые в системе, перечислены в 1.

Таблица 4.1. Значения свойств учетной записи пользователя по умолчанию

Группа

Other (GID =1)

Каталог с домашними каталогами пользователей

/home

Командный процессор

/bin/sh

Профиль

не назначается

Роль

не назначается

  • -e expire - дата истечения срока действия учетной записи; формат даты определен, как указано в man 3C getdate; по умолчанию не задано, после наступления этой даты пользователь не сможет войти в систему; используется для создания учетных записей временных сотрудников или гостей;
  • -f inactive - максимальное число дней, в течение которых пользователь может не входить в систему, по истечении этого срока учетная запись блокируется; удачное решение для забывчивых системных администраторов, которые не удаляют учетные записи при увольнении сотрудника, позволяет бороться с накоплением "мертвых душ" в системе;
  • -g group - группа пользователя, по умолчанию - other; подробности настройки групп по умолчанию - в man useradd;
  • -k skel_dir - каталог с базовыми пользовательскими файлами конфигураций, указанный каталог должен существовать, копии всех содержащихся в нем файлов будут помещены в домашний каталог нового пользователя. По умолчанию - /etc/skel;
  • -m - требует создать домашний каталог нового пользователя; если каталог уже есть, у главной группы пользователя должно быть право на чтение, запись и поиск в этом каталоге (права доступа к файлам и каталогам обсуждаются в лекции 6);
  • -o- разрешить пользователю иметь UID, совпадающий с UID существующего пользователя; может применяться для дублирования учетной записи root. Это может понадобиться для того, чтобы от имени пользователя root входить в систему только в экстренных случаях, а обычно пользоваться другой учетной записью. Во FreeBSD для этого по умолчанию предоставляется учетная запись toor (root наоборот). Это может быть удобно для назначения администратору командного процессора, отличного от /bin/sh, например /usr/local/bin/bash. Назначить такой командный процессор пользователю root нельзя, т.к. его командный процессор должен работать даже тогда, когда доступна только файловая система /, а /usr даже не смонтирована;
  • -s shell - полное имя файла, который будет назначен пользователю в качестве командного процессора при входе в систему; файл должен существовать;
  • -u uid - явное указание значения UID.

Ряд ключей, служащих для управления ролями, обсуждается в лекции 21.
Для изменения свойств пользователя следует запускать программу usermod. Ее синтаксис предполагает явное задание изменяемого свойства, а не интерактивное взаимодействие. При запуске без ключей только с указанием имени пользователя, чью учетную запись мы намерены изменить, программа usermod выдает сообщение об ошибке и краткую подсказку по использованию:
usermod ivan
UX: usermod: ERROR: Invalid syntax.
usage: usermod -u uid [-o] | -g group | -G group[[,group]...] |
-d dir [-m] | -s shell | -c comment |
-l new_logname | -f inactive | -e expire
-A authorization [, authorization ...] |
-P profile [, profile ...] |
-R role [, role ...] login

Для удаления пользователя используйте userdel.
Для добавления группы следует использовать groupadd, для удаления - groupdel; для изменения учетной записи группы - groupmod.

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г.Яндекс.Метрика