summaryrefslogtreecommitdiff
path: root/LINUX/__FLENOV.md
diff options
context:
space:
mode:
authorvlapa <vlapa@ya.ru>2026-06-13 20:33:26 +0300
committervlapa <vlapa@ya.ru>2026-06-13 20:33:26 +0300
commite5abc1fe99340b979b18864d978179f71fe8f5c5 (patch)
tree98fd0ad7c6d0744894d6e74e446daacd9e6dd1b5 /LINUX/__FLENOV.md
First
Diffstat (limited to 'LINUX/__FLENOV.md')
-rw-r--r--LINUX/__FLENOV.md1582
1 files changed, 1582 insertions, 0 deletions
diff --git a/LINUX/__FLENOV.md b/LINUX/__FLENOV.md
new file mode 100644
index 0000000..9940655
--- /dev/null
+++ b/LINUX/__FLENOV.md
@@ -0,0 +1,1582 @@
+#==========================================
+**/ - основной раздел
+/bin - основные исполняемые файлы системы
+/boot - файлы необходимые для загрузки системы
+/dev - представления для подключенных устройств
+/etc - конфигурационные системные файлы
+/home - пользовательские папки и файлы (лучше выносить на другой физический диск!)
+/lib - библиотеки ядра ОС
+/opt - дополнительные програмные пакеты
+/proc - раздел для монтирования виртуальной файловой системы
+/sbin - исполняемые файлы ROOTa
+/tmp - временные файлы
+/usr - системные файлы
+/var - журналы, буферные или заблокированные файлы (лучше выносить на другой физический диск!)
+Swap - раздел подкачки
+
+Если /home и /var вынесены на отдельные диски, то для корневого каталога хватит 3Gb, но можно и больше.
+
+#==================================
+
+`sudo apt update
+
+Собрать зависимости:
+`sudo apt build-dep имя_программы
+
+Если вы не хотите реально устанавливать пакеты, а только посмотреть, что будет
+устанавливаться, го можно использовать ключ -s (simulate, симулировать установку):
+`sudo apt-get -s install me
+
+Для проверки зависимостей нужно выполнить команду:
+`sudo apt-get check
+
+Если нужно исправить зависимости:
+`sudo apt-get -f install
+
+Если нужно исправить зависимости:
+`sudo apt-get -f install
+
+Для удаления программы или пакета используем:
+`sudo apt remove имя_программы
+
+Если какая-то программа была удалена, но остались зависимости, то можно авто­
+матически удалить все лишнее:
+`sudo apt-get autoremove
+
+Для установки обновлений уже установленных программ выполняем следующую
+команду:
+`sudo apt-get upgrade
+
+Чтобы обновить саму ОС, выполняем команду:
+`sudo apt-get dist-upgrade
+
+Следующую тройку команд желательно выполнять регулярно для установки об­
+новлений:
+`sudo apt-get update
+`sudo apt-get upgrade
+`sudo apt-get dist-upgrade
+
+Все эти команды позволят вам содержать вашу копию релиза Ubuntu и установлен­
+ных программ в обновленном состоянии, но на новый релиз автоматически вы так
+не перейдете.
+Если вышел новый релиз, а не просто обновление существующего, то
+на него можно перейти командой:
+`sudo do-release-upgrade
+
+Чтобы узнать, какие вообще в системе уже установлены пакеты, можно выполнить
+следующую команду
+`sudo apt list —installed
+
+*which* - определить где находится программа:
+`which ls`
+
+#==========================================
+### GRUB2
+
+В Linux сейчас самым популярным загрузчиком является GRUB2. Конфигурация
+этой программы чаще всего содержится в файле
+`/boot/grub/grub.cfg`
+но можно встре­тить дистрибутивы, где этот путь выглядит так:
+`/boot/grub2/grub.cfg.
+В файле загруз­чика записаны настройки, определяющие, нужно ли показывать меню выбора вари­анта загрузки, и каким должно быть это меню, а также указываются сами варианты
+загрузки и предписывается, какую версию ядра следует загрузить (мы уже говори­
+ли, что в Linux может быть более одного ядра).
+После этого может формироваться `initrd` — виртуальный диск в оперативной памя­
+ти (ramdisk) для временной файловой системы, используемой ядром Linux при на­
+чальной загрузке. Дело в том, что если ядро скомпилировано в минимальном вари­
+анте и все его возможности подключаются в дальнейшем с помощью модулей, то
+в этот момент у ядра не будет возможности работать со специфичными жесткими
+дисками, и оно не сможет загружать дальнейшие данные. Поэтому сначала грузит­
+ся диск /boot/initrd.xxxx, который загружает критически важные модули, и, если я не
+ошибаюсь, именно он и загружает красивую картинку, которую показывает ОС во
+время старта системы.
+Теперь у ядра есть все необходимое для загрузки самой системы. Появляется кра­
+сивая картинка, которая прячет выводимый в консоль лог дальнейшей загрузки,
+и управление передается программе /sbin/init.
+Программа init загружает файл /etc/inittab — конфигурационный файл, в котором
+прописан процесс инициализации ОС Linux, и выполняет все предусмотренные
+в нем операции.
+
+#==========================================
+### Работа с модулями ядра
+
+Система должна загружаться только с теми модулями, которые применяются. Все
+остальные следует подгружать по мере необходимости и отключать, когда они не
+используются.
+модули ядра — это немного другое. Они выполняются на более низком уровне, который в основ­ном позволяет работать с устройствами, управлять памятью и т. п. При модульной
+компиляции вы можете включать и выключать функции уровня ядра с помощью
+следующих команд:
+`lsmod` — эта команда выведет список загруженных модулей.
+`modinfo` — очень трудно разобраться, какие модули нужны в системе, а какие
+нет. А ведь необходимо загружать только то, что действительно используется,
+иначе увеличивается время старта системы, понапрасну расходуются ресурсы
+компьютера и т. д. Так как же в этом разобраться? Необходимо знать каждый
+модуль «в лицо» и понимать, для чего он нужен.
+Получить информацию о модуле и помогает команда modinfo. В качестве пара­
+метра нужно передать ей имя интересующего модуля, и на экран будет выведена
+информация о нем. Например, следующая команда запрашивает у системы ин­
+формацию о модуле ext3:
+`modinfo ext3
+
+В ответ на это мы увидим примерно следующее:
+filename:
+/lib/modules/2.4.18-5asp/kernel/fs/ext3/ext3.о
+description: "Second Extended Filesystem with journaling extensions"
+author:
+"Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger,
+Theodore Ts’o and others"
+license:
+"GPL"
+parm:
+do_sync_supers int, description "Write superblocks
+synchronously"
+
+Таким образом, нам становятся известными имя и расположение файла, его опи­
+сание, автор, лицензия и т. д. Количество отображаемой информации сильно
+зависит от модуля, и, если честно, в некоторых случаях она настолько скудна,
+что предназначение модуля остается непонятным;
+`modprobe` — эта команда в основном используется системой для загрузки уста­
+новленных модулей, но можно это делать и самостоятельно. В качестве един­
+ственного параметра нужно передать команде имя модуля, который надо за­
+грузить.
+Например, следующая команда загружает модуль `iptabie_nat`
+`modprobe iptable_nat
+`rmmod` — эта команда выгружает модуль, имя которого указано в качестве пара­
+метра. Если вы воспользовались модулем для выполнения определенных дейст­
+вий, то не забудьте по окончании работы его выгрузить.
+
+#==========================================
+### Переменная $РАТН
+
+`echo $РАТН
+В результате вы должны увидеть список папок, разделенных двоеточиями:
+`/usr/local/bin:/bin:/usr/bin
+Соответственно, когда мы отдаем в командной строке команду is, то система нахо­
+дит ее исполняемый файл в каталоге `/bin` и запускает его.
+При запуске программ из командной строки Linux нужно обязательно указывать **./**
+перед именем программы или скрипта. Например, допустим, что в текущем катало­
+ге есть исполняемый файл publish — тогда для его запуска нужно в консоли выпол­
+нить следующую команду:
+./publish
+В Windows и в Linux точка указывает на текущий каталог, а, значит, приведенная
+команда просит запустить publish именно из текущего каталога. Впрочем, в Windows при запуске программ из текущего каталога можно ничего не указывать, по­
+тому что эта ОС сначала ищет файлы в текущей папке, а потом уже в системных.
+Но из-за этого у Windows были проблемы с безопасностью.
+ОС Linux ведет себя немного иначе, и из текущего каталога по умолчанию ничего
+не запускает, а ищет в папках, указанных в переменной $PATH
+Linux можно заставить «смотреть» и в текущую папку — просто для этого точку
+нужно добавить в переменную $PATH:
+`PATH = $РАТН:.
+Не уверен, что в реальности делать что-то подобное — хорошая идея. Но я привел
+этот пример, для того чтобы показать, как добавлять папку к переменной $PATH.
+Если у вас есть программа `/usr/local/myprogram/publish` и вы не хотите при каждом
+запуске писать этот полный путь, то можно добавить путь /usr/local/myprogram/
+в переменную $PATH:
+`РАТН=$РАТН:/usr/local/myprogram/
+Смысл этой команды в том, что мы присваиваем переменной новое значение, кото­
+рое состоит из уже существующего, плюс двоеточие и новая папка. Если просто
+написать:
+PATH=/usr/local/myprogram/
+то текущее значение $PATH будет потеряно, и теперь $PATH станет равна лишь
+/usr/local/myprogram/.
+
+#==========================================
+### Права на файлы и папки
+
+Права можно задавать и последовательностью нулей и единиц. Если в определен­
+ном месте стоит 1 (указан один из символов г, w или х), то операция разрешена, а
+если 0 (указан дефис) — действие запрещено. Давайте попробуем записать права
+rwxr-xr— в виде нулей и единиц. Запишите вместо букв единицы, а вместо дефи­
+сов — нули. Должно получиться 111101100. Разобьем эту комбинацию на три час­
+ти: 111, 101 и 100. Теперь каждую тройку переведем в восьмеричную систему по
+следующей формуле:
+
+Цифра1 ★ 4 + Цифра2 ★ 2 + ЦифраЗ
+
+У нас получатся три цифры: 7, 5 и 4, которые можно рассматривать как десятичное
+число 754. Запомните его, оно нам пригодится при назначении прав на файлы и ка­
+талоги. Чтобы вам в дальнейшем было проще регламентировать доступ, предлагаю
+все возможные варианты значений для отдельного разряда числа:
+□ О — запрещено все;
+□ 1 — разрешено выполнение;
+П 2 — разрешена запись;
+□ 3 — разрешены запись и выполнение;
+□ 4 — разрешено чтение;
+□ 5 — разрешены чтение и выполнение;
+□ 6 — разрешены чтение и запись;
+□ 7 — разрешено все.
+
+#### chmod
+chmod параметры права файл
+Компонент параметры может включать комбинацию следующих значений:
+□ и — изменить права владельца;
+□ g — изменить права группы;
+□ о — изменить права остальных пользователей;
+□ а — изменить все права (то же самое, что передать значение: ugo).
+
+**Внимание!
+Если вы решили использовать символьные ссылки, то всегда помните особенность
+формирования прав доступа на файлы. Можете даже выбить на мониторе надпись:
+«Ссылки на файлы создаются с полными правами!!!»
+
+#==========================================
+### Редактирование пользователя
+
+Для редактирования параметров учетной записи можно напрямую корректировать
+файл /etc/passwd, но я советую использовать команду `usermod`. У нее такие же клю­
+чи, что и у `useradd`, но она не создает пользователя, а изменяет параметры уже су­
+ществующего.
+С помощью `usermod` вы можете добавлять уже имеющегося пользователя в ранее
+созданную группу. Давайте проделаем такую процедуру с учетной записью robert и
+определим ее в группу root. Это позволит пользователю robert выполнять некото­
+рые административные функции:
+
+`usermod -G root robert
+
+Здесь мы выполняем команду с ключом -G. Этот ключ позволяет указать, членом
+каких групп должен быть пользователь. Можно указать несколько групп, разделен­
+ных запятыми. В нашем случае мы добавляем пользователя только в одну группу
+root. Для получения более подробной информации о команде `usermod` выполните
+команду:
+
+`man usermod
+
+### Удаление пользователя
+
+Для удаления пользователя служит команда `userdel`. В качестве параметра ей пере­
+дается только имя учетной записи, которую надо удалить, и можно распрощаться
+с ней навсегда. Например:
+
+`userdel Denver
+
+Если пользователь в этот момент находится в системе, будет выдано сообщение об
+ошибке.
+Необходимо учитывать, что удаление пользователя не уничтожает его домашний
+каталог — вы должны сделать это вручную. Если же указать в команде ключ -г, то
+вместе с пользователем будут удалены и его файлы в домашнем каталоге:
+
+`userdei -г Denver
+
+**Совет
+Никогда не указывайте этот ключ. Выполняйте операцию только вручную, просмотрев
+содержимое каталога и убедившись, что там нет нужных файлов.
+
+#==========================================
+### Порты / протоколы
+
+HTTP 80
+HTTPS 443
+SMTP 25
+SMTPS 465
+LDAP 329
+LDAPS 636
+TELNET 23
+TELNETS 992
+SHELL 514
+SSH 22
+FTP 21
+FTPS 990
+FTP-DATA 20
+FTPS-DATA 989
+IMAP 143
+IMAPS 993
+POP3 110
+POP3S 995
+IRC 194
+IRCS 994
+
+#==========================================
+### Шифрование файлов
+
+В качестве примера зашифруем список паролей `/etc/passwd` в файл `/home/passwd` по
+алгоритму DES. Для этого выполним команду:
+
+`/usr/bin/openssl des -in /etc/passwd -out /home/passwd
+
+В ответ на эту директиву программа попросит вас указать пароль и затем повторить
+его ввод, чтобы исключить возможные ошибки.
+Выполните команду: `cat /home/passwd` и убедитесь в том, что содержимое этого
+файла нечитаемо.
+
+Для расшифровки файла выполните команду:
+
+`/usr/bin/openssl des -d -in /home/passwd -out /etc/passwd
+
+Таким нехитрым способом мы можем безопасно хранить копию файла с паролями.
+
+#==========================================
+### Основные параметры конфигурации сервера SSH
+
+```sh
+#Port 22
+#Protocol 2,1
+#ListenAddress 0.0.0.0
+#ListenAddress : :
+# HostKey for protocol version 1
+# Ключ для первой версии протокола
+#HostKey /etc/ssh/ssh_host_key
+# HostKeys for protocol version 2
+# Ключи для второй версии протокола
+#HostKey /etc/ssh/ssh_host_rsa_key
+#HostKey /etc/ssh/ssh_host_dsa_key
+# Lifetime and size of ephemeral version 1 server key
+# Время жизни и размер регенерируемого серверного ключа версии 1
+#KeyRegenerationInterval 3600
+#ServerKeyBits 768
+# Logging
+# Ведение логов
+#obsoletes QuietMode and FascistLogging
+#SyslogFacility AUTH
+SyslogFacility AUTHPRIV
+#LogLevel INFO
+```
+Рассмотрим основные параметры, которые вам могут пригодиться:
+□ Port — порт, на котором ожидаются подключения. По умолчанию — 22. Неко­
+торые администраторы любят изменять значение по умолчанию, перенося сер­
+вер на другой порт. В какой-то степени это оправданно. Например, если у вас
+нет веб-сервера, то можно поместить SSH на порт 80. Хакеры будут думать, что
+это веб-сервер, и не станут его ломать;
+□ Protocol — поддерживаемые протоколы. Обратите внимание, что первым идет
+число 2, а затем 1. Это значит, что сервер будет сначала пытаться подключиться
+по второй версии протокола, и только затем по первой. Я рекомендую убрать
+знак комментария с этой строки и удалить число 1, чтобы использовалась только
+последняя версия. Уже давно пора обновить клиентское программное обеспече­
+ние и перейти на более безопасные технологии. Зацикливание на старых про­
+граммах приносит только убытки;
+□ ListenAddress — адрес для прослушивания подключения. У вашего сервера мо­
+жет быть несколько сетевых карт. По умолчанию идет прослушивание всех ин­
+терфейсов. Вы должны указать только те, с которых будете подключаться по
+SSH. Например, очень часто одна сетевая карта смотрит во внутреннюю сеть, а
+другая — в Интернет. Если вы будете подключаться по SSH-протоколу лишь из
+внутренней сети, то следует прослушивать только этот адрес (задается в формате
+адрес:порт). Разрешается включать несколько таких записей, чтобы указать тре­
+буемые интерфейсы;
+□ HostKey — путь к файлам, содержащим ключи шифрования. Нужно прописывать
+только закрытые ключи, которые использует сервер для расшифровки пакетов;
+□ KeyRegenerationintervai — интервал времени, через который сервер обновляет
+ключи. В версии 1 во время сессии ключи могут регенерироваться. Это позволяет сделать невозможным раскрытие пакетов за счет смены ключей, которые по
+умолчанию меняются каждые 3600 секунд. Если установить 0, то регенерации
+не будет. Так как мы отказались от первой версии протокола (см. параметр
+Protocol), то этот атрибут не влияет на работу;
+□ serverKeyBits — длина серверного ключа. По умолчанию установлено 7 68, мини­
+мальное значение — 512;
+□ SysiogFaciiity — тип сообщений, которые будут сохраняться в журнале;
+□ LogLevei — уровень событий, которые будут попадать в журнал. Возможные
+уровни соответствуют системным, которые мы будем рассматривать в разд. 12.5;
+□ LoginGraceTime— интервал времени, в течение которого пользователь должен
+ввести правильный пароль, иначе соединение будет разорвано;
+□ РеrmitRootLogin— флаг, определяющий, разрешено (yes) или запрещено (по)
+входить в систему по протоколу SSH под пользователем root. Мы уже говорили,
+что root — это бог в системе, и его возможности нужно использовать аккуратно.
+Если в систему нельзя входить с такими правами, то и по SSH тем более. Срочно
+меняйте этот параметр на по;
+□ strictModes — флаг, регламентирующий необходимость проверки состояния
+файлов и их владельцев, пользовательских файлов и домашнего каталога до ввода
+пароля. Желательно установить yes, потому что многие начинающие пользовате­
+ли делают все свои файлы доступными для записи;
+□ RSAAuthentication— разрешена ли аутентификация по алгоритму RSA. Пара­
+метр действует для первой версии протокола;
+□ PubkeyAuthentication— дозволена ли аутентификация по публичному ключу.
+Параметр действует для второй версии протокола;
+□ AuthorizedKeysFile — файл с публичным ключом, который может использовать-
+ся для аутентификации;
+□ RhostsAuthentication — флаг, разрешающий аутентификацию по файлам $НОМЕ/
+.rhosts и /etc/hosts.equiv. По умолчанию стоит по, и без особой надобности менять
+этот параметр не стоит, потому что это небезопасно;
+□ ignoreRhosts — флаг, запрещающий читать файлы -/.rhosts и -/.shosts. Без необ­
+ходимости значение лучше не изменять, потому что это может повлиять на
+безопасность;
+□ AuthorizedKeysFile— файл для хранения списка авторизованных ключей. Если
+пользователь входит в систему с имеющимся в этом файле ключом, то его пус­
+тят автоматически без ввода дополнительных паролей;
+□ RhostsRSAAuthentication— флаг, регламентирующий использование при аутен­
+тификации ключа хоста из каталога /etc/ssh/ssh_known_hosts. Параметр применя­
+ется в первой версии SSH;
+□ ignoreUserKnownHosts — параметр, указывающий на необходимость игнориро­
+вания пользовательских списков доверенных компьютеров. Если он равен по, то необходимо доверять компьютерам из списка ~/.ssh/known_hosts при аутентифика­
+ции RhostsRSAAuthentication. Не верьте никому, поэтому параметр лучше всего
+изменить на yes;
+□ PasswordAuthentication — требование пароля. Если значение равно yes, то будет
+требоваться пароль. При использовании авторизации через ключи параметр
+можно отключить;
+□ РеrmitEmptyPasswords — разрешение пустых паролей. По умолчанию установле­
+но по, что запрещает использование пустых паролей, и изменять это значение не
+стоит;
+□ KerberosAuthentication— использование проверки подлинности по протоколу
+Kerberos. В последнее время именно эта аутентификация набирает большую по­
+пулярность благодаря своей безопасности;
+□ KerberosOrLocaiPasswd— если пароль Kerberos не был принят, то включается
+проверка локального файла паролей из файла /etc/shadow;
+□ KerberosTicketcieanup— удаление билета Kerberos из кэша при выходе из сис­
+темы;
+□ Banner— позволяет указать файл, в котором находится текст приветствия, ото­
+бражаемого пользователям.
+
+#### Параметры доступа к серверу sshd
+Кроме директив, можно использовать следующие:
+□ AllowGroups — позволить вход в систему только пользователям указанных групп
+(указываются через пробел в одной строке);
+□ Allowusers — разрешить вход в систему пользователям, имена которых указаны
+через пробел;
+□ DenyGroups— запретить вход в систему пользователям указанных через пробел
+групп;
+□ DenyUsers — запретить вход в систему пользователям, имена которых указаны
+через пробел. Этот параметр бывает удобен, когда дано разрешение на вход
+группе, но нужно отказать в подключении к SSH-серверу одному из ее пользо­
+вателей.
+Я рекомендую вам явно прописать группы или имена пользователей, которые мо­
+гут входить в систему по SSH.
+
+#### Конфигурирование клиента SSН
+
+Настройки SSH-клиента содержат еще меньше параметров. В файле `/etc/ssh/ssh_config` находятся глобальные настройки для всех пользователей в системе. Но вы
+можете для любого из них переопределить произвольный параметр в файле
+`ssh_config` из каталога пользователя.
+
+#### Вход по ключу
+
+```sh
+ssh-keygen
+# -t - тип ключа (rsa, dsa, rsa1)
+# -f - файл в котором будет сохранен закрытый ключ
+# -b - длина ключа (не менее 512. по умолч = 1024)
+
+ssh-keygen -t rsa -f ~/.ssh/mykey
+
+cd /home/vlapa
+mkdir .ssh
+```
+Получив ключи, вы должны отправить файл `~/.ssh/mykey.pub` на удаленный ком­
+пьютер, чтобы SSH-сервер мог использовать его для аутентификации.
+
+Администратор сервера должен добавить содержимое публичного ключа в файл
+`ssh/authorized_keys`. Для этого можно выполнить на сервере следующую команду:
+`cat myrsakey.pub » .ssh/authorized_keys`
+Теперь можно подключаться к серверу, используя публичный ключ для подтвер­
+ждения личности. Но перед этим убедитесь, что в конфигурационном файле серве­
+ра включены следующие директивы:
+
+RSAAuthentication yes
+PubkeyAuthentication yes
+
+Для подключения к серверу выполните команду:
+
+`ssh -i ~/.ssh/myrsakey`
+
+С помощью параметра -i мы указываем файл публичного ключа. Если этого не
+сделать, то будет использоваться id_rsa— файл по умолчанию, его имя задает
+директива identityFile в конфигурационном файле SSH-клиента.
+Теперь сервер будет запрашивать у вас не пароль, а слово (фразу), которое вы ука­
+зали при генерации публичного ключа:
+`Enter passphrase for key`
+Если в конфигурационном файле SSH-сервера изменить параметр PasswordAuthen-
+tication на по, то пароль проверяться не будет, а связь станет устанавливаться
+только на основании ключей. Для обеспечения безопасной связи этого достаточно.
+
+#==========================================
+### Анализ безопасности дистрибутива
+
+```sh
+sudo apt-get install lynis
+sudo lynis audit system
+# -c - выполнить все проверки (check all)
+```
+
+#==========================================
+### SAMBA
+
+Основным конфигурационным файлом для Samba является `smb.conf`, который мож­
+но найти в каталоге `/etc/samba/` (в некоторых дистрибутивах это может быть каталог
+`/etc`). Кроме него, в этом каталоге находится файл `Imhosts`, с помощью которого про­
+исходит сопоставление IP-адресов и имен компьютеров, — аналогично файлам
+`/etc/hosts` в Linux и `[Диск:]\Windows\System32\dnvers\etc\lmhosts.sam` в Windows.
+Дополнительно в этом же каталоге можно создать следующие файлы (некоторые из
+них могут существовать):
+
+□ smbusers — список пользователей, которым разрешено подключаться к серверу
+Samba;
+
+□ smbpasswd — пароли пользователей из файла smbusers.
+
+Как видите, у Samba — свои конфигурационные файлы для хранения списка
+пользователей. Если вы создаете их вручную, то убедитесь, что права на чтение и
+запись установлены правильно. Файл должен быть доступен только администра­
+тору, т. е. владельцем может быть лишь root и никто иной.
+Конфигурационный файл `smb.conf` содержит не так много директив
+#### Основные настройки
+Конфигурационный файл разбит на секции. Самой первой идет секция
+[global],
+в которой описываются глобальные настройки сервера. В ней можно увидеть сле­
+дующие директивы:
+□ workgroup = имя — имя группы, в которую входит сервер. Когда в Windows вы
+входите в сетевое окружение, то можете увидеть все доступные ресурсы, разби­
+тые на категории. В каждой группе могут быть свои компьютеры или серверы;
+□ netbios name = имя — имя, которое пользователи будут видеть в сетевом окру­
+жении для этого сервера, оно не должно совпадать с именем рабочей группы;
+□ server string = описание — Свободный ТеКСТ, КОТОрЫЙ МОЖНО будет увидеть В
+поле Description (Комментарий) свойств сервера или окне сетевого окружения
+в режиме Details (Таблица). В этом поле вы можете поместить комментарий,
+описывающий содержимое сервера, — например: Файловый архив Сергея;
+□ hosts allow = адреса — указание (через пробел) IP-адресов или сетей, которым
+разрешен доступ к Samba-серверу. Например, чтобы открыть доступ всем компьютерам сети 192.168.1.x и одному компьютеру с адресом 192.168.2.2 из другой
+сети, надо написать следующую строку:
+hosts allow = 192.168.1. 192.168.2.2
+□ printcap name = файл — файл описания принтеров, подключенных к системе. По
+умолчанию это `/etc/printcap`
+□ load printers = yes — установка режима (yes) автоматического включения
+принтеров в список открытых ресурсов. Если в этом нет надобности, то укажи­
+те по;
+□ printing = система— тип системы печати. Здесь можно использовать одно из
+Следующих Значений: bsd, sysv, pip, lprng, aix, hpux ИЛИ qnx.
+#### Безопасность
+□ guest account = имя — определяет учетную запись, с правами которой пользо­
+ватель сможет входить в систему. Если ваш сервер не содержит секретной ин­
+формации и используется для открытого обмена файлами, то можно завести гос­
+тевую учетную запись, иначе такой вход небезопасен;
+□ log file = файл — задает название файла-журнала. Например, можно написать:
+/var/iog/samba/%m. log. Обратите внимание, что в имени присутствует символ
+процента, за которым следует буква т. Эта комбинация во время работы будет
+заменена именем пользователя, активность которого сохраняется. Так, напри­
+мер, для пользователя robert будет создан журнал /var/log/samba/robert.log;
+□ max log size = n— определяет максимальный размер журнала в килобайтах.
+Укажите значение о, если ограничения не должно быть;
+□ sysiog only — предписывает использовать для журналирования только syslog;
+□ security = уровень — определяет степень доступа. Параметр уровень может
+принимать одно из следующих значений:
+• user — доступ на уровне пользователя;
+• share — аутентификация на основе имени и пароля;
+• server— проверка пароля производится сторонним smb-сервером. Имя сер­
+вера, на котором хранятся пароли, задается с помощью директивы:
+password server = ИмяСервера
+что позволяет держать пароли на другом smb-сервере, который и будет осу­
+ществлять проверку пароля;
+• domain — включает сервер в домен Windows NT, а пароль для доступа указы­
+вается в файле, определенном с помощью директивы:
+smb passwd file = ИмяФайла
+□ encrypt passwords = yes — позволяет шифровать пароли, передаваемые по сети.
+Если вы работаете в режиме с шифрованными паролями, то при авторизации
+будет использоваться файл /etc/samba/smbpasswd (это можно изменить с помощью
+директивы: smb passwd file). Такой файл необходим из-за различий в шифрова­
+нии Windows и Linux;
+***Совет
+Не применяйте открытые пароли без особой надобности. Не забывайте о существова­
+нии программ-снифферов, которые анализируют сетевой трафик и позволяют найти
+пароли, передаваемые по сети. Если они не зашифрованы, то злоумышленник сможет
+проникнуть в вашу систему.***
+□ smb passwd file = файл— указывает на расположение файла с паролями. По
+умолчанию он находится в том же каталоге, где расположены конфигурацион­
+ные файлы Samba;
+□ ssi с а certFile = файл— задает файл сертификата, необходимый для работы
+протокола SSL, гарантирующего безопасность передачи данных;
+□ unix password sync = yes — разрешает пользователям Windows менять пароль
+Samba, одновременно обновляя системные пароли в Linux. Если в этом нет необходимости, установите значение параметра по. Для работы этой директивы
+нужно указать программы, которые будут изменять пароли (параметр: passwd
+program) и сообщения, появляющиеся перед пользователем (параметр: passwd
+chat).
+Приведу пример использования:
+```sh
+unix password sync = Yes
+passwd program = /usr/bin/passwd %u
+passwd chat = *New*password* %n\n *Retype*new*password* %n\n
+*passwd:*al^authentication*tokens*updated*successfully*
+```
+Помимо ЭТОГО, необходимо использовать директивы: encrypt passwords И smb
+passwd file;
+□ username map = файл — указание на файл, где хранится список пользователей
+сервера Samba для клиентов Windows 9х (о нем подробнее мы поговорим в
+разд. 6.3)\
+□ usershare max shares — максимальное количество пользовательских каталогов,
+которые могут быть открыты для общего доступа;
+□ usershare allow guests = yes — еСЛИ ЭТОТ параметр ВКЛЮЧен, ТО ГОСТИ системы
+смогут получить доступ к открытым ресурсам. По умолчанию этот параметр от­
+ключен, чтобы доступ к открытым ресурсам получали только авторизованные
+пользователи.
+#### Сеть
+В этом разделе мы изучим директивы настройки сетевого протокола:
+□ include = файл— позволяет подключить дополнительный конфигурационный
+файл, например, с другого компьютера или содержащий настройки для конкрет­
+ного подключающегося компьютера. В последнем случае имя файла обычно
+задается в формате: путь.%т. Здесь путь— это начало полного имени файла, а
+%т — NetBIOS-имя компьютера. Например: /etc/samba/smb.conf.robert;
+□ socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192— Задает Парамет­
+ры протокола и размер входного и выходного буферов. Здесь:
+• t c p_n o d e l a y — позволяет быстрее (без задержек) передавать данные;
+• s o_r c v bu f — размер принимающего буфера;
+• s o_s n d b u f — размер передающего буфера;
+□ interfaces = интерфейсы— если у вас установлены две сетевые карты, которые
+направлены на разные сети, то с помощью этой директивы можно позволить
+работать с Samba пользователям из какой-то конкретной или из обеих сетей;
+□ bind interfaces only— позволяет привязаться только к именованным интер­
+фейсам или сетям, указанным в параметре interfaces. Если ваша сеть не защи­
+щена сетевым экраном, то настоятельно рекомендуется использовать этот параметр, чтобы доступ к серверу Samba имели только компьютеры из вашей сети, а
+не любой удаленный пользователь из Интернета.
+#### Замена сервера Windows
+Если посмотреть на параметры, описанные в этом разделе, можно увидеть, что
+Samba способна полностью заменить Windows-сервер, и рабочие станции на базе
+Windows не заметят неудобств:
+□ local master = yes — позволяет сделать Samba-сервер основным браузером сети;
+□ domain master = yes — дает возможность сделать Samba-сервер главным брау­
+зером домена. Не устанавливайте значение yes, если в вашей сети уже есть кон­
+троллер домена Windows NT;
+□ logon script = файл— если директива domain logons включена, то в этом па­
+раметре можно указать файл bat-сценария, который будет выполняться на ком­
+пьютере клиента при входе в систему. Сценарий может, например, задаваться
+в виде %m.bat (заменяется именем компьютера) или %u.bat (подменяется на имя
+пользователя);
+□ logon path = путь — определяет место хранения пользовательских профилей.
+При использовании этой директивы необходимо убрать комментарии с секции
+[Profiles], которую можно найти в файле конфигурации по умолчанию.
+#### Поддержка WINS и DNS
+WINS (Windows Internet Naming Service, служба имен Интернета для Windows) — это
+сервис для сопоставления имен компьютеров и IP-адресов. База данных WINS чем-то
+напоминает DNS (Domain Name Service), только в ней хранятся NetBIOS-имена ком­
+пьютеров, a DNS обслуживает доменные имена.
+Для настройки работы через WINS служат следующие директивы:
+□ wins support ~ yes — разрешить использование WINS-сервера;
+□ wins server = w.x.y.z — IP-адрес WINS-сервера;
+□ d n s Proxy = yes— если эта опция разрешена, то нераспознанные NetBIOS-
+имена можно попытаться определить через DNS-сервер;
+□ name resolve order — последовательность, в которой будет производиться по­
+иск адреса хоста по его имени. В конфигурационном файле можно найти сле­
+дующий пример:
+name resolve order = lmhosts host wins beast
+Если использовать это значение, то при поиске адреса система сначала будет ис­
+кать имя хоста в файле lmhosts, затем в hosts, потом будет задействован файл wins
+и последним — beast (broadcast, или широковещательный запрос).
+#### Отображение файлов
+В Linux и Windows применяются разные правила именования файлов. Например,
+в Linux названия чувствительны к регистру, а в Windows — нет. Это значит, что
+файлы DATA.TXT и data.txt в Windows будут восприняты как один и тот же файл,
+чего не скажешь о Linux.
+Для решения этой проблемы есть несколько команд:
+□ case sensitive = no — не принимать во внимание различие в регистре;
+□ default case = lower — отображать все файлы в нижнем регистре;
+□ preserve case = по И short preserve case = no — запретить сохранение имен
+файлов с учетом регистра.
+Если у вас в сети работают пользователи Windows-систем, то рекомендуется оста­
+вить указанные значения. Для однородной Linux-сети можно разрешить сохранять
+регистр.
+#### Описание объектов
+После определения основных параметров Samba-сервера можно описывать объек­
+ты, к которым может получать доступ пользователь. Это делается в отдельных сек­
+циях, которые идут после секции [Global], рассмотренной в разд. 6.1.
+#### Пора домой
+Конечно же, любой пользователь захочет работать со своим каталогом. Для этого
+он должен иметь учетную запись в Linux, с которой и будет связан его каталог. Об­
+ращение к такому каталогу будет выглядеть так: \\сервер\имя, где сервер — это имя
+сервера или его IP-адрес, а имя — это имя пользователя, домашний каталог которо­
+го необходимо увидеть.
+Чтобы разрешить пользователям работать с собственными каталогами, нужно опи­
+сать раздел [homes]. Рассмотрим пример такой секции:
+[homes]
+comment = Home Directories
+browseable = no
+writable = yes
+valid users = %S ; %S - строка с перечислением пользователей
+create mode = 0750
+directory mode = 0775
+В этой секции могут присутствовать следующие директивы:
+□ comment — текстовый комментарий, который не влияет на работу;
+□ browseable = по— режим отображения ресурса в списке просмотра. Если ука­
+зать yes, то в сетевом окружении будут видны папки пользователей;
+□ writable = yes — предикат записи в домашний каталог. При значении по созда­
+ние и изменение файлов станет невозможным;
+□ create mode = 0750 — права доступа для создаваемых файлов. В этом случае
+владелец файла имеет полные права, пользователи группы могут читать и выпол­
+нять его, а остальные — бесправные. Иногда следует понизить значение параметра
+до 740, чтобы пользователи группы могли только читать;
+□ directory mode = 0775 — права доступа для создаваемых каталогов. В этом слу­
+чае у пользователей группы тоже слишком высокие права, и я бы понизил их
+до 755, чтобы запретить им создавать файлы в новом каталоге. Остальные мо­
+гут только просматривать каталог, но и это может оказаться лишним, и для боль­
+шей безопасности лучшим решением будет значение 750;
+□ valid users = пользователи — список пользователей, которым разрешен доступ
+к домашним каталогам. Значения разделяются пробелом. По умолчанию доступ
+имеют все, но в реальных условиях это необходимо только некоторым. Поэтому я
+рекомендую в явном виде прописать имена тех пользователей, которые нуждаются
+в работе со своим домашним каталогом.
+#### Доменный вход
+Если вы настроили сервер Linux так, чтобы пользователи Windows могли входить
+в систему через smb, используя его как сервер домена, то необходимо убрать ком­
+ментарии С секции [netlogon]:
+; [netlogon]
+; comment = Network Logon Service
+; path = /usr/local/samba/lib/netlogon
+; guest ok - yes
+; writable = no
+В этой секции также присутствуют комментарий и директива writable. Пользова­
+тели не должны иметь право записи в этот каталог, потому что здесь хранятся сце­
+нарии, которые выполняются при входе в систему. Файлы из этого каталога должен
+изменять только администратор.
+Помимо этого, есть еще две команды:
+□ path = путь — полный путь к каталогу netlogon;
+□ guest ok = yes — разрешение гостевого входа.
+Также нужно убрать комментарии в секции [Profiles], которая выглядит следую­
+щим образом:
+; [Profiles]
+; path = /usr/local/samba/profiles
+; browseable = no
+; guest ok = yes
+В этом каталоге хранятся профили пользователей, и он не должен быть виден в
+сетевом окружении Windows, поэтому директива browseable = по запрещает отображение.
+#### Распечатка
+Чтобы пользователям стали доступны принтеры, подключенные к Linux-c^
+нужно настроить следующую секцию:
+[printers]
+comment = All Printers
+path = /var/spool/samba
+browseable = no
+guest ok = no
+writable = no
+printable = yes
+Обратите внимание, что по умолчанию секция открыта, и зарегистрированные
+пользователи уже имеют доступ к принтерам. Если вы хотите, чтобы
+смогли использовать принтер, то добавьте строку public = yes. Однако я не ремендую это делать, потому что такая добавка предоставит пользователям возможность для подшучивания. Например, в моей сети был случай, когда
+ник рассылал на все принтеры с общим доступом разные картинки. Вроде '
+но, а работу тормозит, и бесполезно расходуются картриджи.
+#### Общий доступ
+Чаще всего на сервере необходим каталог, через который любой пользователь с
+жет обмениваться файлами с другими участниками сети. Для настройки такого
+талога служит секция [tmpj:
+; [tmp]
+; comment = Temporary file space
+; path = /tmp
+; read only = no
+; public = yes
+По умолчанию секция закрыта, и для разрешения доступа к ней необходимо убрать
+комментарии. Обратите внимание на путь к открытому каталогу. Это /tmp — ката­
+лог для хранения временных файлов пользователей. С помощью директив read
+only (значение по) и public (значение yes) мы указываем серверу Samba, что ката­
+лог открыт, и в него могут записывать и из него читать файлы все пользователи.
+Несмотря на удобства, которые предоставляет этот каталог, я рекомендую исполь­
+зовать его только в закрытых сетях. Если у вас есть выход в Интернет, то с помо­
+щью сетевого экрана необходимо ограничить доступ к Samba. Так как в каталог
+разрешено записывать любым пользователям, злоумышленник может записать
+в него свои файлы, которые помогут ему получить на сервере права администратора.
+#### Личные каталоги
+Все рассмотренные ранее разделы (секции) конфигурационного файла имеют усто­
+явшиеся имена и предназначены для решения определенных задач. Но в некоторых
+случаях вы можете изменить имя раздела, и на работе сервера это не скажется.
+Однако я не рекомендую это делать, потому что в одной версии Samba все будет
+работать хорошо, а при обновлении программ сервера ситуация может измениться,
+и потом трудно будет найти ошибку, из-за которой Samba станет работать неверно.
+Тем не менее вы можете создавать собственные разделы, в которых будете описы­
+вать некоторые права. Например, вам понадобится организовать общий каталог,
+в котором файлы будут доступны всем пользователям, но записывать туда смогут
+только пользователи определенной группы. Допустим, что в этом каталоге должны
+храниться какие-то картинки. Для решения такой задачи можно создать раздел
+[shareimages] следующим образом:
+[share images]
+comment = Share Images
+path = /home/samba/images
+public = yes
+writable = yes
+write list = @staff
+printable = no
+Для этого раздела задаются следующие директивы:
+□ path = /home/samba/images — каталог, который МЫ ХОТИМ Открыть;
+□ public = yes — признак доступности;
+□ writable = yes — запись в каталог разрешена;
+□ write list = Gstaff — определяет группу staff, которая может записывать
+файлы. Для всех остальных каталог открыт только для чтения.
+В таких объявлениях каталогов можно использовать любые директивы, которые мы
+рассматривали в этой главе.
+#### Управление пользователями
+Для начала разберемся с именами пользователей. По умолчанию для доступа к сер­
+веру Samba применяются имена из системного файла /etc/passwd. Но вы можете за­
+вести отдельные записи Samba-сервера, которые будут соответствовать реальным,
+однако их можно будет использовать только для подключения к Samba, а не к сис­
+теме.
+Имена Samba описываются в файле /etc/samba/smbusers, расположение и название
+которого могут быть изменены директивой username map файла smb.conf. Содержи­мое файла /etc/samba/smbusers может быть, например, таким:
+```sh
+# Unix_name = SMB_namel SMB_name2
+root = administrator admin
+nobody = guest pcguest smbguest
+```
+У списка имен несколько предназначений. Во-первых, с его помощью вы можете
+отразить имена, привычные для пользователей DOS и Windows, на учетные записи
+Linux. Например, в Windows максимальные права принадлежат пользователю
+Administrator, а в Linux это root. И во второй строке приведенного примера уста­
+навливается соответствие имен administrator и admin пользователю root.
+Во-вторых, использование этого файла позволяет аккумулировать несколько имен
+на одной учетной записи. Например, у вас есть группа пользователей, которым
+должны быть назначены одинаковые права. Для этого заводим в Linux только одну
+учетную запись nobody (под ней будут работать пользователи), а в Samba прописы­
+ваем ДЛЯ нее неСКОЛЬКИХ пользователей: guest, pcguest И smbguest— под этими
+именами они будут входить в систему.
+Несмотря на то что мы отразили имена пользователей administrator и admin, и это
+разные учетные записи, для них будет использоваться один пароль — назначенный
+пользователю root.
+Информация о пользователях, которым разрешен доступ, хранится в файле
+/etc/samba/smbpasswd. Его расположение и имя могут быть изменены с помощью ди­рективы smb passwd file файла smb.conf. \
+Рассмотрим пример содержимого файла:
+fienov:0:813D6593C11F1173ED98178CA975D79:[UX ]:LCT-41FA818F
+robert:500:813D6593C11F1173ED98178CA975D79:[UX ]:LCT-41FA818F
+Сразу видно, что файл чем-то похож на /etc/passwd. Он также разделен двоеточиями
+на несколько колонок. Наиболее интересны из них первые три: имя пользователя,
+его UID в системе Linux и пароль.
+Но добавлять пользователей вручную не очень удобно, потому что требуется за­
+шифровать и прописать пароль, что не так уж и просто. Чтобы облегчить задачу,
+в пакет Samba включена утилита smbpasswd, которая принимает следующие пара­
+метры:
+□ -а — добавить пользователя в систему. Учетная запись должна уже существо­
+вать в файле /etc/passwd. Например, давайте пропишем Роберта, с которым мы
+уже не раз работали:
+smbpasswd -a robert
+В ответ на это программа попросит вас дважды ввести пароль. Указанная вами
+комбинация никак не влияет на системный пароль и используется только для
+доступа к Samba. Таким образом, пароли могут отличаться друг от друга. Я даже
+рекомендую сделать их различными. ОС Windows умеет запоминать пароли и
+хранить в своей системе, и версии Windows 9х делают это небезопасным спосо­
+бом. Если злоумышленник сможет украсть пароль на Samba, то он проникнет и
+в систему;
+□ -х — удалить пользователя. Чтобы исключить Роберта из системы, выполните
+команду: smbpasswd -х robert;
+□ -d — деактивировать пользователя. Если необходимо временно отключить дос­
+туп для пользователя, не удаляя его из системы, выполните команду smbpasswd
+-d robert. Давайте посмотрим на строку, соответствующую Роберту, после вы­
+полнения этой команды:
+robert:500:813D6593C11F1173ED98178CA975D79:[DUX ]:LCT-41FA818F
+Обратите внимание, что в четвертой колонке в квадратных скобках появилась
+буква D. Она как раз и указывает на то, что запись деактивирована. Так вы легко
+можете определить, какие записи активны, а какие нет;
+□ -е — активирЪвать пользователя. С помощью этой команды можно подключить
+деактивированного ранее пользователя: smbpasswd -е robert.
+Если запустить smbpasswd без параметров, то вы сможете поменять свой пароль,
+и это можно будет сделать с текущими правами. Выполнение всех остальных
+команд требует прав администратора, поэтому их придется выполнять с использо­
+ванием sudo.
+Напоминаю, что файл /etc/samba/smbpasswd используется, если пароли передаются
+по сети в зашифрованном виде. В этом случае, чтобы предоставить доступ к Samba
+всем пользователям системы, необходимо для каждого выполнить команду:
+smdpasswd.
+#### Использование Samba
+Сервис Samba в основном создавался для пользователей Windows, но и поклонники
+Linux тоже оценили все преимущества этой технологии, тем более что ОС Linux
+управляет совместным доступом к файлам по сети не хуже Windows, а в чем-то да­
+же лучше. Для работы с Samba из ОС Linux служит команда: smbciient.
+Чтобы подключиться к серверу, необходимо указать как минимум два ключа: -L
+(адрес сервера) и -и (имя пользователя). В ответ на это программа запросит ввести
+пароль. Если вы не используете шифрование, то необходимо ввести системный па­
+роль, в противном случае воспользуйтесь тем, который вы указали при переносе
+пользователя в файл /etc/samba/smbpasswd (при запуске команды smbpasswd).
+Итак, выполните следующую команду для тестирования сервера:
+smbciient -L localhost -U root
+После ввода пароля пользователя root вы должны увидеть все открытые ресурсы
+сервера.
+Вы должны учитывать, что в этом списке находятся не все каталоги. Если, напри­мер, у домашних каталогов из раздела [homes] файла конфигурации директива
+browseable установлена в значение по (см. разд. 6.2.7), таких каталогов видно не
+будет. Это вполне логично, потому что злоумышленнику нельзя давать возмож­
+ность лицезреть имена каталогов, особенно если они соответствуют именам поль­
+зователей или содержат конфиденциальные данные. Никогда не изменяйте этот
+параметр, чтобы хакер не знал, что он должен сломать.
+Для подключения к открытому ресурсу сервера нужно подать команду: smbciient,
+передав ей имя ресурса, которое задается в формате UNC (Universal Naming
+Convention, универсальное именование объектов) с применением следующего син­таксиса:
+\\ИмяСервера\ресурс
+Например, вы хотите подключить домашний каталог пользователя flenov. Его адре­
+сом будет:
+\\192.168.1. l\flenov
+Но здесь надо сделать одно замечание: в Linux обратная косая черта (\) является
+служебным символом, поэтому каждый такой знак должен заменяться двумя сим­
+волами \\ (т. е. каждый знак \ экранируется еще одним знаком \). Поскольку в на­
+чале UNC-имени идут два знака \\, то они заменяются на четыре обратных косых
+черты, и приведенный здесь адрес должен быть введен так:
+WW192.168.1. lWflenov.
+Итак, для подключения к ресурсу выполняем команду:
+smbclient \\\\192.168.1. lWflenov
+Если вы обращаетесь к ресурсу, который требует авторизации, необходимо указать
+имя пользователя, обладающего правами:
+smbclient \W\192.168.1. lWflenov -U flenov
+При удачном подключении к открытому ресурсу вы увидите такое приглашение:
+Smb: \>
+Теперь можно выполнять различные операции над файлами. Чтобы узнать, какие
+команды доступны, введите директиву help или знак вопроса (?). Команды, кото­
+рые вы увидите, очень похожи на команды FTP (более подробно с FTP мы позна­
+комимся в главе 10, см. также приложение /). Для отключения от ресурса необхо­
+димо выполнить команду exit.
+
+#==========================================
+### Настройка sendmail
+
+Основной конфигурационный файл, который вам понадобится, — `/etc/sendmail.cf` или
+`/etc/mail/sendmail cf`. Если файла не существует, то, скорей всего, sendmail не установ­
+лен, что случается в установке дистрибутива по умолчанию. Устанавливаем:
+`sudo apt-get install sendmail
+После установки сразу же должна начаться автоматическая настройка. Если и по­
+сле этого файла конфигурации не оказалось в системе, то выполните эту команду:
+sudo sendmaiIconfig
+Программа начальной настройки запросит пути к конфигурационным файлам* Со­
+гласитесь со значениями по умолчанию, но обратите внимание, какие пути у вас
+спрашивают. В последнем релизе дистрибутива Ubuntu версия sendmail предлагает
+использовать путь /etc/mail/ для всех файлов.
+Сервер sendmail имеет плохую репутацию в связи со сложностью его настройки.
+Действительно, стоит лишь взглянуть на размер файла sendmail.cf, и становится жут­
+ко — это 32 килобайта (более 1000 строк). А если заглянуть внутрь файла, то станет
+еще страшнее от непонятных ключей и директив.
+В файле конфигурации sendmail все параметры сгруппированы по разделам. Раз­
+биение оформляется в виде следующих строк:
+```sh
+##################
+# Local info #
+##################
+```
+Столь «красивое» оформление означает, что далее следует раздел Local info. По­
+добных секций несколько — в частности, обычно присутствуют такие:
+□ Local info — локальная информация, основные сведения о сервере и домене;
+□ options — настройки работы программы sendmail;
+□ Message precedences — приоритеты сообщений;
+□ Trusted users — доверенные пользователи;
+□ Format of headers — форматы Заголовков.
+Рассмотреть все настройки в этой книге невозможно — в моей системе этот конфи­
+гурационный файл занимает 50 Кбайт. Если расписывать каждый параметр, понадо­
+бится отдельное издание. Наша цель— эффективность и безопасность, поэтому
+рассмотрим только те настройки, которые касаются этих вопросов, и испытаем
+sendmail в действии.
+Для упрощения конфигурирования sendmail в последних версиях этого почтового
+сервиса используется новый файл — sendmail.mс (МС означает Minimal Configuration или
+минимальная конфигурация), который можно найти в каталоге /etc/mail.
+```sh
+divert(-1)
+dnl This is the sendmail macro config file. If you make changes to this
+dnl file, you need the sendmail-cf rpm installed and then have to
+dnl generate a new /etc/sendmail.cf by running the following command:
+dnl Это файл макроконфигурации sendmail. Если вы делаете изменения в этом
+dnl файле, вам нужна инсталляция rpm sendmail-cf, с помощью которой можно
+dnl сгенерировать новый /etc/sendmail.cf, запустив команду:
+dnl
+dnl
+m4 /etc/mail/sendmail.me > /etc/sendmail.cf
+dnl
+include('/usr/share/sendmail-cf/m4/cf .m4’)
+VERSIONID('linux setup for ASPLinux’)dnl
+OSTYPE('linux')
+dnl Uncomment and edit the following line if your mail needs to be
+dnl sent out through an external mail server:
+dnl Раскомментируйте следующую строку, если вам нужно посылать почту
+dnl через внешний почтовый сервер:
+dnl define('SMART_HOST','smtp.your.provider')
+define('confDEF_USER_ID',''8:12'')dnl
+undefine('UUCP_RELAY')dnl
+undefine('BITNET_RELAY')dnl
+```
+Файл sendmail.me имеет более простой формат по сравнению со старым sendmail.cf,
+благодаря чему уменьшается вероятность допустить ошибку при его конфигуриро­
+вании. После внесения изменений его необходимо скомпилировать (перевести файл
+sendmail.mс в формат sendmail.cf) специальной командой, в результате чего получает­
+ся файл /etc/sendmail.cf.
+Мы в основном будем рассматривать параметры, которые нужно устанавливать
+в файле sendmail.cf, а если описывается параметр файла sendmail.mс, я буду явно ука­зывать на это.
+Иногда при неправильных настройках загрузка Linux может зависать при старте
+сервиса sendmail. Это происходит из-за того, что ваш почтовый сервер не может
+определить имя компьютера. Откройте файл /etc/hosts. В нем чаще всего будет в на­личии только одна строка:
+127.0.0.1 localhost.localdomain localhost
+
+Подробно с этим файлом мы познакомимся в главе 77, когда станем рассматривать
+DNS. Сейчас нам надо знать, что эта строка описывает IP-адрес 127.0.0.1, который
+соответствует имени localhost. В любой системе такие адрес и имя указывают на
+вашу локальную машину. Когда в сетевых программах вы указываете localhost, то
+это имя преобразуется в IP-адрес 127.0.0.1.
+Настройка DNS может быть очень важна для правильной отправки почты. Допус­тим, что у меня есть домен www.flenov.ru. Этот домен может загружать веб-сайт, а
+может отправлять почту, если послать что-либо на почтовый ящик info@flenov.ru
+(в реальности такой ящик не существует). В обоих 'случаях домен один и тот же, но
+веб-сервер и почтовый сервер могут находиться на разных серверах с разными IP.
+Настройка DNS позволяет указать, какой IP-адрес у веб-сервера и какой адрес
+у почтового.
+Для почтового сервера нужно будет в настройки DNS добавить следующие строки:
+IN MX 10 mx.flenov.ru.
+mx.flenov.ru. IN АААА 1р_адрес_в_формате^6
+mx.flenov.ru. IN А 1р_адрес_в_формате^4
+Домен Fienov.ru поменяйте здесь на свой, и точка после него не случайна.
+Ну и домен этот должен быть прописан в host-файле:
+127.0.0.1 flenov.ru
+Пока мы с DNS еще не знакомы, поэтому в sendmail можно для тестов использовать
+имя компьютера, которое вы указали во время установки ОС Linux. Выполните
+команду hostname, чтобы это имя узнать. В моем случае это FienovM. Но на деле все
+сетевые обращения происходят не по имени, а по IP-адресу, и если sendmail не мо­жет определить адрес по имени FienovM, происходит зависание. Чтобы исправить
+эту ситуацию, добавьте в файл /etc/hosts строку вида:
+192.168.77.1 FlenovM
+FlenovM
+Не забудьте только заменить приведенный здесь параметр FienovM на имя вашего
+компьютера и, разумеется, указать свой IP-адрес. После этого программу sendmail
+можно помещать в автозапуск, и она будет работать великолепно даже с настрой­
+ками по умолчанию.
+Для каждого пользователя системы автоматически создается почтовый ящик, и ес­
+ли сервис sendmail запущен, то им уже можно пользоваться. Все почтовые ящики
+хранятся в каталоге /var/spool/mail/. Их имена соответствуют именам пользователей.
+Так, для учетной записи root ящик будет расположен в файле /var/spool/mail/root.
+Для работы с почтой нам нужен почтовый клиент, который будет отправлять пись­
+ма серверу и принимать от него новые сообщения. Таких программ существует
+множество, и в некоторых дистрибутивах Linux предлагается аж семь различных
+клиентов. Какой выберете вы, зависит только от личных предпочтений.
+В общем-то можно обойтись и без клиента, а соединение с сервером осуществлять
+напрямую через сервис Telnet, благо команды SMTP достаточно просты и ими легко пользоваться. В этом случае для отправки почты нужно подключиться к пор­ту 25 (порт SMTP), а для получения — к 110 (порт POP3).
+#### Полезные команды
+Давайте рассмотрим некоторые команды, которые помогут вам в администрирова­
+нии sendmail-сервера:
+□ hoststat— показать состояние хостов, которые недавно работали с локальным
+почтовым сервером. Команда является эквивалентом sendmail -bh, которая по
+умолчанию неактивна;
+□ mailq — отобразить краткую информацию о сообщениях в очереди, ожидающих
+обработки. Пример результата выполнения команды:
+
+/var/spool/mqueue (1 request)
+--- Q-ID----—Size—------Q-Time----- ---- Sender/Recipient-----
+jOIAnST11838 6 Tue Jan 18 13:49 <flenov@flenovm.ru>
+(host map: lookup (flenovm.ru): deferred)
+<root@flenovm.ru>
+
+Из первой строки видно, что в очереди находится одно сообщение. Вторая стро­ка включает дату посылки и адрес отправителя: fienov@fienovm.ru. В последней
+строке отображается получатель сообщения: root@f lenovm. ru;
+□ mailstats — отобразить статистику сообщений и количества байтов;
+□ sendmail — запустить сервер sendmail. Используя эту команду с различными
+ключами, можно увидеть достаточно много полезной информации. За более
+подробной справкой следует обратиться к документации: man sendmail.
+#### Только отправка почты
+Очень часто почтовые сервисы используют только для отправки почты. Например,
+на веб-серверах sendmail может стоять лишь для того, чтобы можно было отослать
+письмо прямо из сценариев на Perl или РНР. Если ваш сервер не должен принимать
+писем, то необходимо запретить режим приема. Для этого откройте файл /etc/
+sysconfig/sendmail и измените его содержимое:
+DEAMON=yes
+QUEUE=”qlh”
+Вторая строка задает параметры, которые будут передаваться программе sendmail
+при запуске. Чтобы возобновить прием почты, измените значение qih на ьа.
+Если у вас нет файла /etc/sysconfig/sendmail (он используется не во всех дистрибути­
+вах), то придется редактировать сценарий /etc/rc.d/init.d/sendmail. Найдите в этом фай­
+ле параметры, которые передаются программе, и измените их на qih прямо в тексте
+сценария.
+
+Для защиты сервера от DoS-атак со стороны хакера нам помогут следующие пара­
+метры сервиса sendmail:
+□ MaxDeamonChiidren— ограничение количества одновременно запущенных про­
+цессов. С помощью этого параметра мы можем защитить ресурсы сервера (про­
+цессор) от излишней перегрузки. По умолчанию установлено значение 12, но
+для мощного компьютера его можно повысить, чтобы эффективнее использо­
+вать процессор, а для слабого — уменьшить;
+□ connectionRateThrottie— максимальное количество открываемых соединений
+в секунду. По умолчанию этот параметр равен 3, и повышать его без особой на­
+добности не стоит, разве что вы уверены в производительности сервера.
+
+#==========================================
+### Локальный файл hosts
+
+Мы уже знаем, что изначально для сопоставления имен и адресов использовался
+файл /etc/hosts. Это текстовый файл с записями типа:
+127.0.0.1 localhost.localdomain localhost
+192.168.77.1 FlenovM
+Каждая строка — это соответствие IP-адреса его имени. По умолчанию в файле
+будет всего две строки, как в приведенном примере. Первая строка — это «пет­
+ля». Напоминаю, что во всех компьютерах имя localhost и IP-адрес 127.0.0.1 ука­
+зывают на текущую машину. Это значит, что, если нужно выполнить ping, адре­
+совав запросы на локальный компьютер, можно написать:
+ping 127.0.0.1
+Во второй записи устанавливается соответствие между IP-адресом, заданным для
+вашего сетевого интерфейса, и символьным именем. Здесь моей сетевой карте при­
+своен адрес 192.168.77.1, И ему соответствует ИМЯ FlenovM. Это значит, что при вы­
+полнении команды ping можно указывать или IP-адрес, или имя компьютера.
+Следующие две команды идентичны:
+ping 192.168.77.1
+ping FlenovM
+При выполнении второй команды сначала происходит обращение к файлу /etc/hosts,
+который вернёт программе адрес 192.168.77.1 и уже на него направится эхо-запрос.
+А что будет использоваться для поиска адреса первым: файл /etc/hosts или DNS-база
+данных? Это зависит от настроек ОС. Посмотрим на файл /etc/host.conf. В нем нахо­
+дится строка:
+order hosts,bind
+Директива order как раз и задает порядок просмотра. В нашем случае на первом
+месте находится файл /etc/hosts, и только после этого будет запущена команда bind
+для выполнения запроса к DNS-серверу. Что это нам дает? А то, что можно увели­
+чить скорость доступа к основным серверам. Допустим, что вы каждый день посе­
+щаете сайт www.redhat.com. При этом каждый раз происходит запрос к DNS-
+серверу, что может приводить к задержке в пару секунд перед началом загрузки
+страницы. Чтобы ускорить этот процесс, можно вручную прописать в файле
+/etc/hosts следующую запись:
+209.132.183.105
+www.redhat.com
+Вн и м ан и е!
+Адрес 209.132.183.105 действительно соответствует сайту www.redhat.com на мо­
+мент подготовки этого издания книги, но может измениться.
+Еслй сайт по каким-либо причинам перестал загружаться, то необходимо удалить
+Соответствующую ЗаПИСЬ ИЗ файла hosts И С ПОМОЩЬЮ КОМаНДЫ ping redhat.com
+проверить связь с сервером, а заодно и уточнить его адрес. В ответ на эту директи­
+ву на экране обязательно отображается реальный IP-адрес, с которым происходит
+обмен эхо-сообщениями. Благо IP-адреса у большинства сайтов изменяются редко,
+так что, один раз добавив такую запись в локальный файл /etc/hosts, можно сэконо­
+мить достаточно много времени и нервов в случае проблем с DNS-сервером, пото­
+му что запросов к нему отправляться не будет.
+#### Внешние DNS-серверы
+Если в локальном файле /etc/hosts не найдено записи о нужном имени, то компьютер
+должен запросить эту информацию у DNS-сервера. Для этого нужно знать IP-адрес
+этого самого сервера. Как система его узнает? Из файла /etc/resolv.conf, который
+должен выглядеть примерно следующим образом:
+search' FlenovM
+domain domain.name
+nameserver 10.1.1.1
+nameserver 10.1.1.2
+
+В первой строке находится команда search с параметром (сервер поиска имени хос­
+та). В вашем файле, скорее всего, есть эта запись, и в качестве сервера вписано имя
+вашего компьютера. Здесь может быть перечислено несколько серверов, разделен­
+ных пробелами или символами табуляции. Например:
+search FienovM MyServer
+Поиск на локальном сервере происходит довольно быстро, а вот на удаленных —
+может отнять достаточно много времени.
+Вторая строка содержит команду domain с параметром. Пользователи иногда любят
+задавать имя компьютера без указания домена — например, redhat вместо
+redhat. com. Вы должны задать полное имя узла. Чаще всего этот параметр настраи­
+вается в локальных сетях со специфичным именем домена.
+Оставшиеся две строки содержат команду nameserv с параметром. Это внешний
+DNS-сервер, которому будут направляться запросы. В системе их может быть не­
+сколько (в настоящее время для большинства дистрибутивов не более трех). Они
+будут опрашиваться в порядке указания в файле, пока искомый адрес не будет
+найден.
+В большинстве случаев достаточно и одного сервера, потому что все они работают
+рекурсивно. Но я рекомендую указывать два. Бывают случаи, когда один DNS-
+сервер выходит из строя, тогда второй спасает положение и вступает в работу.
+#### Настройка DNS-сервиса
+В настоящее время наиболее распространенным сервисом DNS для Linux является
+bind. Для этого сервиса существует программа bindconf, которая имеет графический
+интерфейс и проста в использовании. Зайдите в графическую оболочку и в консоли
+выполните команду:
+bindconf &
+Знак & говорит о том, что, запустив программу, консоль не должна дожидаться ее
+завершения. Это очень удобно при запуске графических утилит, чтобы они не оста­
+навливали работу консоли. Учтите, что если закрыть окно консоли, то все про­
+граммы, запущенные с ключом &, тоже закроются.
+На рис. 11.2 изображено запущенное приложение для настройки DNS-сервиса.
+В центре показано окно, которое открывается по нажатию кнопки Добавить. Как
+видите, достаточно только выбрать тип зоны и ввести имя домена — и все готово.
+Несмотря на наличие простой графической программы, мы рассмотрим конфигура­
+ционные файлы, которые могут использоваться сервисом DNS. Их прямое редакти­
+рование позволит сделать более тонкую настройку, и вы лучше будете понимать
+процесс работы DNS.
+Настройка DNS-сервера начинается с файла /etc/named.conf. Пример его содержимо­
+го приведен в листинге 11.1.
+```sh
+options {
+directory "/var/named/";
+};
+zone ”." {
+type hint;
+file "named.ca" ;
+};
+zone "sitename.com" {
+type mastery­
+file "sitename.zone";
+};
+zone "10.12.190.in-addr.arpa" {
+type mastery­
+file "10.12.190.in-addr.arpa.zone";
+};
+```
+В этом примере файл разбит на четыре раздела, каждый из которых имеет следую­
+щий формат:
+тип имя {
+Параметр1;
+Параметр2;
+};
+Давайте рассмотрим назначение разделов. Первым идет options:
+options {
+directory "/vaг/named/";
+};
+В фигурных скобках только один параметр— directory, который указывает на
+домашний каталог DNS-сервера. Все его файлы будут располагаться там.
+Остальные разделы имеют тип zone и через пробел в кавычках содержат имя зоны.
+В каждом из них по два параметра: type (определяет тип зоны) и file (файл, в ко­
+тором содержится описание).
+Самая первая зона в нашем примере— zone ".". Что это за зона в виде точки?
+Вспомните структуру DNS, которую мы рассматривали в начале главы. В базе дан­
+ных DNS так обозначается корень иерархии. Получается, что раздел описывает
+корневую зону. Тип зоны hint, т. е. здесь хранятся лишь ссылки на DNS-cepfeepw.
+Поскольку это корневая зона, то и ссылки будут на корневые серверы.
+В параметре file указывается имя файла, содержащего все ссылки на корневые
+серверы. В системе этого файла может и не быть, потому что информация в нем
+подвержена изменениям, и лучше всего получить его последнюю версию с сервера
+internic.net. Для этого выполните команду:
+dig 0rs.internic.net . ns > named.са
+А можно скачать этот файл непосредственно с FTP-сервера internic.net по адресу
+ftp://ftp.rs.internic.net/domain/named.root и поместить в каталог /var/named.
+Перейдем к следующему разделу zone "sitename.com". Здесь описывается зона
+sitename.com. Тип записи master, значит, ваш DNS-сервер будет главным, а все
+остальные станут только сверяться с ним и кэшировать информацию. Сведения об
+этой зоне будут храниться в файле sitename.zone рабочего каталога. В нашем случае
+это: /var/named.
+Следующая зона описывает обратное преобразование IP-адресов 190.12.10.* в име­
+на. Тип записи — снова master, и в последней строке указан файл, где будет нахо­диться описание зоны.
+
+#==========================================
+### Журналирование
+
+В Linux работают одновременно сразу несколько журналов, и по содержащейся
+в них информации вы сможете вычислить хакера и увидеть, когда он проник в сис­
+тему, а также узнать еще много интересного. Так как журналирование — один из
+инструментов обеспечения безопасности, мы рассмотрим журналы достаточно
+подробно. Это позволит вам лучше контролировать свои владения.
+#### Основные команды
+Информация о текущих пользователях системы сохраняется в файле /var/run/utmp.
+Если попытаться посмотреть его содержимое, например, командой cat, то ничего
+хорошего нашему взору не откроется. Этот журнал хранит данные не в текстовом,
+а бинарном виде, и получение информации из него возможно только с помощью
+специализированных программ (команд).
+who
+Команда who позволяет узнать, кто сейчас зарегистрирован в системе и сколько вре­
+мени он в ней находится. Информация, как уже было отмечено, извлекается из
+файла /var/run/utmp. Введите эту команду, и на экране появится список примерно сле­
+дующего вида:
+robert , ttyl
+Dec 8 10:15
+root
+tty2
+Dec 8 11:07
+Из этого списка становится ясно, что пользователь robert работает за первым тер­
+миналом (ttyl) и вошел в систему 8 декабря в 10 часов 15 минут, а через 52 минуты
+со второго терминала вошел пользователь root.
+Большинство хакеров при входе в систему выполняют эту команду, чтобы выяс­
+нить, есть ли сейчас в системе администратор. Если пользователь root присутству­
+ет, то начинающие хакеры часто уходят, т. к. опасаются, что их знаний не хватит,
+чтобы остаться незамеченными. При этом, вероятно, потом они вернутся.
+А это еще одна причина, по которой администратор не должен входить в систему
+под учетной записью root. Лучше всего работать как простой пользователь, а когда
+не хватает прав, то переключаться на привилегированного. На такой случай я создал
+учетную запись, для которой установил UID равным нулю. Она позволяет получить
+доступ ко всей системе, и при этом имеет имя, отличное от root, и не вызывает по­
+дозрений, когда я под ним работаю. Так что в моей системе никогда нельзя увидеть
+пользователя root.
+users
+Команда users также позволяет вытащить из журнала /var/run/utmp список всех поль­
+зователей, которые сейчас зарегистрированы в системе.
+В этом журнале информация хранится временно — только в период присутствия
+пользователя. Когда он выходит из системы, соответствующая запись удаляется.
+После этого выяснить, кто и когда работал, удастся только из журнала /var/log/wtmp.
+Это также бинарный файл, и его содержимое можно увидеть с помощью специали­
+зированных программ.
+last
+Команда last позволяет выяснить, когда и сколько времени определенный пользо­
+ватель находился в системе. В качестве параметра ей передается интересующее
+имя. Например, следующая директива отображает время входа и продолжитель­
+ность нахождения в системе пользователя robert:
+last Robert
+Выполнив команду, вы увидите на экране примерно следующий текст:
+robert
+ttyl
+Thu Dec 2 12:17 - 12:50 (00:33)
+По этой записи можно понять, что robert находился за терминалом (ttyl), зашел
+в систему 2 декабря на 33 минуты (с 12:17 до 12:50). Если пользователь работал не
+локально, а через сеть, то будет отображена информация о хосте, с которого он
+входил в систему.
+Если выполнить эту команду для себя, то может вывалиться такой список, что чи­
+тать его будет невозможно, потому что вы довольно часто работаете в системе.
+Чтобы ограничить выводимые данные, можно указать ключ -п и количество ото­
+бражаемых строк. Например, следующая команда выдаст информацию о последних
+пяти входах:
+last -п 5 robert
+history
+Команда history выводит историю выполненных в консоли команд. Список может
+быть достаточно большим. Вы можете ограничить список, указав после имени
+команды число. Следующий пример покажет только последние 10 выполненных
+в консоли команд:
+history 10
+lastlog
+Если выполнить команду lastlog, то она выведет на экран перечень всех пользова­
+телей с датами их последнего подключения к системе. Пример результата ее вы­
+полнения можно увидеть в листинге 12.1.
+Список состоит из четырех колонок:
+“1 имя пользователя из файла/etc/passwd;
+□ порт или терминал, на который происходило подключение;
+□ адрес компьютера, если вход был по сети;
+□ время входа.
+С помощью lastlog удобно контролировать системные записи. У них дата послед­
+него входа должна быть **Never logged in**, потому что под ними нельзя войти
+в систему (в качестве командных оболочек установлены /bin/false, /dev/null, /sbin/nologin
+и др.). Если вы заметили, что кто-либо вошел в систему через одну из этих учетных
+записей, то это значит, что хакер использует ее, изменив настройки.
+Простая замена командной оболочки в файле /etc/passwd может открыть хакеру
+«потайную дверь», и администратор не заметит этой трансформации. Но после
+выполнения команды lastlog все неявное становится явным.
+Обращайте внимание на тип подключения и адрес. Если что-то вызывает подозре­
+ние, то можно выявить атаку на этапе ее созревания.
+Isof
+С помощью команды lsof можно определить, какие файлы и какими пользователя­
+ми открыты в текущий момент. Результат ее выполнения приведен в листинге 12.2.
+Это далеко не полный результат. Даже если вы сейчас один работаете с системой,
+количество открытых файлов может исчисляться парой десятков, и число их замет­
+но растет, если в системе несколько пользователей, — ведь один файл может от­
+крываться несколько раз каждым из них. Это касается в основном системных кон­
+фигурационных файлов.
+#### Пользовательские журналы
+Все команды, выполненные пользователем, сохраняются в файле .bash_history (если
+используется интерпретатор команд /bin/bash), который находится в пользователь­
+ском домашнем каталоге. Когда вы определили, под какой учетной записью в сис­
+теме находился взломщик, его действия можно проследить по этому журналу.
+Вы сможете узнать, какие команды или программы выполнялись, и эта информация
+подскажет, как злоумышленник проник в систему и что изменил. Если хакер добавил
+пользователя или модифицировал какой-либо важный системный файл, то вы это
+увидите, сможете вернуть все в исходное состояние и тем самым быстро закрыть
+«двери» в системе, которые открыл хакер.
+
+#==========================================
+### Резервирование в Linux
+
+Самый простой вариант создания резервной копии — использование команды ср
+(копирование файлов). Только при копировании необходимо обязательно сохранять
+права доступа к файлу. Вот как может выглядеть команда, сохраняющая каталог
+/home на примонтированный к системе диск /mnt/resdisk:
+ср -a /home /mnt/resdisk
+Здесь я использовал ключ -а, который равносилен указанию сразу трех ключей
+(-dpR):
+□ -d — не следовать по символьным ссылкам. Мы копируем каталог в таком виде,
+как он есть;
+□ -р — сохранять права доступа к файлу;
+□ -R — копировать каталоги рекурсивно, чтобы на архивный диск попали все фай­
+лы и подкаталоги.
+Получается, что команда, показанная ранее, идентична следующей:
+ср -dpR /home /mnt/resdisk
+С помощью этой директивы мы создаем полную копию каталога. А как можно со­
+хранить изменения? Для этого необходимо произвести копирование на тот же диск,
+только с указанием ключа -и:
+ср -аи /home /mnt/resdisk
+При этом будут скопированы все файлы из каталога /home, дата изменения которых
+позже, чем у документов из каталога /mnt/resdisk.
+#### Утилита tar
+Копировать по одному файлу не очень удобно. Лучше, когда все находится под од­
+ной крышей. В Linux есть утилита tar, которая собирает все файлы в один. Этот
+процесс называют архивированием, но вы должны учитывать, что tar не сжимает
+файлы. Если вы объединяете файлы общим размером в 2 Мбайт, то архив будет
+иметь размер чуть больше (размер всех файлов плюс заголовок tar).
+Преимущество сборки целого каталога в один файл состоит в том, что им проще
+потом управлять и сжимать специализированными программами.
+Для архивирования как минимум нужно выполнить команду:
+tar cf архив.tar каталог
+Здесь у нас два параметра:
+П с — указывает на необходимость создания архива;
+□ f — назначает архивный файл или устройство. По умолчанию используется уст­
+ройство /dev/rmtO.
+Итак, для архивирования каталога /home выполняем следующую команду:
+tar cf backup.tar /home
+При использовании параметров cf в архиве сохраняется и путь к файлам. Если рас­
+паковать созданный нами архив, то в результате в текущем каталоге будет создан
+каталог home, а в нем уже будут располагаться все пользовательские каталоги. На­
+пример, если запустить команду разархивирования в каталоге /home, то каталоги
+пользователей окажутся в /home/home, а если находиться в /etc, то пользователи уви­
+дят свои каталоги в /etc/home.
+Чтобы добиться правильного результата, нужно перейти в корень диска и выпол­
+нять команду там:
+cd /
+tar xf /home/backup.tar
+Здесь мы из корневого каталога разархивируем резервную копию, которая находит­
+ся в файле /home/backup.tar.
+Помимо этого, для архивных операций могут пригодиться следующие ключи ути­
+литы tar:
+□ v— вывести на экран информацию об архивируемом (или распаковываемом)
+в данный момент файле;
+□ z — найти и обработать при распаковке GZIP-архивы;
+□ р — разархивировать всю информацию о безопасности;
+□ d — найти различия между архивом и файлами системы;
+О t — просмотреть содержимое архива;
+□ и — обновить файлы в архиве, которые были изменены;
+□ n date — добавить в архив только те файлы, которые изменены позже указанной
+даты. Параметр date должен быть заменен необходимой датой;
+□ р — не удалять первый символ /. В этом случае, в каком каталоге вы ни запусти­
+те разархивирование, файлы попадут на свое родное место.
+С помощью утилиты tar можно архивировать сразу несколько каталогов. Следую­
+щая команда помещает в архив каталоги /home и /etc:
+tar cf backup.tar /home /etc
+Чтобы просмотреть содержимое архива, можно выполнить команду:
+tar tvf backup.tar
+В ответ на это на экране будут показаны все файлы и каталоги архива, их права
+доступа и владельцы.
+Посмотрите на последнюю колонку, где показано расположение файла. Обратите
+внимание, что путь не начинается с символа /, указывающего на корень диска. По­
+этому такой архив нужно распаковывать в корне, иначе он будет создаваться
+в текущем каталоге.
+С помощью tar очень удобно и легко создавать резервные копии, которые содержат
+только изменения. Для этого мы просто задаем ключ -д и указываем какой-то файл,
+который будет использоваться для отслеживания того, какие файлы уже резервиро­
+вались и какая версия уже находится в архиве.
+Давайте рассмотрим все это на примере:
+tar -cf backupO.tar -g home-flenov.snar /home/flenov
+Здесь:
+□ c — указывает на необходимость создания архива;
+□ f — указывает на то, что мы хотим задать определенное имя файла и это имя
+идет сразу после ключа: backupO.tar;
+□ g — указывает на то, что нужно копировать только изменения. После этого клю­
+ча надо указать файл, где будут храниться изменения. В качестве его имени я
+использую полный путь к нему, просто вместо слэшей указываю символ тире.
+Я заметил, что очень часто таким файлам дают расширение snar. Я точно не
+знаю, но мне кажется, что это объединение двух слов: sn, которое указывает
+на слово snapshot (снимок), и аг, которое указывает на архив tar. Возможно, я тут
+не прав, но в любом случае расширение может быть и другим;
+□ ну и в конце идет каталог, резервную копию которого вы хотите создать.
+Запустите команду: tar создаст полную резервную копию, если файл flenov.snar не
+существует.
+Теперь попробуйте изменить пару файлов или создать новый и снова выполнить
+команду:
+tar -cf backupl.tar -g home-flenov.snar /home/flenov
+Я увеличил число в имени файла архива с 0 до 1. В этот файл уже попадут только
+изменения с момента последней резервной копии.
+#### Утилита gzip
+В ОС Linux есть достаточно много различных утилит для упаковки данных. Наибо­
+лее популярной из них является gzip. Преимущество архивирования перед простой
+упаковкой данных заключается в том, что результирующая копия занимает меньше
+места, а значит, носитель для резервирования понадобится меньшего объема.
+Чаще всего копируются документы, размер которых в заархивированном виде мо­
+жет уменьшаться на 90%. Текстовые данные сжимаются намного лучше, чем про­
+граммы.
+Недостаток архивирования — возрастает нагрузка на процессор, и может потребо­
+ваться больше времени на создание полной копии. Однако за счет того, что архив
+занимает намного меньше места, его копирование на сетевые ресурсы или запись
+на съемные носители (ZIP, JAZ, CD-R/RW, DVD-R/RW и др.) производится быст­
+рее. В итоге может выйти, что затраты времени на копирование и процессорного
+времени на архивирование окажутся идентичны затратам на копирование без архи­
+вирования или даже меньше.
+Прежде чем сжимать какой-либо файл, рекомендуется подготовить TAR-архив. По­
+том достаточно выполнить команду упаковки:
+gzip -уровень файл.tar
+В качестве ключа -уровень нужно указать степень компрессии. Максимальный уро­
+вень равен 9. После этого указывается имя TAR-архива. Давайте сожмем архивный
+файл, который мы создали из каталога /home, применяя наибольшую компрессию.
+Выполните следующую команду:
+gzip -9 backup.tar
+Теперь просмотрите содержимое каталога (команда is). Обратите внимание, что
+файла backup.tar больше нет. Вместо него появился файл backup.tar.gz, размер кото­
+рого значительно уменьшился.
+Чтобы разархивировать такой файл, можно пользоваться все той же командой tar,
+только необходимо указать ключи xf z:
+cd /
+tar xfz /home/backup.tar. gz
+Эта команда сначала разархивирует GZ-файл и тут же распакует TAR-архив.
+Если необходимо из GZ-файла снова получить TAR-архив (без его распаковки), то
+можно выполнить команду:
+gzip -d /home/backup.tar.gz
+После этого вы снова увидите файл backup.tar, а файл backup.tar.gz исчезнет.
+Теперь вы готовы написать свой сценарий, который будет собирать каталоги для
+архивирования в TAR-файл, а затем сжимать его, чтобы уменьшить размер. Но
+можно не использовать две команды, а обойтись одной. Вот как это делается:
+tar cvf - /home | gzip -9с > backup.tar.gz
+Здесь мы собираем в TAR-архив каталог /home и тут же сжимаем его утилитой gzip.
+Помимо gzip для архивирования иногда используется утилита compress, но ее воз­
+можности по сжатию ниже, и к тому же вокруг нее возникали скандалы и разбира­
+тельства по поводу лицензии. Большинство администраторов уже перешли на ис­
+пользование gzip, и я вам рекомендую с самого начала привыкать к этой программе.
+#### Утилита dump
+Все предыдущие команды, которые мы рассматривали в этой главе, не являются
+специализированными командами резервирования. Это просто команды копирова­
+ния и архивирования файлов. А вот утилита dump предназначена именно для соз­
+дания резервной копии файловой системы Ext (поддерживаются версии, начиная со
+второй).
+Для выполнения резервной копии нужно как минимум указать:
+□ -п — уровень резервной копии, где п может изменяться от о до 9. При значе­
+нии о создается полная резервная копия. Уровни выше о означают формирова­
+ние резервной копии изменений, произошедших с момента последней полной
+резервной копии или создания копии с меньшим уровнем;
+□ -и— требование при удачном завершении резервирования обновить файл
+/etc/dumpdates, в котором хранятся даты создания резервных копий;
+□ -f файл— имя файла или устройство, на которое нужно производить резервное
+копирование.
+Итак, простейшая команда создания полной резервной копии выглядит следующим
+образом:
+dump -Ou -f /home/backup.bak
+Для сохранения изменений нужно изменить уровень, указав значение больше нуле­
+вого, например:
+dump — lu -f /home/backup.bak
+Для восстановления файлов из архива служит команда restore. Но прежде чем ее
+запускать, вы должны убедиться, что находитесь в каталоге, который принадлежит
+восстанавливаемой файловой системе.
+В команде restore достаточно только указать ключ -f и файл, который нужно вос­
+становить. Если применить ключ -i, то вы попадаете в интерактивный режим,
+в котором можно задать файлы для восстановления. Интерактивный режим похож
+на режим командной строки, только вместо реальной файловой системы в нем вы
+путешествуете по архиву. При этом можно выполнять следующие директивы:
+□ help — вывести краткую помощь по доступным командам;
+□ is — отобразить содержимое текущего каталога;
+□ pwd — показать текущий каталог;
+□ add каталог — добавить в список для восстановления указанный в качестве ар­
+гумента каталог;
+□ cd — сменить текущий каталог;
+□ delete каталог — удалить из списка восстановления каталог, указанный в каче­
+стве параметра;
+□ extract — восстановить все файлы из созданного списка;
+□ quit — ВЫХОД.
+
+#==========================================
+### CHAGE
+
+Как заставить пользователя менять пароли через определенные промежутки време­
+ни? Нет, не нужно ходить и нудить ему над ухом — есть способ проще и намного
+эффективнее. В Linux имеется утилита chage, которая запускается следующим об­
+разом:
+chage параметры пользователь
+В качестве параметра можно указывать следующие ключи:
+□ -mN— минимальное число дней (n ) д о смены пароля. Указав это значение чуть
+меньше, чем максимальный период (см. следующий параметр), вы защитите
+систему от нежелательной смены паролей. Это значит, что если хакер захватит
+учетную запись, он не сможет изменить пароль. Конечно же, злоумышленник
+тоже может выполнить команду chage, но только если у него есть права админи­
+стратора. Три-четыре дня разницы между минимальным и максимальным значе­
+нием необходимы для того, чтобы пользователь смог сменить пароль, пока он не
+устарел. Устанавливать разницу меньше трех дней нежелательно, потому что
+существуют выходные, и если срок действия попадет на воскресенье, пользо­
+ватель не успеет сменить пароль. По умолчанию используется значение -1, что
+соответствует отсутствию проверки;
+□ -м N — максимальный диапазон в днях (n ), в течение которого действует пароль.
+После этого пароль считается недействительным, и пользователь не сможет вой­
+ти в систему. По умолчанию установлено 99999, что соответствует бесконечно­
+сти, а значит, пароль никогда не устареет;
+□ -d N— дата последнего изменения пароля. Параметр N указывает количество
+дней начиная с 1 января 1970 года. Если установить юоо, то получится 27 сен­
+тября 1972 года. Чтобы не высчитывать дату в днях, можно указать ее явным
+образом в формате ГГГГ-ММ-ДЦ;
+□ -Е дата — дата окончания действия пароля;
+□ -I N— период в днях, после которого неиспользуемая учетная запись блокиру­
+ется. Рекомендую указать не менее 3 и не более 4 дней, чтобы приостановить
+действие записи на время отпуска или болезни работника;
+□ -w n — количество дней до окончания срока действия пароля, когда пользовате­
+лю будет выводиться предупредительное сообщение. Нежелательно указывать
+менее 3 дней, чтобы не попасть на выходные;
+□ -1 пользователь — с этим параметром команда может вызываться любыми поль­
+зователями и позволяет им узнать информацию о времени жизни их пароля.
+Чтобы получить сведения о пароле root, выполните директиву:
+chage -1 root.
+Результат выполнения команды имеет следующий вид:
+Password Expires: Never
+Password Inactive:Never
+Minimum:
+-1
+Maximum:
+99999
+Warning:
+Inactive:
+-1
+-1
+Last Change:
+Feb 04, 2004
+Account Expires:
+Never
+Здесь отображаются следующие значения:
+• Minimum — минимальный срок действия пароля;
+• Maximum— максимальный период для пользования паролем;
+• warning— количество дней, за которые будет выдаваться предупреждение
+о завершении срока действия пароля;
+• inactive— максимальное количество дней, в течение которых учетная за­
+пись может не активироваться;
+• Last change — последняя дата изменения;
+• Password Expires — дата окончания действия пароля;
+• Password inactive — дата, когда пароль стал неактивным;
+• Account Expires — дата окончания действия учетной записи.
+Чтобы задать максимальное количество дней жизни пароля в 60 дней, выполните
+команду:
+chage -М 60 robert
+Слишком частая смена паролей приводит к тому, что пользователи просто не успе­
+вают запомнить их. Из-за этого сложные комбинации начинают писать на бумаге,
+чтобы случайно не забыть, или просто меняют пароль на старый. Ваша задача —
+контролировать замену, и в то же время не стоит заставлять пользователя делать
+это слишком часто. Период в 2-3 месяца (или 60-90 дней) считается вполне прием­
+лемым.
+А как проверить, что выбран достаточно сложный пароль и при этом не указан снова
+старый? В этом нам поможет РАМ-модуль pam_cracklib.so, который выполняет
+основные проверки и позволяет сделать их сложнее. Например, нельзя будет устано­
+вить старый пароль или воспользоваться большей его частью.
+
+#==========================================