Product SiteDocumentation Site

8.9. Другие настройки: Синхронизация времени, Журналы, Разделение Доступа…

Многие элементы, перечисленные в данной главе, полезно знать тем, кто хочет освоить все стороны настройки систем GNU/Linux. Однако, они описаны кратко, а за подробной информацией рекомендуется обратиться к документации.

8.9.1. Timezone (Часовой пояс)

Часовой пояс определяется в процессе установки дистибутива на машину, входит в пакет tzdata. При возникновении необходимости изменить часовой пояс запустите команду dpkg-reconfigure tzdata. Ответив на несколько вопросов в интерактивном режиме, программа установит новый часовой пояс на вашей машине, который будет использоваться в дальнейшем. Эти настройки сохраняются в файле /etc/timezone. Кроме этого будет скопирован соответствующий файл из каталога /usr/share/zoneinfo в /etc/localtime. Он содержит правила, каким образом переводится время на летний (зимний) период в той или иной стране, для стран, использующих такой порядок (в Debian 9.2 создана мягкая ссылка).
Если вам понадобится временно изменить часовой пояс, используйте переменную окружения TZ, которая будет иметь приоритет над настройками окружения, которые обычно используются "по умолчанию":
$ date
Thu Feb 19 11:25:18 CET 2015
$ TZ="Pacific/Honolulu" date
Thu Feb 19 00:25:21  HST 2015

8.9.2. Синхронизация Времени

Синхронизация времени может показаться излишней для отдельно взятого компьютера, однако её выполнение крайне важно для локальных сетей. Чтобы не происходила путаница, простым пользователям запрещено изменять время и дату. В локальной сети, где регулярно выполняется синхронизация времени всех компьютеров в системе, делать перекрёстный анализ информации из журналов событий, полученных с разных машин в сети, гораздо удобнее. К тому же, в случае нападения на сеть извне, можно будет быстро реконструировать хронологическую цепочку событий, предшествующую этому: определить какие машины и в какое время подвергались атаке и, как следствие этого, они могли быть скомпрометированы. Собираемые с разных машин в сети данные для статистических целей, не имеют большого смысла, если все эти машины не синхронизированы между собой по времени.

8.9.2.1. Для Рабочих Станций

Поскольку рабочие станции регулярно перезагружаются (или выключаются иногда даже, только для сохранения электричества), то синхронизации их по NTP в момент загрузки бывает обычно достаточно. Для этого надо просто установить пакет ntpdate. Можно также изменить NTP сервер, который будет использоваться, отредактировав файл /etc/default/ntpdate.

8.9.2.2. Для Серверов

Сервера крайне редко перезагружаются, поэтому очень важно, чтобы их системное время всегда было корректно установлено. Чтобы постоянно поддерживать правильное время, установите локальный NTP сервер. Данная возможность включена в пакет ntp. В настройках по умолчанию сервер, с одной стороны, будет синхронизироваться с внешним публичным сервером pool.ntp.org и, с другой стороны, будет предоставлять данные о дате и времени в ответ на запросы, поступающие из локальной сети. Вы можете редактировать файл /etc/ntp.conf, изменив в нем NTP сервер, который будет использоваться для синхронизации (наиболее часто изменяемая опция). Если в сети много серверов, то вас может заинтересовать вариант с локальным сервером времени, синхронизирующимся с публичным сервером. Он же будет использоваться в качестве источника для других серверов сети.

8.9.3. Смена Журналов Событий

Так как со временем журналы событий могут увеличиваться, иногда очень быстро, возникает необходимость архивирования их время от времени. Наиболее распространённой схемой является чередование архивов: журнал событий регулярно архивируется, и только последний X архив сохраняется. Программа logrotate является инициатором этих чередований, она руководствуется правилами, прописанными в: файле /etc/logrotate.conf и во всех файлах, расположенных в каталоге /etc/logrotate.d/. Администратор может модифицировать эти файлы, если желает приспособить политику чередования событий, определённую в Debian, к своим нуждам. Страница руководства logrotate(1) описывает все параметры, доступные в тех конфигурационных файлах. Возможно вы захотите: увеличить количество файлов, сохраняемых при чередовании журналов событий, или переместить журналы событий в особенный каталог, предназначенный для их архивирования (предпочтитая не удалять старые журналы). Вы можете также послать их по e-mail для архивирования где-нибудь в другом месте.
Программа logrotate выполняется ежедневно, её запуск выполняет планировщик задач cron (смотри раздел Раздел 9.7, «Планирование задач с помощью cron и atd»).

8.9.4. Разделение Прав Администратора (делегирование части полномочий другому пользователю или старшему администратору)

Часто несколько администраторов работают в одной и той же сети. Первый самый простой способ для обеспечения возможности им совместно работать - вариант, при котором все администраторы имеют право работать в этой сети под одним и тем же паролем администратора. Такое решение не является наилучшим, та как открывает лазейки для выполнения кем-то из них недопустимых действий, а из-за анонимности - избежать ответственности в дальнейшем. Решением данной проблемы является программа sudo, которая позволяет определённым пользователям выполнять оговоренные команды со специальными правами. В наиболее распространённом случае её использования (применяемом часто из-за простоты а не из-за того, что это наилучшее решение), sudo позволяет доверить пользователю выполнение любой команды от лица администратора. Для этого пользователь просто выполняет sudo command и для проверки подлинности использует свой персональный пароль (при этом, что очень важно, все действия такого пользователя записываются в специальный журнал событий и в дальнейшем можно легко отследить кто и что сделал).
После установки пакета sudo, во вновь созданную Unix группу sudo будут добавлены новые участники - пользователи, которым разрешается работать с полными правами администратора. Для перераспределения других прав (делегирование полномочий) администратор должен использовать команду visudo, которая позволит ему модифицировать файлы настройки /etc/sudoers (в данном примере "visudo" - это запуск текстового редактора vi с правами "sudo" для редактирования упомянутого файла. Вы можете использовать свой редактор, тот, что установлен у вас как переменная окружения EDITOR). Добавление строки username ALL=(ALL) ALL позволит пользователю, о котором идёт речь, выполнить любую команду как администратор.
Более тонкие настройки дают возможность наделить определёнными полномочиями оговоренных пользователей, то есть уполномочить их на выполнение тех или иных действий, не давая им при этом полных прав администратора, даже под "sudo". Детальную информацию вы можете получить на страницах руководства sudoers(5).

8.9.5. Список Точек Монтирования

В файле /etc/fstab перечислены все возможные варианты монтирования (разрешённые администратором на данной системе): которые выполняются автоматически при загрузке системы и позволенные опции для монтирования в дальнейшем вручную для съёмных запоминающих устройств (например CDROM). Каждой точке монтирования выделена одна строка. Она содержит несколько полей, используя в качестве разделителей пробелы:
  • устройство для монтирования: это может быть локальный раздел (жёсткого диска, CD-ROM) или удалённая файловая система (такая как NFS).
    Это поле часто заменяется записью с указанием уникального ID файловой системы (который вы можете определить выполнив команду blkid device), введя в качестве префикса UUID= (то есть вы указываете что нужно смонтировать не в привычном нам виде, как например "/dev/sdc1", а в виде "mount UUID=8e9cb4e1-5aa0-4340-b43e-a489741299fa1 /mnt/point"). Такой подход предотвращает возникновение путаницы с присвоением имён подсоединяемым устройствам (поскольку ядро нумерует все присоединяемые физически к компьютеру устройства по мере их подключения. К примеру ранее опознанное устройство как sdc1 через два-три дня может быть опознано как sdf1, смотрите "dmesg"). Чтобы этого избежать и рекомендуется при монтировании указывать ID устройства в явной, то есть конкретной форме (UUID=8e9cb4e1-5aa0-4340-b43e-a489741299fa1) Таким образом это ID устройство будет одно и то же и через день и через месяц.
  • точка монтирования: это точка (местоположение в вашей системе каталогов), в которую будет присоединено (примонтировано) устройство, удалённая система, раздел диска и т.д.
  • тип: это поле описывает, какая файловая система используется на монтируемом устройстве. К примеру: ext4, ext3, vfat, ntfs, btrfs, xfs и другие.
    С полным перечнем, известных программе "mount (unmount)" файловых систем, можно ознакомиться в руководстве mount(8). Специальный тип файловой системы swap предназначен для раздела подкачки (виртуальная память); специальный параметр auto сообщит программе mount, что ей нужно попытаться самой автоматически определить тип файловой системы (данная опция особенно полезна при использовании различных приспособлений, в которые всталяются диски и USB-устройства, так как каждое из них может иметь свою собственную файловую систему);
  • параметры: их имеется много, все они разные и зависят от особенностей той или иной файловой системы, для более детальной информации читаете руководства в mount. Наиболее известные из них
    • rw или ro - эти параметры сообщают программе с какими правами доступа надо смотрировать устройство: в режиме "чтения-записи" ("rw" - read/write) или в режиме "только для чтения" ("ro" - read only).
    • noauto - отключает автоматическое монтирование устройства в процессе выполнения загрузки системы (в нижерасположенном примере можно заменить scd0 на sr0 для CDROM/DVD, если dmesg таким образом опознаёт его).
    • nofail - позволит выполнять далее загрузку, несмотря на то, что какое-то внешнее устройство не представлено в настоящий момент в системе. Убедитесь, что включили этот параметр именно для того дополнительного устройства, которое, так может случиться, будет отсоединено физически от компьютера в момент загрузки системы. Команда systemd действительно гарантирует то, что всё, что должно было быть смонтировано в системе, будет сделано своевременно, присвоив им до этого наименования, и далее процесс загрузки нормально дойдёт до конца. Обратите внимание, что вы можете скомбинировать этот параметр с x-systemd.device-timeout=5s, чтобы сказать systemd не ожидать более чем 5 сек появления внешнего устройства в системе (смотрите руководство systemd.mount(5)).
    • user - разрешает всем пользователям монтировать эту файловую систему (а например записанное в этом поле "root" - напротив позволяет делать это только администратору).
    • defaults - значит применить группу параметров по умолчанию, включающих в себя: rw, suid, dev, exec, auto, nouser и async. Каждый из них может быть отлючён индивидуально добавлением после defaults следующих записей - nosuid, nodev, которые исключат тот или иной параметр из группы по умолчанию (в данном примере исключаются suid, dev). При добавлении после "defaults" слова user будет выполнено противоположное по смыслу действие - то есть отключение "группы параметров по умолчанию", поскольку defaults сам в своём перечне уже включает nouser.
  • backup: это поле почти всегда имеет значение 0. Если здесь установлена 1, то таким образом инструменту dump сообщается о том, что это раздел содержит данные, которые в дальнейшем должны быть подвергнуты процедуре резервного копирования (то есть это "source").
  • правило проверки: это последнее поле показывает - необходимо ли делать проверку файловых систем на предмет целостности в момент загрузки системы, и в каком порядке эта проверка должна быть выполнена. Если здесь установлено значение 0 - то это значит не проводить проверку. Для корневой файловой системы здесь должна быть установлена 1, а для других постоянных файловых систем здесь будет значение 2.

Пример 8.5. Пример файла /etc/fstab

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# / was on /dev/sda1 during installation
UUID=c964222e-6af1-4985-be04-19d7c764d0a7 / ext3 errors=remount-ro 0 1
#  swap was on /dev/sda5 during installation
UUID=ee880013-0f63-4251-b5c6-b771f53bd90e none swap sw  0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto 0       0
/dev/fd0        /media/floppy   auto    rw,user,noauto  0       0
arrakis:/shared /shared         nfs     defaults        0       0
В нижерасположенном примере последней записью подключается каталог сетевой файловой системы (NFS): каталог /shared/, размещённый физически на сервере arrakis будет присоединён в точку монтирования /shared/ на локальной машине. Формат файла /etc/fstab задокументирован в руководстве fstab(5).

8.9.6. locate и updatedb

Команда locate может найти месторасположение файла даже если вы знаете только часть его имени. Она выдаёт результат почти мгновенно, сначала лишь проконсультировавшись с базой данных, которая сохраняет месторасположение всех файлов, имеющихся в системе. Эта база данных обновляется ежедневно командой updatedb. Существует несколько разновидностей (вариантов) команды locate. Для включения в стандартную систему Debian выбрана её разновидность, называемая mlocate (входит в пакет с похожим именем).
Команда mlocate достаточно умна - при выдаче результата она учитывает права доступа и выдаёт лишь те файлы, что доступны запустившему её пользователю. несмотря на то, что она знает про все файлы, имеющиеся в системе (поскольку реализация этой программы updatedb запускается с правами администратора). Для дополнительной безопасности администратор может использовать PRUNEDPATHS в файле /etc/updatedb.conf для исключения из индексирования некоторых каталогов.