IZONE- http://www.izcity.com/- бесплатный софт, вэб-сервисы, ресурсы для раскрутки, свежие номера журнала "Internet Zone".

Пингвинье дерево

Сергей Яремчук

Для пользователя, который только перешел на Linux, первая трудность, с которой он обычно сталкивается, — это файловая система. «Где мои диски C и D?» — спрашивает пользователь перешедший из Windows, а бывший пользователь DOS долго будет вместо / ставить \. Посему хотелось бы познакомить пользователя с организацией файлов в Linux. Уверен, эта статья будет ему полезна — когда я начал изучать систему, мне катастрофически не хватало подобной информации, ее приходилось собирать буквально по крупицам.

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

В Linux'е файлы не свалены просто так, все они имеют путь в дереве каталогов. Начало этого пути обозначается просто — /. Это корень файловой системы. Вы думаете, в этом ничего особенного нет, а зря. Попробуйте перейти в корневой каталог командой cd / и дайте команду rm -r * — вы удалите ВСЕ файлы и каталоги на ВСЕХ дисках, которые имеются у вас. Страшно? А теперь попробуйте под Windows обратиться ко всем дискам сразу. Не получится — можно работать только с отдельным логическим диском. Чувствуете, какая мощь в Ваших руках?

На уровень ниже от корневого находится большая группа каталогов, каждый из них играет свою роль в системе. Сразу оговорюсь, что от дистрибутива к дистрибутиву их состав может меняться, более того, вы сами можете добавить свой каталог в любое место файловой системы (обладая при этом соответствующими правами). Вот эти каталоги:
/boot,
/bin,
/sbin,
/etc,
/lib,
/home,
/root,
/mnt,
/usr,
/var,
/dev,
/opt,
/proc,
/tmp.

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

/boot — в этом каталоге содержится ядро системы (vmlinuz - номер версии). Что здесь можно изменить? Если используете LILO при загрузке и вам надоело его загрузочное сообщение на ломаном русском, то измените текст в файле message; если же Grub — то в файле /boot/grub/messages (здесь же, в каталоге grub, находится его конфигурационный файл).

• menu.lst. Ничего менять здесь не советую (пока не разобрались), но если надоела заставка при загрузке, то в параметре splashimage пропишите путь к нужному файлу с изображением (я, например, поставил заставку Windows (файл logow.sys в каталоге Windows) — мой друг до сих пор в себя прийти не может).

Следующий каталог, /bin, является основным каталогом для общеупотребительных команд Linux. Следует заметить, что не все файлы здесь являются двоичными, встречаются также сценарии оболочки и Perl-скрипты. Когда литературы по Linux'у было мало, я присматривал какой-нибудь файл из каталога и запускал man название_файла — таким образом можно узнать, для чего какая команда предназначена.

Каталог /sbin очень похож на предыдущий, за исключением того, что что-либо менять здесь имеет право только хозяин системы, т. е. root. Здесь находятся важные системные программы: настройки сети и системы, работа с дисками и пользователями и много других программ — всем этим должен заниматься только ОДИН человек.

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

В подкаталогах cron.d, cron.daily, cron.hourly, cron.monthly, cron.weekly содержатся скрипты для демона cron — планировщика задач Linux. Его можно заставить запускать программу в определенное время, периодически, ежедневно и т. п. Также это относится к файлу crontab.

Подкаталог rc.d содержит основные стартовые скрипты, соответственно уровням запуска Linux. Это каталоги rc0.d — rc6.d, номера соответствуют уровням запуска (0 — останов (halt), 1 — однопользовательский режим, 2 — многопользовательский режим без NFS (то же, что и 3, но без поддержки сети), 3 — полностью многопользовательский, 4 — не используется, 5 — Х11 — запуск с X-Window, 6 — перезагрузка (reboot)). Каждый каталог содержит сценарии оболочки, которые либо запускают, либо останавливают те или иные службы, необходимые на каждом уровне (чаще ссылки на них), а также скрипты, инициализирующие файловую систему.

В каталоге init.d содержатся сами скрипты. Например, чтобы перезапустить какой-нибудь сервис, воспользуйтесь следующей командой: /etc/rc.d/init.d/нужный_сервис restart (под root, естественно).

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

В подкаталоге httpd живут файлы конфигурации web-сервера Apache.

Наконец, в подкаталоге X11 содержатся настройки Х-сервера Linux. В файле X86Config находится информация об основных настройках клавиатуры, мыши и разрешении монитора. Ну а в файле config подкаталога fs можно прописать пути к шрифтам под Х-Window (желательно шрифты с коi8-r прописывать первыми).

• В файле exports находится информация (для сервиса NFS) о том, какие файловые системы могут экспортироваться, каким компьютерам предоставлен доступ, а также тип и уровень доступа. Пример файла:

/home bilgates.com(ro) torvalds.org(rw)

/tmp (ro,insecure,root_squash)

В данном примере экспортируются две файловые системы. Каталог /home экспортируется только для чтения с узла bilgates.com, для чтения и записи — с узла torvalds.org. Каталог /tmp разрешается подключить к любому узлу (т. к. не указан конкретный), экспорт только для чтения, отображаются все запросы с корневого каталога удаленной машины. В общем, настроек хватает — почитайте Linux-NFS-HOWTO.

• В файле smb.conf производится настройка сервиса Samba (Session Message Block). С помощью данного сервиса происходит разделение файловых систем, а также совместное использование принтеров компьютерами с Linux и Windows.

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

Необходимое отступление: В Linux, как и во всех Unix-системах, понятия диска как такового нет. Здесь все блочные устройства (СD-rom, дисковод, жесткий диск) монтируются в файловую систему. Для этого необходимо иметь уже созданный каталог и само устройство, которое вы хотите использовать. Вот так, например, монтируется CD-ROM: mount -r -t iso9660 /dev/cdrom /mnt/cdrom (параметр -t iso9660 указывает тип файловой системы, а -r подключает файловую систему только для чтения. Если параметры уже прописаны в файле fstab, то при вызове команды их можно опустить). Теперь все файлы с вашего CD будут находиться в каталоге /mnt/cdrom.

Да, для домашнего пользователя такая система несколько неудобна. Но для сменных носителей в новых дистрибутивах уже есть опция автомонтирования (демон autofs, запускающий программу /usr/sbin/automount, с конфигурационными файлами /etc/auto.master и /etc/auto.tab). А если Вы — системный администратор в какой-нибудь фирме, то, наоборот, должны радоваться подобному обстоянию дел: информация, которая вводится в компьютер и особенно выводится, будет под Вашим полным контролем, так как монтировать все файловые системы имеет право только root. Но при такой организации есть один большой недостаток — если вы просто вынете дискету (а это касается в основном дисковода, т. к. ни CD-rom, ни ZIP вы просто не извлечете из устройства — он заблокируется), то файловая система может быть разрушена. Поэтому существует обратная команда umount c указанием либо точки подключения, либо устройства, либо типа файловой системы (-t), также можно указать параметр -а, который отключит все файловые системы.

Вот так можно размонтировать CD-rom:

Конец отступления. Переходим в наступление :-).

Формат записи файла fstab такой:

Например:

Значение большинства опций очевидно, а если какие не понятны, посмотрите документацию по fstab, т. к. объяснение займет слишком много места.

Если необходимо подключить сетевую файловую систему NFS, то имя указывается в следующем формате:

после чего указать тип файловой системы nfs; все остальное практически аналогично монтированию локальной системы.

• В следующем файле group помещена информация обо всех группах в системе. Формат следующий:

Особенность Linux — он обращает внимание на идентификатор, а не на название группы, поэтому если вы присвоите один номер двум разным группам, то это будет одна и та же группа. Удалить группу можно, просто закомментировав соответствующую строчку в файле.

Следующие файлы принадлежат группе настройки DNS (Domain Name Service). Если, кто еще не знает, эта служба обеспечивает преобразование имен узлов в IP-адреса.

• Первый файл — это файл библиотеки разрешения имен /etc/host.conf. Интересные параметры:

order hosts, bind — указывает, в каком порядке использовать механизмы разрешения имен (hosts — файл /etc/hosts, bind — сервер DNS)

nospoof on/off — если включен, то производится обратное разрешение (по IP-адресу узнается имя узла) и сверяется с входным. Предотвращает фальсификацию адреса.

trim — указывается имя домена, которое можно опустить в файле /etc/hosts.

• Второй файл, /etc/resolv.conf, — здесь указываются серверы имен DNS, локальное имя домена.

named.boot, named.hosts, named.rev, named.ca — это все файлы, откуда демон DNS named берет информацию, необходимую для работы.

Назначение файла hosts аналогично одноименному файлу в Windows: если вы хотите, чтобы узлы в Интернете загружались быстрее, зарезервируйте в нем те, что чаще всего вами посещаются. Можно также дополнительно внести короткий псевдоним узла — чтобы не нажимать лишних клавиш.

Формат следующий: IP-адрес_узла полное_имя [псевдоним]. Например, 127.0.0.1 localhost (эта строчка должна обязательно там присутствовать).

• Файл inittab — это один из файлов конфигурации начальной загрузки системы. Здесь устанавливается уровень запуска Linux, количество виртуальных терминалов. Если у вас в консоли не отображаются буквы кириллицы, то раскомментируйте четыре строки после 8bits supports в файле inputrc.

• Файл lilo.conf — конфигурационный файл загрузчика LILO.

• В файле modules.conf прописаны все загружаемые модули ядра.

• Файл motd содержит «сообщение дня», которое получит каждый пользователь после регистрации в системе.

При добавлении нового пользователя в систему информация о нем вносится в файл passwd, а пароль (в зашифрованном виде) — в файл shadow.

• В файле profile экспортируются различные переменные окружения. Что-либо изменять, не разобравшись, я не советую. Правда, в Linux'e после краха приложения образуются так называемые «корки» CORE, которые могут занимать значительное место на диске. Чтобы они не образовывались, добавьте следующие строки в файл:

В том же файле обязательно должна быть строка

• Наконец, в файле services содержатся протоколы Интернета и соответствующие им номера портов, и если какой-либо сервис не запускается (например, SWAT), то иногда достаточно просто прописать его здесь. А вообще, почитайте — интересно.

Ну вот мы, наконец, закончили обзор каталога /etc и переходим к следующему.

Каталог /lib — содержит общесистемные библиотеки, что-то вроде dll в Windows, которые загружаются в память только при необходимости.

Каталог /home включает в себя домашние каталоги пользователей, сюда пользователь попадает после регистрации в системе, при этом login (имя пользователя) совпадает с именем личного каталога. Конфигурационные файлы, находящиеся в данном каталоге, имеют преимущество перед общесистемными. Файлов много, назначение большинства из них прояснится, если открыть их в текстовом редакторе, но о некоторых из них я все же вкратце расскажу. Если в системе установлен сервер Apache, то если создать в домашнем каталоге подкаталог public_html, при определенных настройках сервера (обычно по умолчанию), к каталогу можно обратиться так:

т. е. здесь можно разместить домашнюю страницу пользователя.

• В файле .Xdefaults просматривают свои конфигурационные параметры различные программы (emacs, Xterm и т. д.), иногда, для того чтобы программа отображала кириллицу, достаточно просто указать в строке:

• В файле .bash_history содержится история команд, а в файле .bashrc вы можете прописать псевдонимы команд, чтобы не набирать их полностью (например, alias rm='rm -i' не позволит удалять файлы без предупреждения). В этом же файле можно добавить свои каталоги к переменной PATCH.

Ну, с каталогом /root все ясно — это аналог домашнего каталога для суперпользователя.

В каталоге /mnt вы найдете свой CD-ROM, дисковод, раздел FAT c Windows; одним словом, сюда монтируются все сменные накопители.

/usr — каталог для пользовательских программ со своими библиотеками (/usr/lib), исполняемыми файлами (/usr/bin), конфигурационными файлами (/usr/etc). Здесь же можно найти море документации (/usr/share/doc, /usr/share/info, /usr/share/man). В каталог /usr/X11R6/lib/X11/fonts система по умолчанию устанавливает все шрифты. Локальные установки для разных стран находятся в /usr/share/locale, а в каталоге /usr/lib/kbd — подкаталоги с консольными раскладками клавиатуры и консольными шрифтами. Наконец, в каталогах /usr/src содержится сердце Linux — ядро в исходных текстах. Подкаталог /usr/local предназначен для адаптации системы под локальные нужды пользователя.

В каталог /var поместили все изменяемые файлы системы (чтобы легче было создавать резервные копии). Здесь находятся файлы баз данных (в подкаталоге /var/lib), корневой каталог web-сервера (/var/www), подкаталог демона печати (/var/spool), подкаталог почтового сервера (/var/mail) и подкаталог, куда записываются все сообщения системы (/var/log) — при анализе данного каталога всегда можно найти причину сбоя.

Следующий каталог, /dev, содержит файлы устройств. Здесь вы найдете и свой CD-ROM (обратите внимание, /dev/cdrom — всего лишь ссылка на соответствующий диск, равно как и /dev/hdd), и файлы драйвера мыши (/dev/mouse), и так называемую «черную дыру» /dev/null, и модем (/dev/cua), и вообще все, что у вас установлено.

На что здесь можно обратить внимание? Если у вас под обычным пользователем не работает какое либо устройство, а под root'ом работает, то следует определить для себя, любимого, доступ к исполнению (командой chmod a+rw или через mc 'файл->права доступа'). Например, такое очень часто бывает со звуком (/dev/mixer, /dev/audio, /dev/dsp и т. д.).

Каталог /opt предназначен для компонентов, которые устанавливаются опционально. У меня, например, там одиноко томится OpenOffice.

Ну а каталога /proc на самом деле не существует (на жестком диске) — это виртуальная файловая система для чтения информации о процессах. Попробуйте команду cat /proc/meminfo (iomem, ioports, interrupts) — и вы все поймете.

Назначение каталога /tmp аналогично таковому в OS Windows — для хранения временных файлов, создаваемых программами по ходу выполняемых процессов.

Вот мы с вами и пробежались галопом по всему дереву каталогов. Конечно, дистрибутив на дистрибутив бывает не похож, но основные каталоги будут всегда там, где вы ожидаете их найти. Если какой-либо файл будет перенесен в другое место, то все равно на старом месте (как правило) будет ссылка на него, для совместимости. В чем преимущества такой организации? А в том, что пользователи видят дерево каталогов как единую структуру, хотя различные каталоги этого дерева могут находиться на разных дисках, или, более того, на разных компьютерах в сети. Да и зачем обычному пользователю знать такие мелочи — он должен найти файлы именно там, где они и должны находиться (ведь система, напоминаю, МНОГОпользовательская), и никакая реорганизация не должна помешать ему в этом. Я, конечно, не смог вам рассказать о всех файлах в Linux'е: просто физически это сделать невозможно (да и вряд ли кто-то захочет), настолько их много. Назначение большинства проясняется, если открыть их в каком-нибудь текстовом редакторе; настраиваемые в файле параметры иногда бывают понятны из комментариев некоторые (для того чтобы их включить, достаточно просто раскомментировать (представьте себе в Windows надпись: «Для того чтобы Ваша система могла работать с сетью, раскомментируйте, пожалуйста, следующие строки в реестре». Что, трудно? У меня, признаться, тоже не хватает фантазии). Назначение многих файлов также можно узнать из встроенной справочной информации (man, info, apropos). Остается только пожелать вам удачи, и… Linux forever!

Источник: http://www.mycomp.com.ua/

 


Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com