Linux глазами хакера - Михаил Флёнов
Шрифт:
Интервал:
Закладка:
Символьная ссылка указывает не на данные, а на имя файла. Это дает некоторые преимущества, но одновременно возникает большое количество проблем. Для создания символьной ссылки нужно использовать команду ln с ключом -s. Например:
ln -s link.txt symbol.txt
Посмотрим на результат с помощью команды ls -il:
913021 -rw-r--r-- 1 root root 519 Feb 22 12:19 link.txt
913193 lrwxrwxrwx 1 root root 8 Feb 22 12:40 symbol.txt -> link.txt
Теперь дескрипторы файлов разные, но для link.txt первый символ следующей колонки равен букве "l". Как раз она и указывает на то, что мы имеем дело с символьной ссылкой. Третий параметр равен единице, а последний — после знака "->" содержит имя файла, на который указывает ссылка.
Попробуем удалить основной файл и после этого просмотреть содержимое ссылки symbol.txt:
rm link.txt
ls -il
cat symbol.txt
В первой строке мы удаляем файл link.txt. Вторая команда отображает список директорий. Убедитесь, что файла link.txt нет. Если вы используете Red Hat- дистрибутив, то команда ls, скорей всего, имеет псевдоним, который, позволяет в зависимости от типа файла отображать его различными цветами. Если нет, то замените вторую команду на ls --color=tty -il.
Строка, содержащая информацию о ссылке symbol.txt, должна быть красного цвета, а текст — мигающий белый. Это говорит о том, что ссылка "битая", т.е. указывает на несуществующий файл. Команда cat symbol.txt пытается отобразить содержимое ссылки. Так как файла нет, мы увидим сообщение об ошибке.
Самое интересное, что если попытаться записать какие-либо данные в файл symbol.txt, то файл link.txt будет автоматически создан. Это огромный недостаток, поэтому вы должны следить за символьными ссылками перед удалением файлов.
Второй недостаток символьных ссылок кроется в правах доступа, но мы их будем рассматривать в гл. 4.
Еще один минус таится в блокировках. Если открыть на редактирование файл, для которого создана символьная или жесткая ссылка, то он блокируется. Представим себе, что существует ссылка на файл /etc/passwd или /etc/shadow. При блокировке одного из них вход в систему станет невозможным.
Чтобы взломщик не смог воспользоваться блокировками, его права на запись в системные каталоги должны быть ограничены. А пользователю в большинстве случаев надо давать разрешение писать только в свою домашнюю директорию и каталог /tmp. Иногда при разделении файлов может потребоваться работа с чужими каталогами, но все равно доступ ограничивается каталогом /home, где расположены пользовательские директории.
Глядя на все недостатки ссылок, возникает вопрос — а нужно ли действительно использовать их? Я рекомендую это делать только в крайнем случае, когда все остальные способы решения проблемы еще хуже. Но если нет другого выхода, то делайте это аккуратно.
3.2. Загрузка системы
Некоторые администраторы не обращают внимания на то, как стартует система. Для них главное — только работа ОС. Да, прямой зависимости нет. Но во время загрузки ОС запускается множество программ, которые отнимают память, уменьшая тем самым производительность системы.
Помимо этого, быстрая загрузка позволяет оперативно восстановить работу компьютера после сбоя. Все машины когда-либо приходится перезагружать, чтобы возобновить полноценное функционирование. Это происходит из-за ошибок в программном обеспечении, перебоев с электропитанием и др. Чем скорее вы сможете это сделать, тем меньше будет простой.
Во время загрузки должны производиться все необходимые настройки, чтобы сразу после старта не приходилось что-то конфигурировать вручную. Это может отнять слишком много времени, к тому же выполнять одни и те же действия каждый раз — очень скучно и неинтересно.
3.2.1. Автозагрузка
Для начала вернемся к утилите setup. Запустите ее в окне терминала, и перед вами откроется окно, как на рис. 2.12. Зайдите в раздел System Services. Здесь перечислены все установленные сервисы, а напротив тех, что запускаются автоматически, в квадратных скобках будет стоять звездочка. Если вы устанавливали какой-либо демон, который вам необходим в работе, но использовать его будете изредка, то нет смысла запускать его автоматически и открывать ворота для хакера. Лучше убрать для него флаг автозапуска и стартовать только при необходимости, а сразу после работы останавливать сервис.
Например, я иногда отлаживаю на своем сервере Web-сценарии, требующие MySQL. Держать базу данных постоянно загруженной — расточительство памяти и лишняя дверь в систему. Поэтому я запускаю MySQL вручную по мере необходимости, и по окончании отладки прекращаю его работу.
Настоятельно рекомендую поступить так же и убрать все лишнее с глаз долой. Для этого стрелками выделите нужный демон и снимите галочку нажатием клавиши пробел. После того как вы настроили автозапуск, переключитесь клавишей <Tab> на пункт OK, чтобы сохранить изменения. Конечно, уже запущенные демоны не выгрузятся из памяти, но при следующем старте загружаться не будут. Перезагрузите компьютер и убедитесь в том, что система работает верно, и запускаются только необходимые демоны.
Если вы работаете в KDE или GNOME, то можно воспользоваться графической утилитой для настройки автоматически запускаемых демонов. Для этого на рабочем столе щелкните по значку Control Panel (Панель управления) и перед вами откроется окно, содержащее ссылки на основные программы конфигурирования системы. Нас будет интересовать ярлык Службы.
Эту же утилиту можно запустить и другим способом. Выберите главное меню ОС, а в нем пункт Система и, наконец, Службы (рис. 3.2). В дальнейшем, для обозначения программ, которые нужно запустить из главного меню, я буду просто писать:
Основное меню ОС/Система/Службы.
Рис. 3.2. Запуск утилиты Службы
Главное окно графической утилиты Службы представлено на рис. 3.3. В центре формы вы можете увидеть список, состоящий из двух колонок. В первом столбце располагаются флажки, а во втором — названия демонов. Если напротив сервиса стоит галочка, то служба запускается автоматически. Щелчком по флажку вы можете устанавливать и снимать галочку.
Рис. 3.3. Главное окно утилиты Службы
Выделив какую-либо службу, вы можете ее запустить, остановить или перезапустить с помощью соответствующих кнопок на панели окна или через меню Действия. Любые изменения состояния автозагрузки необходимо сохранить. Для этого нажмите кнопку Сохранить на панели или выберите меню Файл/Сохранить изменения.
Внимание!Никогда не запускайте службы, которыми вы не пользуетесь. В автозапуске должны находиться только те программы, которые необходимы вам или пользователям сервера регулярно. Если какой-либо демон используется редко, то не следует его устанавливать в автозапуск. Такие сервисы надо запускать только по мере надобности и останавливать сразу после применения. Ненужные службы лучше удалить совсем, чтобы не было соблазна использовать.
3.2.2. LILO
Как мы уже знаем, программа LILO позволяет загружать Linux и другие ОС, установленные на вашем компьютере. Все настройки загрузки хранятся в файле /etc/lilo.conf. Программа LILO начинает работать после того, как компьютер протестировал систему, и до старта ОС. В старых версиях это выглядело, как простое текстовое приглашение:
LILO
или
LILO boot:
В ответ на это вы можете нажать клавишу <Enter>, чтобы загрузить ОС по умолчанию или клавишами <↑> и <↓> выбрать ту ОС, которая нужна в данный момент. В современных версиях загрузчик имеет более приятный графический вид.
Пример конфигурационного файла можно увидеть в листинге 3.1.
Листинг 3.1. Конфигурационный файл lilo.confdisk=/dev/hda
bios=128
boot=/dev/hda
prompt
timeout=300
lba32
default=linux-2.4.18
image=/boot/vmlinuz-2.4.18-5asp
initrd=/boot/initrd.2.4.18-5asp.img
label=linux-2.4.18
root=/dev/hda2
read-only
Каждая строка устанавливает какой-либо параметр загрузки. Таких опций много, и подробно с ними вы можете познакомиться в документации, поставляемой с ОС, а мы рассмотрим только основные. Большинству параметров присваивают значения. Это выглядит так:
Параметр=3начение
Слева от знака равенства находится имя параметра, а справа — значение, которое надо установить.
Рассмотрим возможные параметры файла lilo.conf:
□ boot=/dev/hda — задает устройство, с которого происходит загрузка;