четверг, 1 октября 2015 г.

Администрирование системы

Администрирование системы
Настройки групп хранятся в файле /etc/group
Пользователь может быть членом нескольких групп, но по умолчанию каждому пользователю назначается первичная (primary) группа. Данные о первичных группах пользователей хранятся в файле /etc/passwd Когда пользователь авторизуется на компьютере, он рассматривается как член первичной группы. Когда пользователь создает файлы или запускает программы, эти файлы и программы ассоциируются с первичной группой (тем не менее пользователь может получить доступ к файлам других групп, являясь членом этой группы и имея соответствующие права. не обязательно, чтобы эта группа была первичной). Чтобы запустить программу или создать файл с группой, отличной от первичной, следует выполнить команду newgrp, чтобы сменить текущее членство в группе. Также можно изменить группу, связанную с конкретным файлом командами chgrp и chown.

В линукс пользователи и группы определяются с помощью ID (UID и GID). UID и GID с 0 по 99 зарезервированы системой для внутреннего использоания. 0 соответствует root. Обычно аккаунты полльзователей начинаются с 500 или 1000. Следует избегать повторного использования ID, т.к. если файлы старого пользователя не удалены, новый пользователь может стать их владельцем. Возможно создать несколько пользователей и/или групп с одинаковым ID. Фактически это будут разные пользователи с разными паролями и домашними директориями, но в плане прав доступа к файлам система будет рассматривать их как одного пользователя (группу). Злоумышленники часто создают аккаунт с UID 0, чтобы получить права суперпользователя. Если в системе появился подозрительный аккаунт с UID 0 - система скорее всего скомпрометирована.


Утилита passwd позволяет обновить просроченный аккаунт (-k), блокировать аккаунт (-l), разблокировать аккаунт (-u), удалить пароль аккаунта (-d), показать информацию о пароле аккаунта (-S). Обычные пользователи могут использовать passwd для смены своего пароля.
Рекомендуется создавать пользоваля с помощью useradd без пароля и устанавливать пароль с помощью passwd.

Добавить пользователя: useradd <username>. Обязательным параметром является только <username>, остальные изменяют настройки по умолчанию, хранящиеся в /etc/login.defs -c комментарий (нампример телефон или полное имя), -d домашняя директория (по умолчанию /home/username), -e дата окончания действия (в указанный день учетная запись будет отключена), -p принимает ПРЕДВАРИТЕЛЬНО ЗАШИФРОВАННЫЙ пароль. Также можно устанваливать членство в группах, оболочку по умолчанию, UID, создать системную учетную запись. Useradd копирует домашнюю директорию пользователя из "скелетной" директории /etc/skel Администратор может добавлять файлы и настройки в эту директорию, чтобы изменить умолчания для всех вновь создаваемых пользователей. 


Добавить пароль: passwd -k обновить истешую учетную запись, -l заблокировать, -u разблокировать, -d удалить пароль, -S отобразить информацию об учетной записи.
Usermod - меняет настройки для уже существующей учетной записи.
Change - меняет настройки истечения срока действия учетной записи (частота смены пароля, последняяя смена пароля и т.п.)
Также настройки учетной записи можно менять редактируя файлы /etc/passwd и /etc/shadow

Если забыт пароль рута, можно загрузить компьютер с live-cd и скопировать пароль рута из поля учетной записи, для которой пароль известен, либо полностью удалить содержимое поля "пароль" для рута, после чего можно будет залогиниться с учетной записью рута без пароля.

Учетные записи линукс могут администироваться как локально, так и с использованием централизованной сетевой базы учетных записей (NIS, NIS+, LDAP, Kerberos, Windows NT 4.0 домены, Active Directory домены).

Удаление пользователя: userdel <username> Удалить также домашнюю директорию и временные файлы почты (mail spool): -r Форсировать удаление, если пользователь вошел в систему: --force Часто бывает так, что пользователь создает файлы вне своей домашней директории. Чтобы найти такие файлы, следует воспользоваться утилитой find: find / -uid <UID пользователя> Следует удалить такие файлы, либо сменить владельца, т.к. иначе владельцем может стать другой пользователь, если этот UID будет использован повторно. Некоторые серверы сохраняют собственный список пользователей (например samba), соответственно при удалении учетной записи следует вручную удалить ее из конфигурации таких серверов.

Создать группу: groupadd
Изменить свойства группы: groupmod 
Обратить внимание: добавление пользователей в группу осуществляется с помощью usermod: # usermod -G users,project1,project4 sally При использовании данной команды следует перечислять не только новые группы, но и существующие, иначе пользователь будет удален из групп которые не перечислены. Чтобы только добавить группы, не удаляя из существующих, следует использовать опцию -a

gpasswd -a добавить пользователя в группу, -d удалить пользователя из группы -R запретить добавление пользователей в группу, -r удалить пароль группы, -A добавить администраторов группы, -M добавить пользователя в и дать ему права администратора группы. Без параметров меняет пароль группы. Пароль группы позволяет контролировать времменное членство в группе (задается командой newgrp). В некоторых дистрибутивах отдельные параметры могут работать некорректно.
Настройки групп можно менять редактируюя файлы конфигурации /etc/group

Удалить группу: groupdel (использовать с осторожностью, чтобы не оставлять файлов, с владельцем из удаленной группы).

За логи в системе отвечает демон syslog. Он работает в фоновом режиме, ожидая события, которое повлечет за собой выполнение действия.
Традиционно логгер в линукс называется syslogd (пакет sysklogd). Обычно работает в паре с klogd, устанавливаемым из того же пакета. Klogd логгирует сообщения ядра. Существуют более новые альтернативы: syslog-ng, metalog, rsyslog. Файл конфигурации: /etc/syslog.conf

Записи в файле кофигурации:
facility.priority    action

хранилище (facility) - кодовое слово для типа программы или утилиты, сгенерировавшей сообщение, которое должно журналироваться
приоритет (priority) - кодовое слово, определяющее приоритет сообщения.
действие (action) - файл, удаленный компьютер или другое расположение, которое должно принять журналируемое сообщение

Cочетание кодовых слов facility и priority часто называют селектором (selector).
Возможные кодовые слова, обозначающие хранилище: uth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security, syslog, user, uucp, а также от local0 до local7. Как правило эти имена связаны с программами, например почтовые сервера используют mail. Звездочка (*) обозначает все хранилища, также можно указать несколько хранилищ через запятую. 

Возможные кодовые слова, обозначающие приоритет: debug, info, notice, warning (warn), error (err), crit, alert, emerg (panic). Error, warn и panic больше не используются, следует использовать их аналоги (err, warinig, emerg).
debug - самый большой объем информации, предназначен для отладки программ.
emerg - самые серьезные проблемы
Каждая программа добавляет к своим сообщениям метку приоритета. Если в записи настроек syslog указан, например, приоритет alert настройки в данной записи будут распространяться только на сообщения с приоритетом alert и emerge (но не сообщения с более низким приоритетом). Если использовать знак "=", например =crit эта запись будет распространяться только на сообщения с приоритетом crit. !crit - только сообщения с приоритетом ниже crit. * - сообщения с любым приоритетом. Можно указать несколько значений приоритета, разделив их точкой с запятой (;)ю

Как правило, действие это имя файла, чаще всего в /var/log Также логи можно выводить на экран (/dev/console), отправлять на удаленный компьютер (имя удаленного компьютера перед которым ставится @ (at sign): @computername)

Пример: 
mail.*    /var/log/mail - отправить все сообщения программ, относящихся к почте в файл /var/log/mail Одно и то же сообщение может обрабатываться несколькими правилами. Так, к указанному правилу добавить еще *.emerg    * то сообщения будут журналироваться в /var/log/mail а также выводиться в консоль всем зарегистрированным пользователям, вошедшим на компьютер.

Пример: журналирование сообщений ядра разными способами в зависимости от приоритета
kern.*                /var/log/kernel
kern.crit             @logger.pangaea.edu
kern.crit             /dev/console
kern.info;kern.!err   /var/log/kernel-info

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

Иногда появляется необходимость отправить сообщение системному логгеру вручную или в ходе выполнения скрипта. Для этого используется утилита logger. 

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

Конфигурация logrotate находится в /etc/logrotate.conf

Отслеживать файлы журнала в режиме реального времени можно с помощью утилиты tail с опцией -f (например: tail -f /var/log/messages)

Большинство компьютеров имеет 2 типа часов:
-Аппаратные часы работают, пока компьютер выключен
-Когда компьютер загружается, линукс считывает значение времени аппаратных часов и устанавливает его в программных часах.

Время в линукс устанавливается в формате UTC (идентично GMT - времени в Гринвиче, без поправок на летнее время), таким образом время на компьютерах с линукс в любой точке мира будет одинаковым, что необходимо для корректного функционирования сетевых протоколов. Для удобства пользователей делаются настройки часовых поясов, чтобы для пользователя время отображалось в привычном для него формате. 
Если на компьютере установлен только линукс, аппаратные часы следует установить в формате UTC. Однако если на компьютере установлены несколько ОС, следует установить на аппаратных часах местное время и сделать соответствующие настройки в линукс.

Чтобы установить время вручную: date
Синхронизировать программные и аппаратные часы, либо установить время на аппаратных часах: hwclock Большинство дистрибутивов автоматически синхронизирует программные и аппаратные часы, но в некоторых случаях это нужно сделать вручную. Также установить время на аппаратных часах можно в настройках BIOS.

Для синхронизации времени по сети используется протокол NTP. NTP создает иерархию источников времени. Вершина этой иерархии (стратум (stratum) 0) - атомные часы. К ним подключаются устройства на следующей ступеньке (стратум 2). Устройства стратум 2 передают информацию устройствам на стратум 3 и т.д.

Помимо NTP время по сети может синхронизироваться с помощью средств SMB/CIFS

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

Для более точной синхронизации NTP измеряет время, которое требуется для передачи пакетов по сети (round-trip), соответственно при выборе внешнего NTP-сервера следует выбирать сервер, с минимальной задержкой передачи пакетов.
NTP-сервем может корректировать время компьютера, на котором работает, если часы на нем спешат или отстают.
Публичные NTP-серверы: http://support.ntp.org/bin/view/Servers/WebHome
Файлы конфигурации: /etc/ntp.conf
Проверить работу ntp: ntpq -p (список серверов)
При настройке ntp-клиента следует убедиться, что к нему нельзя получить доступ как к ntp-серверу (добавить строчку restrict default ignore либо с помощью брандмауэра)
После того, как сделаны настрйоки, следует перезапустит ntp: # /etc/init.d/ntpd restart

Cron "просыпается" раз в минуту, просматривает файлы конфигурации и выполняет указанные там команды. Существует 2 типа заданий: системные (system cron job) и пользовательские (user cron job). Как правило, дистрибутивы включают системные задания, которые очищают содержимое /tmp, осуществляют ротацию логов и т.п.
Системные задания находятся в файле /etc/crontab Файл начинается с переменных среды. Далее следуют строки типа:
02 4 * * * root run-parts /etc/cron.daily
- первые пять полей обозначают время: минута (0−59), час (0−23), день месяца (1−31), месяц (1−12), день недели (0−7; 0 и 7 обозначают воскресенье). Можно использовать * (любое значение), список раздееленный запятыми (любое из перечисленных значений), два значения разделенные дефисом (-) (область значений, например с 9 до 5 часов)
Также можно использовать конструкцию такого типа: */10  (в поле минут она будет обозначать, что задание будет выполняться каждые 10 минут).
- далее следует учетная запись от имени которой будет выполняться задача и выполняемая команда. Как правило записи по умолчанию в cron используют run-parts, cron-loop или другую аналогичную утилиту, которая запускает все исполяемые файлы в указанной директории.
Многие дистрибутивы включают ежемесячные, еженедельные, ежедневные задания, расположенные в директории /etc/cron.интервал, где интервал - обозначает расписание запуска (например daily). Также такие задания могут располагаться в 
/etc/cron.d/interval 
Директории с системными заданиями cron должны иметь владельцем только рута, и только у рута должно быть право на запись, иначе рядовые пользователи могут поместить туда скрипт для получения рутовых прав.

Для создания пользовательского задания крон следует воспользоваться утилитой crontab. -u указать пользователя, задания которого изменяются.
Рекомендуется использовать опцию -u даже при изменении собственных задания. Также не рекомедуется использовать эту утилиту с su. -l отобразить текущий кронтаб, -r удалить текущий кронтаб, -e редактировать текущий кронтаб с использованием текстового редактора по умолчанию.
Также можно создать пользовательское задание в виде файла и ипортировать его в кронтаб командой типа: crontab -u tbaker my-cron (файл будет скопирован в директорю пользовательских заданий). Формат такого файла аналогичен формату системных заданий. Пользователи, которым разрешено создание заданий крон перечисляются в файле /etc/cron.allow, которым запрещен в файле /etc/cron.deny

anacron используется как дополнение к крон на системах, которые часто выключаются, например пользовательских компьютерах. Анакрон запускает задания  с определенными интервалами. Если с момента последнего запуска задания прошло больше времени, чем указано в настройках интервала, анакрон запускает задачу. Файл конфигурации: /etc/anacrontab Файл конфигурации содержит 3 типа записей: комментарии (#), переменны среды (например: SHELL=/bin/bash), и непосредственно задания. Каждая строка задания содержит 4 поля: период (period), задержка (delay), идентификатор (identifier), команда (command). Период определяет как часто выполняется задание (в днях). Задержка определяет сколько времени (в секундах) должно пройти с момента запуска анакрон до выполнения задания (может быть полезно чтобы распределить во времени выполнение задач и не прегружать компьютер при старте). Идентификатор это имя задания, которо может быть передано анакрон при запуске из командной строки. Поле "команда" может содержать как отдельную команду, так и имя скрипта, который следует выполнить.
Запускать анакрон можно стартап-скриптом, либо кроном.

Если требуется запланировать однократное выполнение задачи, можно воспользоваться утилитой at. Использование: at <время> После выполнения данной команды появится специальная строка ввода (>) в которой набираются одна или несколько команд которые нужно выполнить в указанное время. По завершении ввода команд нужно нажать Ctrl-D. По аналогии с крон доступ к at регулируется файлами /etc/at.allow и /etc/at.deny

Источник: Roderick W. Smith - LPIC study guide, 3d edtition

Комментариев нет:

Отправить комментарий