Настройки в Unix делятся на две группы. Первая -- те, что выполняются для всей машины -- настройки ОС, а также настройки для всех пользователей. Они могут делаться только администратором. Вторая -- настройки, которые влияют на окружение одного конкретного пользователя, и выполняются им самим.
Администратор в Unix носит имя "root". Этот пользователь обладает абсолютной властью: он может делать любые действия без ограничений, в том числе на него не распространяются права доступа на файлы -- он может просмотреть, модифицировать и удалить любой файл.
Поскольку надежность Unix в значительной степени определяется тем, что обычный пользователь не может нанести никакого вреда системе -- у него просто нет прав на это, то "всемогущесть" root содержит в себе и опасность.
Поэтому при использовании персонального компьютера под Unix надо учитывать несколько простых правил:
Например, перед редактированием файла /etc/X11/XF86Config стоит выполнить команду
cp -p /etc/X11/XF86Config /etc/X11/XF86Config.old
(ключ "-p" сохранит время модификации исходного файла).
Вообще при внесении каких-либо изменений надо всегда пользоваться правилом "семь раз отмерь, один раз отрежь".
Для того, чтобы временно "превратиться" из обычного пользователя в "root", используется команда su.
У обычных пользователей приглашение shell заканчивается символом "%" (zsh, tcsh) --
или "$" (bash) --bobby:/tmp%
У "root" же приглашение всегда заканчивается символом "#" --[mickey@bobby /tmp]$
bobby:/tmp#
Конфигурация в Unix представлена огромным числом файлов, большая часть из которых расположена в директории /etc/ и ее поддиректориях. Конфигурация системы X-Window и большинства X-программ расположена в поддиректориях /usr/X11R6/lib/X11/ (но для унификации многие из них перенесены в /etc/X11/, а на старом месте оставлены символьные линки туда). Конфигурация многих прикладных программ (таких, как mc, joe и т.д.) расположена в их специальных директориях (зачастую это /usr/lib/имя-программы/) -- это надо смотреть в их документации.
Кроме того, большинство программ позволяют каждому пользователю иметь свой личный набор настроек. Эти файлы располагаются в home-директории пользователя, и их имена обычно начинаются с ".".
Большинство файлов конфигурации в Unix -- текстовые. Это, во-первых, позволяет редактировать их любым текстовым редактором, а во-вторых, обеспечивает переносимость между разными системами.
Хотя и существуют "красивые" графические программы, служащие для
избавления администратора от ручной работы с текстовыми файлами, они
чрезвычайно далеки от совершенства (а то, что есть в RedHat начиная с
5.1, вообще не выдерживает никакой критики).
Наличие пользователя в Unix определяется в нескольких местах:
Местоположение домашней директории определяется администратором при
"создании" пользователя, а почтовые ящики все расположены в одной
директории, имя которой зависит от типа ОС -- например, во FreeBSD это
/var/mail/.
Каждому пользователю также могут быть назначены дисковые квоты, но
здесь мы этот вопрос рассматривать не будем.
Кроме того, при использовании сетевых информационных систем NIS или
NIS+ часть содержимого файлов /etc/passwd и
/etc/group может быть распределена по сети.
Файл /etc/passwd Необходимым и достаточным условием "существования" пользователя в
системе является его наличие в файле /etc/passwd.
Это текстовый файл, в каждой строке которого находится информация об
одном пользователе. Каждая строка состоит из 7 полей, разделенных
двоеточиями:
Поля имеют следующий смысл:
Пример:
В "свежеустановленной" системе всегда есть пользователь
"root" и некоторое количество псевдопользователей, необходимых
для работы системы -- "bin", "mail", "daemon" и
т.д. У специальных пользователей UID всегда меньше 100.
Зашифрованный пароль.
При записи паролей в Unix применяется необратимое шифрование по
алгоритму DES. Поэтому даже имея доступ к зашифрованному паролю,
нельзя узнать сам пароль. Система же, когда надо проверить пароль,
зашифровывает строку, введенную пользователем и сравнивает ее с той,
что содержится в /etc/passwd.
Однако эта схема не защищает от так называемых "словарных атак"
(dictionary attacks), когда берется, например словарь, и все слова из
него последовательно зашифровываются и сравниваются с тем, что записано
в /etc/passwd.
Поэтому в большинстве современных систем применяются так называемые
"теневые файлы паролей" (shadow passwords) -- в /etc/passwd
вместо пароля стоит "*" или "x", а сам шифрованный пароль содержится в
файле /etc/shadow или подобном, доступ к которому есть только
у пользователя "root".
Linux также поддерживает /etc/shadow (стабильная поддержка
в RedHat есть с версии 5.0, в 4.2 она несколько "кривая"), но это при
необходимости надо отдельно включить, один раз выполнив команду
pwconv.
Если шифрованный пароль (при наличии /etc/shadow -- в нем,
иначе -- в /etc/passwd) начинается с символа "*", то он не
соответствует никакому реальному паролю. Поэтому такой пароль
означает "вход пользователя заблокирован" -- такие пароли стоят, к
примеру, у псевдопользователей "bin", "mail",
"daemon" и т.д.
Числовые идентификаторы -- UID и GID.
В ядре Unix для идентификации пользователя служит не имя, а 16-битное
число -- так называемый UID.
Имя же может быть практически любым -- оно используется только при
входе в систему, а также тогда, когда нужно именно имя пользователя (в
адресах электронной почты, в finger, talk) и в
программах rsh, rlogin, ssh и им
подобных.
Пользователь с UID=0 -- супервизор, он имеет имя "root".
В принципе, ничто не мешает создать нескольких пользователей с
разными именами, паролями и home-директориями, но с одинаковыми UID --
у всех у них будут одинаковые права. Но при создании Unix этот фокус
не предусматривался, так что некоторые программы могут работать не
совсем корректно.
Аналогично группа пользователя определяется числовым идентификатором
GID. Но, в отличие от UID, один и тот же GID может быть присвоен
нескольким пользователям -- все они будут принадлежать к одной группе.
UID и GID должны совпадать на всех машинах. Аналогично
тому, как имена пользователей используются в протоколах RLOGIN и SSH, и
должны совпадать у одного пользователя на разных машинах, числовые
идентификаторы используются сетевой файловой системой
NFS. И если в rlogin и т.п. можно указать другое имя
пользователя, в NFS такой возможности нет.
Поэтому для того, чтобы пользователь "vasya" на машине Bobby
считался "эквивалентом" пользователя "vasya" на машине Garry, и
имел по NFS доступ с правильными правами, числовые идентификаторы
на обеих машинах должны совпадать. (Что интересно, одинаковость
имен для NFS неважна.)
Поскольку каждый пользователь в ИЯФ "существует" на машине Sky
(информация на которой берется из общеинститутской базы данных), лучше
всего на всех компьютерах использовать идентификаторы оттуда.
Файл /etc/group Файл /etc/group по формату очень похож на
/etc/passwd, но в нем перечислен список групп, существующих
на машине, и пользователи, к ним принадлежащие.
Для работы с ним служат команды groupadd, groupdel
и groupmod.
Хотя в принципе пользователей можно создавать "руками", путем
редактирования файла /etc/passwd и еще некоторых действий,
этого никогда не надо делать.
В разных ОС (и даже в разных версиях одной ОС) для манипуляций с
пользователями зачастую служат разные команды. Пожалуй, единственной
"универсальной" командой является passwd. Поэтому рассмотрим
команды, используемые в RedHat Linux 5.2.
Создание пользователя. Для создания пользователя служит
команда useradd. Самый простой вариант --
useradd имя, при этом будут подобраны "первые
попавшиеся" UID и GID, а в качестве home-директории и shell будут
уставлены значения по умолчанию.
Лучше же всегда пользоваться такой формой команды:
Это позволяет создать пользователя "с нужными свойствами".
Ключ "-m" указывает useradd, что надо создать
home-директорию данного пользователя (по умолчанию она может быть
прописана в /etc/passwd, но не создана на диске) и сделать
его ее владельцем. В нее будут скопированы файлы из директории
/etc/skel/ ("скелет" home-директории).
Удаление пользователя. Для удаления служит команда
userdel. Ей надо указать имя пользователя и ключ "-r"
(для удаления home-директории). Пример:
Изменение "свойств" пользователя. Первое, что надо
сделать после создания пользователя -- назначить ему пароль. Для этого
служит команда passwd.
Будучи запущена без параметров, она позволяет сменить пароль
запустившего ее пользователя (предварительно спросив текущий пароль):
Root же может сменить пароль любого пользователя, что и надо сделать
сразу после его создания:
Изменить shell пользователя можно командой chsh, которая
спросит полное имя shell (с директорией). В Linux и BSD-системах
пользователь может сам менять свой shell, а в ОС клона SystemV --
только супервизор. Примеры:
Пользователь не может поставить в качестве своего shell произвольную
программу -- только одну из тех, что перечислены в файле
/etc/shells.
Следует посмотреть man-страницы passwd(5), group(5), useradd(8),
userdel(8), usermod(8), groupadd(8), groupdel(8), groupmod(8),
passwd(1), chsh(1), shells(5), chfn(1).
Кроме того, много полезной информации содержится в главах 3, 5 и 6
книги "UNIX: руководство системного администратора".
Для настройки поведения многих программ служат так называемые
переменные окружения.
Символом "*" помечены те переменные, которые являются
"информационными" и которые не следует изменять.
Переменная prompt используется в Tcsh, PS1 -- в
Bash, а в Zsh PROMPT и PS1 -- это просто два имени
одной и той же переменной. Интерпретация этой переменной зависит от
используемого shell; в Zsh это строка, в которой могут
содержаться специальные %-последовательности, позволяющие вставлять в
приглашение имя компьютера, текущей директории, время и т.д.
Работа с переменными окружения в значительной степени зависит от
того, какой shell используется. В Zsh и Bash это
делается одними командами, а в Tcsh -- другими. Мы
рассмотрим команды, используемые в Zsh.
Чтобы присвоить значение переменной окружения или изменить его,
используется команда export. Пример:
Вокруг символа "=" не должно быть пробелов, а если пробелы
есть в присваиваемом значении, то его надо заключить в кавычки.
Чтобы посмотреть значение переменной, можно воспользоваться командой
echo:
Посмотреть список всех переменных можно командой export без
параметров.
Для удаления переменной окружения (это не то же самое, что
присвоение ей пустой строки!) используется unset:
Эта переменная заслуживает того, чтобы поговорить о ней особо.
Когда мы пишем команду и нажимаем <Enter>, то shell (после
проверки, не встроенная ли это команда) ищет исполняемый файл с таким
именем по всем директориям, которые перечислены в PATH.
Хотя использование PATH очень похоже на то, что есть в Dos/Windows,
имеются два важных отличия.
Во-первых, директории в списке разделяются не точками с запятыми, а
двоеточиями (это сделано потому, что ";" -- специальный символ
для shell -- разделитель команд).
Во-вторых, если в Dos PATH задает альтернативные директории
для поиска команды, когда она не найдена в текущей, то в Unix команды
ищутся только в директориях, перечисленных в PATH -- если "."
там не указана (а обычно так и есть), то в текущей директории
программа искаться не будет. Для запуска программы из текущей
директории надо явно указать путь -- например, "./myprog".
Чтобы добавить, к примеру, директорию /usr/games в конец
PATH, используется команда
Переменные DISPLAY, TERM, HOME, USER/LOGNAME, SHELL и частично PATH
устанавливаются автоматически соответствующими компонентами системы.
Остальные же переменные надо или уставлять вручную, или из стартовых
файлов shell -- как это всегда и делается.
При запуске каждый shell просматривает некоторые файлы, чтобы
считать из них свои настройки и переменные окружения, а также для
выполнения некоторых стартовых команд -- аналогично тому, что в Dos
делается в файле autoexec.bat. Эти файлы называются стартовыми
(startup files). Кроме того, практически все shell при выходе
исполняют команды из файлов завершения (shutdown files) --
обычно в них помещают команду очистки экрана.
Имена стартовых файлов а также обращение с ними зависит от
конкретного shell. Но они всегда представляют из себя обычные
командные файлы. Рассмотрим этот механизм на примере Zsh,
в котором он реализован наиболее последовательно и полно.
В Zsh есть три категории стартовых файлов.
В них следует помещать команды настройки переменных окружения. Ни в
коем случае нельзя вставлять сюда команды, выводящие что-либо на
терминал или еще как-либо с ним взаимодействующие (например,
stty)!
В эти файлы следует помещать определения функций (functions),
псевдонимов (aliases) и настроек клавиш (key bindings) -- т.е. те
настройки, что используется при интерактивной работе shell.
В эти файлы можно вставлять команды, выводящие на экран какую-либо
информацию -- например, команду who, чтобы при входе в систему
автоматически показывался список пользователей.
Все файлы идут парами -- сначала shell берет файл из
/etc/, в котором лежат общесистемные настройки, а затем -- из
home-директории, так что каждый пользователь может подправить окружение
по своему усмотрению. Если какого-либо из этих файлов нет, то никакого
сообщения об ошибке не выдается. Zsh, в отличие от Bash,
всегда просматривает оба файла -- и общесистемный, и
пользовательский.
Естественно, крайне неразумно со стороны системного администратора
вставлять какие-либо команды типа who в общесистемные
login-файлы -- ведь пользователи не смогут изменить это поведение.
При завершении работы просматриваются файлы /etc/zlogout и
~/zlogout.
Данная последовательность полностью описана в man-странице по
zsh.
Как уже отмечалось, весь Linux состоит из пакетов. В RedHat работу
с пакетами выполняет программа rpm (RedHat Package Manager),
а сами файлы, содержащие пакеты, имеют расширение .rpm.
Кроме RedHat существует еще несколько дистрибутивов Linux, использующих
rpm; самые известные -- Caldera, SuSE и KSI. Их так и
называют -- rpm-системы.
Сразу после установки системы зачастую возникает необходимость
доставить некоторые пакеты, забытые при инсталляции, или убрать лишние.
У файлов, содержащих пакеты, всегда перед расширенем .rpm
есть еще одно, обозначающее архитектуру, для которой предназначен этот
пакет.
Кроме того, само имя пакета состоит из собственно названия и версии.
Например, lynx-2.8.2-3.i386.rpm -- программа lynx,
версия 2.8.2, build 3. К сожалению, формальных правил, позволяющих
понять, где кончается имя и начинается версия, нет.
Файлы пакетов обычно расположены в одном из трех мест -- в
дистрибутиве, в разделе дополнений (updates) или в резделе
"пожертвований" (contrib). В ИЯФ для RedHat 5.2/Intel это соответственно
Пакеты с исходными кодами всегда лежат в директориях
SRPMS/, и содержат исходный код для всех архитектур.
Хотя rpm выполняет все функции работы с пакетами
(включая создание .i386.rpm из .src.rpm), сейчас рассмотрим лишь
основные действия.
Установка.
Для установки пакета используется команда rpm -i
(Install), которой указывается полное имя файла, содержащего пакет.
Пример:
Если пакет уже установлен, rpm откажется его устанавливать.
Если же это новая версия (т.е. делается не установка, а обновление), то
надо воспользоваться командой rpm -U (Upgrade); фирма
RedHat рекомендует "для красоты" использовать форму
rpm -Uvh -- при этом "прогресс" в установке показывается
индикатором из символов "#". Пример:
Если требуется установить несколько пакетов, то можно указать их все
в одной команде (через пробелы). Иногда это нужно -- например,
при обновлении программы, состоящей из нескольких пакетов (например,
Netscape), чтобы rpm не выдавал ошибок из-за зависимостей
пакетов.
Удаление.
Для удаления установленного пакета используется команда
rpm -e (Erase). Ей указывается имя пакета (можно без
версии), и без суффикса ".i386.rpm". Пример:
При удалении нескольких пакетов их также стоит указать все вместе в
одной команде, чтобы rpm не "ругался" на удаление пакета, от
которого зависит другой пакет.
Информация.
Чтобы узнать, установлен ли некий пакет, служит команда
rpm -q (Query). Ей также указывается имя пакета, а она
выдает его полное имя, если он установлен. Примеры:
Маленькие и заглавные буквы в именах пакетов различаются. Поскольку
часто не помнишь точное имя пакета (и уж тем более, какие буквы там на
каком регистре), можно воспользоваться командой rpm -qa
(Query All packages -- показать все пакеты) в сочетании с командой
grep:
В Unix, в отличие от Dos/Windows, разным разделам дисков не
присваиваются разные буквы, а все они образуют единое дерево
директорий. Процесс добавления ("приклейки") раздела в любое место
дерева называется монтированием (mounting). Разделы могут
монтироваться как автоматически при загрузке, так и во время работы
системы. "Отклейка" раздела от дерева называется
размонтированием (unmounting).
При монтировании надо указывать системе три параметра: раздел,
который надо смонтировать, директорию, в которой должен быть "виден"
этот раздел (ее называют точкой монтирования -- mount point), и тип
файловой системы. Кроме того, можно указывать дополнительные параметры
-- например то, что смонтировать следует только для чтения (readonly).
Монтировать перед использованием надо даже съемные носители -- CD и
дискеты, а перед "выемкой" -- размонтировать. Впрочем, для упрощения
работы со съемными носителями есть специальные
программы-автомонтировщики, которые автоматически монтируют диск при
обращении к нему.
Для ссылки на физический раздел всегда используется файл устройства,
расположенный в директории /dev/. В разных клонах Unix
используются разные способы именования физических разделов на дисках.
Рассмотрим тот, который используется в Linux.
Все IDE-устройства в Linux имеют имена, начинающиеся на "hd"
(Hard Drive), а SCSI-диски -- "sd" (SCSI Drive). Первый
IDE-диск называется hda, второй -- hdb, третий --
hdc и т.д.
Разделы на дисках называются так же, как и сам диск, с добавлением
числа, обозначающего номер раздела. Основные (primary) разделы имеют
номера от 1 до 4, а дополнительные (logical) -- от 5 до 16. Даже если
есть только один основной раздел, а остальные -- логические, то первый
логический раздел будет иметь номер 5, а номера 2,3,4 будут
неиспользованы.
Например, /dev/hda2 -- второй раздел первого IDE-диска;
/dev/hdd7 -- седьмой (логический) раздел четвертого IDE-диска
(slave-диск на втором IDE-контроллере).
Такая схема более удобна, чем используемая в Dos/Windows, где при
добавлении/удалении нового диска или раздела часть букв дисков
обязательно "съезжает".
Большинство современных CD-ROM для PC также подключаются к IDE.
Поскольку на компакт-дисках нет разделов, то для ссылки на CD-ROM
используется имя IDE-устройства -- чаще всего /dev/hdc.
Инсталлятор обычно распознает CD-ROM и делает в /dev/
символьный линк типа cdrom->/dev/hdc.
Для монтирования служит команда mount. Обычно используется
следующий формат:
В ключе "-t" указывается тип файловой системы.
Пример (смонтировать раздел Windows95 C: (первый раздел первого
диска)) в директорию /mnt/c):
Для указания дополнительных опций используется ключ "-o",
которому указывается список опций, разделенных запятыми (без
пробелов!).
Одна из самых часто используемых опций -- "ro", означающая
монтирование только для чтения (ReadOnly). Ее противоположность --
"rw" (Read/Write).
Чтобы при монтировании разделов Dos/Window правильно обрабатывались
имена файлов с русскими буквами, следует указывать опции
"codepage=866,iocharset=koi8-r" (означает "кодировка на диске
-- cp866, кодировка на экране и клавиатуре -- koi8-r"). Пример:
Для размонтирования используется команда umount. Ей можно
указать или имя устройства, или точку монтирования. Для приведенного
выше примера команды
Если какие-то файлы или директории из этой файловой системы
используются, то umount выдаст ошибку и ничего не сделает:
Под "использованием" директории понимается также то, что для
какого-то процесса эта директория является текущей. Например, добиться
занятости /mnt/c можно, просто выполнив в любом окне команду
cd /mnt/c.
Чтобы узнать, кто является "виновником", можно воспользоваться
командой fuser с ключом "-m" или программой
lsof.
В файле /etc/fstab (File Systems TABle) содержится
информация о файловых системах -- что надо монтировать при загрузке, а
также то, какие типы файловых систем и точки монтирования следует
использовать для определенных устройств.
Каждая строка в /etc/fstab содержит информацию об одной
файловой системе и состоит из 6 полей, разделенных пробелами. Формат
строки следующий:
Первые 4 поля мы уже рассмотрели.
В поле "dump_freq" указывается информация для программы
dump (сколь часто следует выполнять резервное копирование
данной файловой системы), при добавлении строк в fstab в нем можно
указывать 0.
Поле "fsck_passno" используется при загрузке программой
fsck (File System Check -- произносится "эфэсчек"). При
добавлении строк в fstab в нем следует указывать 2 для файловых систем
Unix (ext2) и 0 для NFS и систем msdos/vfat/ntfs и т.д.
Пример файла /etc/fstab:
Если не требуется указывать никаких опций, то надо использовать
ключевое слово "defaults", чтобы сохранять формат. Ключевое
слово "noauto" означает, что эту систему не надо автоматически
монтировать при загрузке.
Разделы для свопинга указываются в этом же файле и имеют тип
"swap". Но эти строки командой mount пропускаются.
Если файловая система указана в /etc/fstab (пусть с опцией
noauto), то при ручном монтировании команде mount достаточно
указать лишь один параметр -- или имя устройства, или точку
монтирования. Все остальное будет взято из /etc/fstab.
Следует заметить, что Linux подразумевает использование на дискетах
системы ext2, а не msdos или vfat. Так что при монтировании дискеты в
формате Dos следует использовать команду
Следует посмотреть man-страницы mount(8), umount(8),
fstab(5), fuser(1), lsof(8).
Кроме того, много полезной информации содержится в главах 4 и 9
книги "UNIX: руководство системного администратора".
Система NFS (Network File System) служит для доступа к информации,
содержащейся на дисках других компьютеров. По назначению она
аналогична системам SMB (Windows) и NCP (Novell).
У NFS есть существенное отличие от этих систем: при монтировании не
требуется указывать пароль, а авторизация осуществляется по IP-адресу и
идентификаторам пользователя и группы (UID/GID). Достоинством такого
подхода является то, что монтирование по NFS может быть осуществлено
без участия пользователя -- например, при загрузке системы.
Недостатком является невысокий уровень security -- отсюда шутливая
расшифровка аббревиатуры NFS как "No File Security".
В отличие от SMB и NCP, NFS использует протокол связи без состояния.
Это дает очень высокую устойчивость к сбоям как сети, так и другого
компьютера. В практике автора была ситуация, когда программа,
запущенная на одном компьютере и использующая по NFS файлы с другого,
при потере связи с последним просто приостановилась, а после
восстановления связи через два дня спокойно возобновила работу как ни в
чем не бывало.
Для правильной работы NFS с правами доступа к файлам требуется,
чтобы UID и GID пользователей на обоих компьютерах совпадали.
При монтировании файловой системы по NFS в качестве типа системы
надо указать "nfs", а вместо устройства -- имя компьютера и
монтируемую директорию, разделенные двоеточием. Например, чтобы
смонтировать директорию /dist с компьютера Rdist, можно
воспользоваться командой
Имя компьютера можно указывать любым образом -- короткое (rdist),
полное (rdist.inp.nsk.su), или IP-адрес (193.124.167.12).
При монтировании по NFS есть большое количество опций, описанных в
man-странице по nfs. Обычно же достаточно указать из соображений
security "-o nosuid,nodev".
Для того, чтобы дать другим компьютерам доступ по NFS к дискам своей
машины, надо отредактировать файл /etc/exports. Формат этого
файла в разных клонах Unix разный (а в SystemV и сам файл называется по
другому), поэтому рассмотрим только Linux.
Каждая строка содержит имя точки монтирования и список компьютеров,
которым разрешен доступ к ней. После имени компьютера в скобках может
указываться список опций. Пример:
Здесь компьютеру Tom разрешается доступ к /home только на
чтение, а компьютеру Jerry -- на чтение/запись.
Хотя есть несколько форматов указания компьютера, в большинстве
случаев для того, чтобы дать доступ нескольким соседним машинам,
достаточно просто указать имя.
Из опций также в большинстве случаев достаточно знать "ro" и
"rw".
Из соображений security лучше всегда придерживаться очень простого
правила: давать доступ к как можно меньшему количеству директорий, как
можно меньшему количеству компьютеров, и с как можно меньшими правами.
Чтобы после внесения изменений в /etc/exports они сразу
начали действовать, надо выполнить команду exportfs.
При монтировании систем с нескольких компьютеров становится довольно
неприятно постоянно отслеживать все изменения и вносить их в
/etc/fstab.
Кроме того, если компьютеры A и B дают друг другу доступ, то при
включении или A не сможет смонтировать системы с B, потому, что тот еще
не загрузился, или наоборот (а при большем числе компьютеров ситуация
еще хуже).
Для решения этох проблем были придуманы автомонтировщики.
При использовании такой программы нет необходимости монтировать системы
с другого компьютера при загрузке -- достаточно обратиться к директории
типа /net/компьютер/, и в ней магическим образом
появятся все директории, которые доступны с указанного компьютера.
В Linux автомонтировщик называется amd, и содержится он в
пакете am-utils (вплоть до RedHat 4.2 включительно этот пакет назывался
amd). Хотя amd умеет также автоматически монтировать съемные
носители (CD-ROM, дискеты, Zip), в основном он используется именно для
NFS.
Для использования amd достаточно установить
соответствующий пакет -- запускаться автомонтировщик будет
автоматически при загрузке системы.
Одна из самых ценных возможностей, предоставляемых автомонтированием
-- то, что при установке новых пакетов не требуется предварительно
скачивать .rpm-файлы по FTP. Можно устанавливать прямо по NFS с
сервера, беря файлы в /net/. Например, для RedHat 5.2 в ИЯФ
можно использовать путь
Следует посмотреть man-страницы nfs(5), exports(5), amd(5).
Кроме того, много полезной информации содержится в главах 4 и 9
книги "UNIX: руководство системного администратора".
Создание и удаление пользователей
Что есть пользователь в Unix
Предупреждение.
Во многих ОС информация из /etc/passwd "размазана" по
нескольким файлам (в том числе в Linux -- /etc/shadow),
поэтому просто редактировать /etc/passwd "руками"
нельзя!
Манипуляции с пользователями
Замечание.
В случае, если домашняя директория имеет вид
"/home/group/user", то директория /home/group/ должна
уже существовать -- useradd делает только саму
home-директорию, а все промежуточные директории (в данном случае
/home и /home/group) должны уже существовать.
bobby:~% passwd
Changing password for mickey
(current) UNIX password:
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully
bobby:~% _
bobby:~# passwd mickey
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully
bobby:~# _
Предупреждение.
Используя команду passwd из-под root, надо не забывать указать
имя пользователя -- иначе будет изменен пароль пользователя
"root". Это довольно распространенная ошибка.
bobby:~% chsh
Changing shell for mickey.
Password:
New shell [/bin/zsh]: /bin/bash
Shell changed.
bobby:~% _
bobby:~# chsh -s /bin/zsh mickey
Changing shell for mickey.
Shell changed.
bobby:~# _
Где еще брать информацию о работе с пользователями
Переменные окружения, стартовые файлы shell
Переменные окружения
Название Назначение PATH Пути для поиска программ -- список директорий, разделенных двоеточиями PROMPT, prompt, PS1 Вид приглашения shell DISPLAY Имя дисплея для X-программ TERM Тип терминала EDITOR Текстовый редактор, который будут использовать программы mc, vipw, crontab и т.д. вместо vi PAGER Программа просмотра текстовых файлов, которую будут использовать команды man, apropos и т.д. (в Linux man и apropos по умолчанию используют /usr/bin/less -is HOME* Домашняя директория пользователя USER*
LOGNAME* Login-имя пользователя SHELL* Имя основного shell
bobby:~% echo $DISPLAY
:0.0
bobby:~% echo $TERM
xterm
bobby:~% _
bobby:~% export VAR=abc
bobby:~% export | grep VAR
VAR=abc
bobby:~% export VAR=
bobby:~% export | grep VAR
VAR=''
bobby:~% unset VAR
bobby:~% export | grep VAR
bobby:~% _
Переменная окружения PATH
Стартовые файлы shell
Добавление и удаление пакетов в RedHat Linux: менеджер пакетов rpm
Что такое пакеты
Расширение Назначение .i386.rpm Пакет для Linux/Intel .src.rpm Исходный код пакета (никогда не устанавливайте .src.rpm -- потом не удалите!) .alpha.rpm Пакет для Linux/Alpha .sparc.rpm Пакет для Linux/Sparc (Sun) .ppc.rpm Пакет для Linux/PowerPC .noarch.rpm Пакет для всех архитектур (обычно содержит данные -- файлы конфигурации, шрифты и т.д.) ftp://rdist.inp.nsk.su/pub/Linux/redhat-5.2/i386/RedHat/RPMS/
ftp://rdist.inp.nsk.su/pub/Linux/redhat-5.2/updates/i386/
ftp://rdist.inp.nsk.su/pub/Linux/contrib/libc6/i386/
Использование rpm
bobby:~# rpm -Uvh wu-ftpd-2.4.2b18-2.1.i386.rpm
wu-ftpd ##################################################
bobby:~# _
bobby:~# rpm -q lynx
lynx-2.8.1-5
bobby:~# rpm -q seyon
package seyon is not installed
bobby:~# _
bobby:~# rpm -qa | grep -i after
AfterStep-1.5-0.7
AfterStep-APPS-1.5-0.3
bobby:~# _
Файловые системы
Дерево директорий и монтирование
Названия физических устройств
Монтирование "руками"
Название Система ext2 Основная файловая система Linux (second extended filesystem) msdos Система MS-DOS (имена 8.3) vfat Система Windows95 (включая FAT32 в ядрах 2.2) hpfs Система OS/2 ntfs Система WindowsNT (в ядрах 2.2) iso9660 Система CD-ROM -- включая стандартную ISO9660, RockRidge (9660 с расширениями Unix), Joliet (система для CD в Windows95/NT) nfs Сетевая файловая система Unix proc Специальная система ядра Unix Замечание.
Директория, в которую производится монтирование, должна существовать
-- сам ее mount не сделает.
и
сделают одно и то же.
bobby:~# umount /mnt/c
umount: /mnt/c: device is busy
bobby:~# _
Автоматическое монтирование -- /etc/fstab
#
# /etc/fstab
#
#device mountpoint filesystemtype options dump fsckorder
/dev/hda4 / ext2 defaults 1 1
/dev/hda1 /mnt/c vfat defaults 0 0
/dev/hda2 /usr ext2 defaults,ro 0 2
/dev/hda3 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext2 noauto 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0
Предупреждение.
Во многих текстовых редакторах по умолчанию включен автоматический
перенос слов (word wrap). Поскольку строки в /etc/fstab
обычно длинные, перед внесением изменений следует выключить
автоперенос. В joe для этого надо нажать <Ctrl+T> и в
появившемся меню выключить пункт Word Wrap.
.
Где еще брать информацию о работе с файловыми системами
Сетевая файловая система NFS
Что такое NFS
Монтирование по NFS
Экспорт систем по NFS
Автомонтировщик amd
это та же самая директория, которая видна как
ftp://rdist.inp.nsk.su/pub/Linux/redhat-5.2/i386/RedHat/RPMS/
(более конкретно -- /net/rdist/dist/ -- это то же самое, что
ftp://rdist.inp.nsk.su/pub/Linux/).
Где еще брать информацию о работе с NFS
Практические задания
Замечание.
Все обновленные пакеты (updates) доступны в директории
/net/class/mnt/rdist/redhat-5.2/updates/i386/.