Как быстро и эффективно редактировать файлы конфигурации в Linux
Оригинал: How to Effectively and Efficiently Edit Configuration Files in Linux
Автор: Jack Wallen
Дата публикации: 30 сентября 2016 г.
Перевод: А.Панин
Дата перевода: 3 декабря 2016 г.
Jack Wallen описывает инструменты с интерфейсом командной строки, которые значительно повышают эффективность работы с файлами конфигурации.
Каждый администратор Linux-систем рано или поздно столкнется с необходимостью редактирования файлов конфигурации (в ручном режиме). Не важно, настраиваете ли вы веб-сервер, устанавливаете ли параметры службы для соединения с базой данных, дорабатываете ли сценарий командной оболочки или настраиваете соединение с сетью — в любом случае вы не сможете обойтись без редактирования одного или нескольких файлов конфигурации системы. При этом для некоторых системных администраторов перспектива редактирования конфигурационных файлов системы в ручном режиме сродни ночному кошмару. Действительно, разбор на первый взгляд невообразимого количества строк с значениями параметров конфигурации и комментариями может привести к потере волос и самообладания.
На самом деле, все не так печально. Фактически, большинство администраторов Linux-систем выполняют задачи, связанные с отладкой или конфигурацией приложений с большим энтузиазмом. Исследование особенностей функционирования серверов и прикладных приложений является отличным времяпрепровождением. При этом описанные действия не должны осуществляться с помощью малоэффективных инструментов. Стоит помнить о том, что каждому систмному администратору доступны специализированные инструменты, которые претерпели множество эволюционных изменений с целью максимального упрощения процесса редактирования файлов конфигурации. Я собираюсь описать несколько таких инструментов, позволяющих немного упростить вашу профессиональную деятельность в роли администратора Linux-систем. В первую очередь я предлагаю обсудить инструменты с интерфейсом командной строки, которые просто необходимы в том случае, если вы хотите оптимизировать процесс редактирования файлов конфигурации системы.
Ну что же, давайте приступим к рассмотрению описанных инструментов.
Если вы никогда не использовали утилиту diff ранее, вы наверняка не подозреваете о том, что теряли. Утилита diff предназначена для решения простой задачи: она сравнивает один файл с другим и выводит информацию об их различиях. Позвольте мне объяснить более подробно.
Представьте, что у вас имеются два файла конфигурации. Файл File1 содержит следующий текст:
Файл File2 — следующий текст:
Если вы имеете дело с файлами с подобным содержимым, вы без труда сможете открыть их с помощью любого текстового редактора и самостоятельно найти различия в содержимом. Но что делать в том случае, если в данные файлы будут добавлены тысячи дополнительных строк с комментариями и другими значениями параметров конфигурации программного обеспечения? Да, внезапно данная простая задача станет более сложной.
Благодаря существованию утилиты diff мы сможем без каких-либо сложностей найти различия между этими файлами. Если мы откроем окно терминала и выполним с помощью него команду diff File1 File2 , мы увидим следующий вывод, четко отражающий различия между ними (Рисунок 1).
Рисунок 1: Утилита diff выводит информацию о различиях между файлами File1 и File2.
Вам следует обращать особое внимание на буквы a , c и d , причем:
- a обозначает, что строка была добавлена
- c обозначает, что строка была изменена
- d обозначает, что строка была удалена
В данном примере несложно обнаружить строку вывода 1c1 , которая обозначает, что строка 1 была изменена во втором файле.
Вывод утилиты diff является немного неочевидным, так как он предназначен для чтения специализированным программным обеспечением, а не людьми. Эта утилита была разработана с целью получения информации о том, как нужно модифицировать файлы для того, чтобы синхронизировать их содержимое. Однако, важно понимать, что в ее выводе отражаются лишь те строки файлов, которые различаются. В нашем примере все строки файлов являются идентичными за исключением их первых строк, точнее их фрагментов, а именно «/var/www» в первом файле и «/var/www/html» во втором. Использование утилиты diff значительно упрощает поиск различий между двумя файлами конфигурации. Конечно, утилита diff является гораздо более сложной, но понимание данного фундаментального приема ее использования может значительно облегчить задачу поиска различий в файлах.
Мы можем изменить содержимое файла File2 следующим образом:
В этом случае вывод утилиты diff будет более сложным. Чтобы упростить его, мы можем выполнить команду diff -c File1 File2 . Параметр c позволяет активировать контекстный формат вывода, который гораздо проще читается (Рисунок 2).
Рисунок 2: Более сложный вывод команды diff в более простом для понимания формате благодаря наличию параметра c.
В данном случае утилита diff выводит информацию о том, что строки 1 и 4 из файла File1 и строки 1 и 3 файла File2 отличаются. Теперь вы можете внести все необходимые изменения в них.
Утилита grep наверняка является одной из первых утилит, изученных вами в процессе подготовке к исполнению обязанностей администратора Linux-систем. Без нее вы будете, как в известной поговорке, искать иголку в стогу сена, особенно при редактировании сложных файлов конфигурации. Представьте, что вам нужно, к примеру, деактивировать директиву EnableSendfile в файле конфигурации веб-сервера Apache из состава дистрибутива CentOS. В этом случае вы можете либо открыть файл конфигурации /etc/httpd/httpd.conf с помощью любого текстового редактора и прокручивать его содержимое до момента появления нужной директивы, либо выполнить команду grep -n EnableSendfile /etc/httpd/conf/httpd.conf .
Утилита grep всего лишь выводит номера строк, которые совпадают с поисковым запросом. Да, все настолько просто. Однако, в случае добавления параметра -n она будет также выводить номера строк, в которых встречается поисковый запрос. В нашем случае утилита grep сообщает нам о том, что директива EnableSendfile встречается в строках под номерами 340, 346 и 349 (Рисунок 3).
Рисунок 3: Использование утилиты grep для поиска директивы в файле конфигурации.
Если вы используете такой текстовый редактор, как nano , для редактирования файлов конфигурации, вы можете открыть файл /etc/httpd/conf/httpd.conf , пролистать его содержимое немного вниз и воспользоваться сочетанием клавиш Ctrl+c для получения информации о текущем номере строки. Вам придется пролистывать содержимое файла до появления строки, которую нужно отредактировать. Также вы можете открыть этот файл в nano с использованием параметра -c для постоянного вывода номера текущей строки (без необходимости использования упомянутого сочетания клавиш — Рисунок 4).
Рисунок 4: Текстовый редактор nano выводит номер текущей строки.
Утилита grep является чрезвычайно мощной. Обратитесь к странице руководства (man grep) для получения информации обо всех возможностях данного полезного инструмента.
Подбор подходящего текстового редактора с графическим интерфейсом
Некоторые люди предпочитают использовать приложения с графическим интерфейсом вместо приложений с интерфейсом командной строки. Хотя я и настоятельно рекомендую вам разобраться с интерфейсом командной строки системы, существуют ситуации, в которых приложения с графическим интерфейсом могут значительно упростить решение задачи. В качестве примера такого приложения можно рассмотреть текстовый редактор GEdit. Этот текстовый редактор из состава окружения рабочего стола GNOME позволяет изменять параметры механизма подсветки синтаксиса в процессе работы с файлом и, следовательно, может достаточно просто адаптироваться к особенностям файла конфигурации, с которым вы работаете.
Представьте, что вы открыли файл конфигурации /etc/httpd/conf/httpd.conf с помощью GEdit. Так как данный файл конфигурации является по своей сути обычным текстовым файлом, GEdit будет использовать режим подсветки синтаксиса «Текст» после его открытия (другими словами, вообще не будет активировать механизм подсветки синтаксиса). Вы можете выбрать подходящий режим подсветки синтаксиса с помощью раскрывающегося меню в строке состояния в нижней части окна. Если вы выберите режим «PHP», будет осуществляться подсветка всех синтаксических конструкций данного языка программирования, а также тэгов HTML (Рисунок 5).
Рисунок 5: Активация механизма подсветки синтаксиса для упрощения процесса редактирования файла конфигурации.
На данный момент существует огромное количество достойных текстовых редакторов, которые могут немного упростить процесс редактирования сложных файлов конфигурации. Начните работу с инструмента, поставляемого в составе вашего окружения рабочего стола по умолчанию и оцените его пригодность для выполнения описанной работы в вашем случае. Если вас не устроит данный инструмент, вы всегда сможете открыть менеджер пакетов программного обеспечения и найти текстовый редактор, который удовлетворит все ваши потребности (такой, как Sublime Text , Geany или Leafpad ).
Не позволяйте системе подавить вас
Вы можете значительно упростить процесс редактирования конфигурационных файлов Linux-системы с помощью нескольких простых инструментов. Начав использовать их, вы со временем сможете подобрать другие инструменты, которые будут лучше совместимы с вашим рабочим процессом. В конце концов вы сможете собрать мощный инструментарий, позволяющий редактировать файлы конфигурации на профессиональном уровне. И не в коем случае не забывайте о страницах руководств используемых инструментов!
Источник
Read configuration file linux
Информация взята из [1].
/etc/profile | RHL, FBSD | Системные настройки окружения — скрипт, выполняющийся при старте системы. |
/dev/MAKEDEV | RHL | Файл /dev/MAKEDEV является скриптом, написанным системным администратором. Этот создает только файлы локальных устройств или ссылки на них, такие как нестандартные драйверы устройств. |
/etc/aliases | RHL, FBSD | Псевдонимы имен пользователей, соответствующие никнеймам для e-mail. |
/etc/bootptab | Конфигурация демона сервера BOOTP. | |
/etc/crontab | RHL, FBSD | Список команд и времени их выполнения для запуска (назначенные задания для демона cron). |
/etc/dhcpd.conf | Файл конфигурации для демона сервера DHCP. | |
/etc/ethers | Файл соответствия MAC-адресов IP-адресам (RARP mapping). См. man ethers(5). | |
/etc/exports | RHL | Файл, описывающий экспотированные файловые системы для сервисов NFS. |
/etc/fdprm | RHL | Таблица параметров для floppy-диска. Описывает форматы различных floppy-дисков. Используется setfdprm. |
/etc/filesystems | RHL | Может использоваться для установки последовательности filesystem probe, когда файловые системы монтируются с опцией auto. Параметр nodev указывается для файловых систем, которые не монтируются реально-локально, такие как proc, devpts и системы nfs. |
/etc/fstab | RHL, FBSD | Список файловых систем, автоматически монтируемых при загрузке системы командой mount -a (может эквивалентно использоваться /etc/rc или другой файл, участвующий в автозапуске). |
/etc/group | RHL, FBSD | Файл, описывающий группы пользователей (по аналогии /etc/passwd). |
/etc/groups | Может содержать пароли, которые позволяют пользователю присоединиться к группе. | |
/etc/gshadow | RHL | Используется для хранения пароля группы и информацию group administrator password для теневых паролей. |
/etc/host.conf | RHL, FBSD, ASPL | Указывает, каким образом должны разрешаться имена хостов. Список опций определителя (resolver) адресов. |
/etc/hosts | RHL, FBSD, ASPL | Список хостов для преобразования имен в IP-адреса (обычно нужно для хостов локальной сети, о которых не знает система DNS). |
/etc/HOSTNAME | Задает имя для рабочей станции. Используется для поддержки старых программ, которые сохраняют имя хоста в файле /etc/sysconfig/network. | |
/etc/inittab | RHL | Конфигурационный файл для процесса init, управляющий ходом уровней загрузки (startup run levels) — указывает скрипты, которые запускаются на каждом уровне. |
/etc/inetd.conf | FBSD | Настраивает службы, которые обрабатываются демоном inetd. |
/etc/issue | RHL | Вывод getty перед выдачей приглашения логина (login prompt). Описание приглашающего сообщения (welcoming message). |
/etc/issue.net | RHL | Вывод для сетевых логинов (версия LINUX). |
/etc/ld.so.conf | RHL | Конфигурационный файл ld.so, run time linker. |
/etc/lilo.conf | Конфигурационный файл для LILO (LInux LOader, начальный загрузчик операционных систем). | |
/etc/limits | Ограничения пользовательских ресурсов, когда установлена система shadow passwords. | |
/etc/localtime | RHL, FBSD | В Debian здесь хранится линк на информацию о временнОй зоне системы. У меня на Red Hat 4 команда more /etc/localtime выдавала кракозябрики — походу это какой-то двоичный файл. |
/etc/login.defs | RHL | Устанавливает пользовательские опции (user login features) на системах, где работает shadow passwords. |
/etc/logrotate.conf | RHL | Настраивает ротацию логов (управление логами, их архивирование). |
/etc/magic | Конфигурационный файл для типов файлов. Содержит описания различных форматов файлов для командной оболочки. Почему-то на Red Hat 4 я такого файла не нашел, зато были похожие файлы /etc/mime-magic и /usr/share/magic | |
/etc/motd | RHL, FBSD | Сообщение дня (message of the day), автоматически выводящееся при успешном логине. |
/etc/mtab | RHL | Список смонтированных файловых систем в настоящий момент времени. Настраивается скриптом загрузки и обновляется командой mount. |
/etc/named.conf | Используется серверами доменных имен, DNS (named). | |
/etc/networks | FBSD | Список имен и адресов сетей, как ваших собственных, так и других. Связывает доменные имена с адресами сетей. Используется командой route. |
/etc/nologin, /sbin/nologin | RHL, FBSD | Если этот файл существует, то запрещен логин всех пользователей, кроме root. Обычно создается, когда система уходит в отключение. |
/etc/nsswitch.conf | RHL, FBSD | Конфигурационный файл name service switch. |
/etc/passwd | RHL, FBSD | База данных пользователей с полями, определяющий логин (username), реальное имя, домашний каталог (home directory), зашифрованный пароль (encrypted password, а точнее — хеш от него, вычисленный по известному алгоритму, например MD5) и другую информацию по каждому пользователю. |
/etc/printcap | RHL, FBSD | Конфигурационный файл для принтеров. |
/etc/profile | RHL, FBSD | Файл, выполняемый шеллом Bourne или C при логине пользователя или загрузке системы. Это позволяет администратору системы настроить глобальные установки по умолчанию для каждого пользователя отдельно. |
/etc/protocols | RHL, FBSD, ASPL | Описывает протоколы Internet DARPA, доступные из подсистемы TCP/IP. Привязывает номера ID протокола (порт) к именам протоколов. |
/etc/rc или /etc/rc.d или /etc/rc?.d | RHL, FBSD | Скрипты или директории со скриптами, которые запускаются при загрузке системы или когда меняется уровень процесса загрузки. |
/etc/rc.d/rc0.d | Содержит файлы, упраляющие уровнем загрузки 0 (run level 0). Обычно эти файлы являются мягкими файловыми ссылками (softlink files). | |
/etc/rc.d/rc1.d | RHL | Содержит файлы, упраляющие уровнем загрузки 1 (run level 1). Скрипты, начинающиеся с S нужны для старта (Start), а начинающиеся с K — для останова (Kill). |
/etc/rc.d/rc.sysinit | RHL | Процесс init запускает этот файл при своем старте. |
/etc/rc.d/init.d/inet | Сценарий, конфигурирующий при начальной загрузке сетевой интерфейс. | |
/etc/resolv.conf | RHL, FBSD, ASPL | Настраивает распознаватель имен (name resolver) — здесь указываются адрес (или адреса), сервера имен (DNS) и ваше доменное имя. Список имен серверов имен, IP-адресов (поле Name-server) и имен доменов, по которым можно найти удаленные системы (поле Search). |
/etc/securetty | RHL | Идентифицирует защищенные терминалы (secure terminals), с которых администратору root можно войти в систему (log in). |
/etc/services | RHL, FBSD, ASPL | Перечисляет сетевые сервисы, которые система поддерживает. |
/etc/shadow | RHL | Файл shadow password на системах, где установлено ПО shadow password software. Shadow passwords перемещают move файлы с зашифрованными паролями из /etc/passwd в /etc/shadow который может читать только root. |
/etc/shadow.group | Системы с установленным ПО shadow passwords могут иметь этот файл. | |
/etc/shells | RHL, FBSD | Список доверяемых шеллов (trusted shells). Команда chsh позволяет пользователям изменить свой логин-шеллна шелл, который перечислен только в этом файле. |
/etc/skel/.profile | Может использоваться администратором для установки переменной окружения редактора (editor environment variable) для того, чтобы сделать некоторые редакторы дружественными для новых пользователей. | |
/etc/sudoers | RHL | Список пользователей со специальными привилегиями для команд, которые они могут выполнять. |
/etc/smb.conf или /etc/samba/smb.conf | RHL | Конфиг для настроек сервисов Samba (сетевая стистема обмена файлами Windows). |
/etc/sysconfig/amd | Используется для конфигурирования демона автомонтирования (auto mount daemon). | |
/etc/sysconfig/clock | RHL | Используется для конфигурирования системных часов (system clock) на универсальное (Universal) или локальное время (local time) и установки некоторых других параметров часов. |
/etc/sysconfig/i18n | RHL | Управляет настройками системного шрифта. |
/etc/sysconfig/init | RHL | Этот файл используется для установки некоторых характеристик терминала и переменных окружения (environment variables). |
/etc/sysconfig/keyboard | RHL | Используется для конфигурирования клавиатуры. |
/etc/sysconfig/mouse | RHL | Используется для конфигурирования мыши. |
/etc/sysconfig/pcmcia | RHL | Используется для конфигурирования сетевых карт pcmcia. |
/etc/rc.d/routed, /usr/src/etc/rc.d/routed | FBSD | Настраивает политики динамической маршрутизации. |
/etc/syslog.conf | RHL, FBSD | Конфигурационный файл для демона syslogd. |
/etc/termcap | RHL, FBSD | База данных совместимости терминалов. Описывает управляющие ESC-последовательности (escape sequences), поддерживаемые различными терминалами. См. man-справку по terminfo, termcap, curs_termcap. |
/etc/terminfo | Детализирует ввод/вывод терминала (terminal I/O). | |
/etc/usertty | Этот файл используется для наложения специальных ограничений доступа для пользователей. | |
$HOME/.bashrc | RHL | Алиасы пользователей, модификаторы путей, функции. |
$HOME/.bash_profile | RHL | Содержимое пользовательского окружения (users environment stuff) и автозапускаемые программы. |
$HOME/.bash_logout | RHL | Пользовательские действия, которые выполняются при выходе из системы (logout). |
$HOME/.hushlogin | Когда этот файл существует в домашней папке пользователя, то запрещена проверка почты, печать времени последнего логина и «сообщения дня» в момент, когда пользователь входит в систему. | |
$HOME/.inputrc | Содержит клавиатурные привязки (keybindings) и кое-что еще. | |
$HOME/Xrootenv.0 | Информация о сети и окружении. | |
/proc/cpuinfo | RHL | Информация о типе процессора, о его производителе и быстродействии. |
/proc/devices | RHL | Список устройств, сконфигурированных в ядре, работающем в настоящий момент. |
/proc/dma | RHL | Показывает, какие каналы DMA используются в настоящий момент. |
/proc/filesystems | RHL | Файловые системы, которые сконфигурированы в ядре. Используется для детектирования файловых систем, если файл /etc/filesystems не существует. |
/proc/ioports | RHL | Показывает, какие порты ввода/вывода (I/O ports) находятся в использовании в настоящий момент. |
/proc/interrupts | RHL | Показывает, какие прерывания сейчас используются и насколько часто. |
/proc/kcore | RHL | Образ физической памяти системы. Команда more /proc/kcore выдает сообщение «Operation not permitted». |
/proc/kmsg | RHL | Вывод сообщений ядра, которые перенаправляются в syslog. |
/proc/ksyms или /proc/kallsyms | RHL | Таблица символов ядра (у меня на Red Hat команда more /proc/ksyms почему-то выдавала No such file or directory). |
/proc/loadavg | RHL | Статистика по средней загруженности системы. |
/proc/meminfo | RHL | Информация по использованию памяти — физической и файла подкачки. |
/proc/modules | RHL | Информация о том, какие модули ядра загружены в память в настоящий момент. |
/proc/mounts | RHL | Содержит информацию о файловых системах, смонтированных в настоящее время. Информация сходна с файлом /etc/mtab. |
/proc/net | RHL | Папка, которая содержит статусную информацию о сетевых протоколах. Каждый файл в папке соответствует определенному протоколу (arp, tcp и т. д.). |
/proc/self | RHL | Символическая ссылка на директорию процессов программ, указывающая на /proc. Когда 2 процесса смотрят на proc, они получают разные ссылки. |
/proc/stat | RHL | Разнообразная статистика о системе, например количество ошибок страниц (page faults) с момента начала работы системы. |
/proc/uptime | RHL | Время нахождения системы в рабочем состоянии. |
/proc/version | RHL | Версия ядра. |
/tmp/fvwmrca01339 | Задает FVWM-M4. Содержит информацию о сети, подсистеме Xwindows и другую информацию о настройках. | |
/usr/lib/zoneinfo или /usr/share/zoneinfo | RHL, FBSD | Файлы данных временнОй зоны, которые сохраняет здесь система Debian. |
/var/log/lastlog | RHL, FBSD | Используется finger чтобы сказать пользователю о времени последнего входа в систему. |
/var/log/wtmp | RHL, FBSD | Двоичная информация о пользователях, вошедших в систему. Команда last использует эту информацию. |
/var/run/utmp | RHL, FBSD | Содержит информацию о пользователях, залогиненных в системе в настоящий момент. Команды who и w используют этот файл. |
/var/named/root.hints | ||
/var/named/* | FBSD | Файлы, используемые сревером доменных имен (DNS). Размещение тут опционально, однако здесь нормальное месторасположение этой информации. |
/var/log/btmp | Используется для сохранения информации о неудачных логинах. Этот файл должен быть одинажды создан вручную, чтобы информация начала накапливаться. | |
/var/log/lastlog | RHL, FBSD | Содержит информацию о последнем времени успешного логина в систему. Работает с lastb(1). |
/var/log/maillog | RHL, FBSD | Нормальный системный файл почтового лога. |
/var/log/messages | RHL, FBSD | Основной файл лога системных сообщений. |
/var/log/secure | RHL | Системное отслеживание входов пользователя в систему. Периодически проверяйте этот файл. |
/var/spool/mail | RHL | Место, где обычно хранятся почтовые ящики. Каждому пользователю соответствует свой файл (например, почта root хранится с файле /var/spool/mail/root). Почту также можно посмотреть командой mail. |
/etc/ftpusers | RHL, FBSD | По умолчанию путь и имя для файла ftpusers. В этом файле указываются имена пользователей, которым запрещен вход в систему через ftp. Среди таких пользователей обычно root, daemon, bin, uucp и news. |
Примечание:
RHL == Red Hat Linux 4
FBSD == FreeBSD 6.3
ASPL == ASPLinux 10
Источник