Внутреннее устройство Linux
Шрифт:
• /media. Основная точка подключения для таких съемных устройств, как флеш-накопители. Присутствует во многих версиях системы.
• /opt. Здесь может находиться дополнительное ПО сторонних разработчиков. Многие версии системы не используют каталог /opt.
2.19.2. Каталог /usr
На первый взгляд каталог /usr может показаться довольно простым, однако быстрый просмотр подкаталогов /usr/bin и /usr/lib выявляет множество подробностей.
Каталог /usr предназначен для хранения большей части команд и данных пространства пользователя. Помимо
• /include. Хранит заголовочные файлы, используемые компилятором C.
• /info. Содержит руководства GNU в формате info (см. раздел 2.13).
• /local. Здесь администраторы могут устанавливать собственное программное обеспечение. Структура этого каталога должна выглядеть подобно структуре каталогов / и /usr.
• /man. Содержит страницы руководства.
• /share. Содержит файлы, которые должны работать в других типах систем Unix без потери функциональности. В прошлом объединенные в сеть машины могли совместно использовать данный каталог, однако полноценный каталог /share становится редким, поскольку современные диски не содержат ошибок при распределении пространства. Поддержание каталога /share зачастую только добавляет проблем. В любом случае каталоги /man, /info и некоторые другие подкаталоги часто присутствуют здесь.
2.19.3. Местоположение ядра
В системе Linux ядро обычно размещается в каталогах /vmlinuz или /boot/vmlinuz. Загрузчик системы загружает этот файл в память и приводит его в действие при запуске системы (подробности о загрузчике вы найдете в главе 5).
После того как загрузчик запустит ядро и приведет его в действие, основной файл ядра больше не используется работающей системой. Тем не менее вы обнаружите множество модулей, которые ядро может по запросу загружать и выгружать во время нормального функционирования системы. Такие загружаемые модули ядра расположены в каталоге /lib/modules.
2.20. Запуск команд с правами пользователя superuser
Прежде чем продвигаться дальше, вам следует узнать о том, как запускать команды в качестве пользователя superuser. Вероятно, вы уже знаете о том, что можно запустить команду su и указать пароль для входа в корневую оболочку. Такой вариант сработает, но у него есть некоторые неудобства:
• вы не отслеживаете команды, которые изменяют систему;
• вы не отслеживаете пользователей, которые выполнили команды, изменяющие систему;
• у вас нет доступа к обычной среде оболочки;
• вы должны вводить пароль.
2.20.1. Команда sudo
В большинстве дистрибутивов применяется пакет sudo, который позволяет администраторам запускать команды в корневом режиме, зайдя в систему со своей учетной записью. Например, из главы 7 вы узнаете об использовании команды vipw для редактирования файла /etc/passwd. Это можно выполнить так:
$ sudo vipw
При таком запуске команда sudo отмечает данное действие с помощью сервиса syslog в устройстве local2. Подробности о системных журналах изложены в главе 7.
2.20.2. Файл /etc/sudoers
Система не позволит любому пользователю запускать команды в качестве пользователя superuser. Вы должны настроить права таких привилегированных пользователей в файле /etc/sudoers. Пакет sudo обладает множеством параметров (которые, вероятно, вы никогда не станете применять), вследствие чего синтаксис файла /etc/sudoers довольно сложен. Так, приведенный ниже фрагмент позволяет пользователям user1 и user2 запускать любую команду в качестве корневого пользователя, не вводя при этом пароль:
User_Alias ADMINS = user1, user2
ADMINS ALL = NOPASSWD: ALL
root ALL=(ALL) ALL
В первой строке для двух пользователей определен псевдоним ADMINS, а во второй строке им предоставляются права доступа. Фрагмент ALL = NOPASSWD: ALL означает, что пользователи с псевдонимом ADMINS могут использовать пакет sudo для выполнения команд в корневом режиме. Второе слово ALL значит «любая команда». Первое слово ALL обозначает «любой хост».
ПРИМЕЧАНИЕ
Если у вас несколько компьютеров, можно указать различные типы доступа для каждого из них или для группы машин, но мы не будем рассматривать такой вариант.
Фрагмент root ALL=(ALL) ALL означает, что пользователь superuser может также использовать пакет sudo для запуска любой команды на любом хосте. Дополнительный параметр (ALL) означает, что пользователь superuser может также запускать команды как и любой другой пользователь. Можно распространить это право на пользователей ADMINS, добавив параметр (ALL) в строку файла /etc/sudoers, как отмечено ниже символом
ADMINS ALL = (ALL)
примечание
Воспользуйтесь командой visudo для редактирования файла /etc/sudoers. Эта команда проверяет отсутствие синтаксических ошибок после сохранения файла.
Если вам необходимо использовать более продвинутые функции команды sudo, обратитесь к страницам sudoers(5) и sudo(8). Подробности механизма переключения между пользователями рассмотрены в главе 7.
2.21. Заглядывая вперед
Вы должны знать о том, как с помощью командной строки запускать команды, перенаправлять вывод, работать с файлами и каталогами, просматривать список процессов и обращаться к страницам руководства. Вы должны в общих чертах ориентироваться в пространстве пользователя системы Linux, а также уметь запускать команды в качестве пользователя superuser. Возможно, вы еще не так много узнали о внутреннем устройстве компонентов пространства пользователя или о том, что происходит в ядре, однако, получив основные представления о файлах и процессах, вы уже в пути.