Что такое конфигурационный файл
В вычислениях , файлы конфигурации (обычно известные просто как файлы конфигурации ) - это файлы , используемые для настройки параметров и начальных настроек для некоторых компьютерных программ . Они используются для пользовательских приложений , серверных процессов и настроек операционной системы .
Некоторые приложения предоставляют инструменты для создания, изменения и проверки синтаксиса своих файлов конфигурации; иногда они имеют графический интерфейс. Что касается других программ, от системных администраторов можно ожидать, что они будут создавать и изменять файлы вручную с помощью текстового редактора, что возможно, потому что многие из них представляют собой простые текстовые файлы, редактируемые человеком. Для серверных процессов и настроек операционной системы часто нет стандартного инструмента, но операционные системы могут предоставлять свои собственные графические интерфейсы, такие как YaST или debconf .
. Некоторые компьютерные программы только читают свои файлы конфигурации. при запуске . Другие периодически проверяют файлы конфигурации на предмет изменений. Пользователи могут дать указание некоторым программам перечитать файлы конфигурации и применить изменения к текущему процессу или действительно прочитать произвольные файлы в качестве файла конфигурации. Нет никаких окончательных стандартов или строгих соглашений.
Содержание
Файлы конфигурации и операционные системы
Unix и Unix-подобные операционные системы
Почти все форматы допускают комментарии , и в этом случае отдельные настройки можно отключить, добавив перед символом комментария . Часто файлы конфигурации по умолчанию содержат обширную внутреннюю документацию в виде комментариев, а файлы man также обычно используются для документирования формата и доступных опций.
Общесистемное программное обеспечение часто использует файлы конфигурации, хранящиеся в /etc, в то время как пользовательские приложения часто используют «точечный файл » - файл или каталог в домашнем каталоге с префиксом период , который в Unix скрывает файл или каталог из случайного списка.
Некоторые файлы конфигурации запускают набор команд при запуске. По общему соглашению такие файлы должны иметь в своем имени « rc », обычно с использованием имени программы, а затем суффикса « (.) Rc », например « .xinitrc », « .vimrc », « .bashrc », « xsane.rc ». Подробнее см. команды выполнения .
Напротив, IBM AIX использует базу данных Object Data Manager (ODM) для хранения большей части своих системных настроек.
MS-DOS
MS-DOS в первую очередь полагалась только на один файл конфигурации, CONFIG.SYS . Это был простой текстовый файл с простыми парами ключ-значение (например, DEVICEHIGH = C: \ DOS \ ANSI.SYS ) до MS-DOS 6, в которой был представлен формат стиля INI-файла. Также был стандартный текстовый командный файл с именем AUTOEXEC.BAT , который запускал серию команд при загрузке . Оба этих файла сохранялись до Windows 98SE , которая по-прежнему работала поверх MS-DOS.
Пример CONFIG.SYS для MS-DOS 5:
Приложения DOS использовали большое количество отдельных файлов конфигурации, большинство из них двоичные, проприетарные и недокументировано - и не было общих соглашений или форматов.
Microsoft Windows
Раннее семейство операционных систем Microsoft Windows сильно используются простые текстовые файлы INI (от "инициализации"). Они служили основным механизмом для настройки операционной системы и функций приложения. API-интерфейсы для чтения и записи из них все еще существуют в Windows, но после 1993 года Microsoft начала уводить разработчиков от использования файлов INI в сторону хранения настроек в реестре Windows , иерархической структуре. база данных для хранения параметров конфигурации, которая была представлена в том же году с Windows NT .
macOS
Список свойств - это стандартный формат файла конфигурации в macOS (а также в приложениях iOS , NeXTSTEP , GNUstep и Cocoa ). Он использует расширение имени файла .plist .
IBM OS / 2
IBM OS / 2 использует двоичный формат, также с суффиксом .INI , но это отличается от версий для Windows. Он содержит список списков нетипизированных пар "ключ-значение". Два файла управляют общесистемными настройками: OS2.INI и OS2SYS.INI. Разработчики приложений могут выбрать, использовать ли их или создать определенный файл для своих приложений.
Форматы сериализации
Существует ряд универсальных форматов сериализации , которые могут представлять сложные структуры данных в легко сохраняемом формате, и они часто используются в качестве основы для файлы конфигурации, особенно в программных приложениях и библиотеках с открытым исходным кодом и платформенно-нейтральных . спецификации , описывающие эти форматы, обычно становятся общедоступными, что увеличивает доступность парсеров и эмиттеров для разных языков программирования.
Подавляющее большинство используемых нами компьютерных программ — будь то офисные пакеты, веб-браузеры или даже видеоигры — настраиваются через систему интерфейсов меню. Это стало практически стандартным способом использования наших машин. Но некоторые программы требуют, чтобы вы сделали шаг за этим, и вам действительно нужно отредактировать текстовый файл, чтобы заставить их работать так, как вы хотите.
Эти текстовые файлы, что неудивительно, называются «конфигурационными файлами». Если вы хотите перейти от «пользователя» к «продвинутому пользователю», вам нужно знать, как их настроить.
Что такое файлы конфигурации?
Прежде чем мы углубимся в технические подробности, давайте сначала конкретно определим, что такое файл конфигурации.
Файлы конфигурации — это, по сути, файлы, которые содержат информацию, необходимую для успешной работы программы, которые структурированы особым образом. Вместо того, чтобы быть жестко запрограммированными в программе, они настраиваются пользователем и, как правило, хранятся в текстовом файле (хотя ранее я видел программы, которые использовали базы данных SQLite. как их конфигурационные файлы).
Удивительно, но не существует определенного стандарта о том, как должны работать файлы конфигурации или как они должны выглядеть. Это полностью зависит от прихоти разработчика программы.
Некоторые конфигурационные файлы структурированы в формате собственного дизайна разработчика. Другие используют широко известные стандарты, используемые для структурирования данных, такие как формат JSON (нотация объектов JavaScript), YAML (язык разметки YAML) или XML (расширяемый язык разметки). Некоторые программы загружают информацию, хранящуюся в их конфигурационных файлах, когда они запускаются, в то время как другие периодически проверяют, была ли она изменена.
Если вы пользователь Linux, вы, вероятно, будете знакомы с ними, так как многие основные задачи обслуживания требуют редактирования файлов конфигурации. Если вы хотите настроить GRUB для двойной загрузки вашей системы загрузку загрузку или настройке веб-сервера настроить веб-сервер , вам придется иметь дело с ними.
Хотя это не исключительно Linux вещь. В зависимости от того, что вы делаете, вам, возможно, придется редактировать их в Windows или Mac OS X.
Как выглядят файлы конфигурации?
Теперь давайте взглянем на некоторые реальные конфигурационные файлы. Как мы упоминали ранее, они бывают разных форм и размеров. Один файл конфигурации, с которым вы почти наверняка знакомы, — это файл hosts, который используется в Windows, Mac и Linux для сопоставления IP-адресов с именами узлов вручную.
В Windows вы можете найти его в папке c: \ windows \ system32 \ drivers \ etc \ hosts . На Mac и Linux это будет в / etc / hosts .
Как вы заметите, файл hosts использует пробелы для разделения элементов, причем каждое имя хоста имеет свою собственную строку. Кроме того, файл hosts позволяет пользователю добавлять аннотации и комментарии, которые начинаются с символа хеша.
В Linux и Mac OS X некоторые программы требуют, чтобы пользователь сохранял файл конфигурации в домашнем каталоге с точкой в начале имени файла. Эти конфигурационные файлы иногда имеют расширение .rc, и в разговорной речи называются «точечные файлы».
Одна из программ, которая следует этому конкретному соглашению, — текстовый редактор Vim . В прошлом мы говорили о том, как настроить VIM, отредактировав его конфигурационный файл настроек настроек
Файлы конфигурации даже используются в видеоиграх для определения и управления некоторыми действиями, такими как сопоставления клавиш. Конфигурационный файл ниже взят из Black Mesa — фанатского ремейка оригинального Half Life .
В оригинальной версии Deus Ex , выпущенной в 2000 году, пользователю фактически пришлось отредактировать файл конфигурации, чтобы включить читы!
Как редактировать файлы конфигурации
Итак, теперь мы знаем, для чего используются файлы конфигурации, давайте поговорим о том, как мы можем их редактировать.
Для этого вам понадобится текстовый редактор. Не используйте текстовый процессор, так как они могут добавить форматирование в файл, что помешает их чтению программой.
Пользователи Windows уже имеют предустановленный текстовый редактор. Я говорю о блокноте. Хотя стоит подчеркнуть, что для Windows существует множество отличных текстовых редакторов сторонних производителей, включая Notepad ++, Atom и Sublime Text Editor.
В Linux наиболее близким аналогом Notepad является Gedit . Вы также можете рассмотреть возможность использования текстового редактора командной строки, такого как Nano или Vim . Ради большей эффективности я сильно склоняюсь к текстовому редактору Vim. Это позволяет мне легко переходить на разные позиции в файле конфигурации, просто используя всего несколько нажатий клавиш.
В Mac OS X (или MacOS Sierra, скоро станет известно, ), есть несколько текстовых редакторов, которые поставляются предварительно установленными. Вы, вероятно, знакомы с TextMate. Он также включает несколько текстовых редакторов командной строки, таких как Vim и Nano.
Когда вы редактируете файл, важно убедиться, что вы соблюдаете его соглашения. Это можно решить, просто взглянув на это. Некоторые конфигурационные файлы, такие как файл hosts, объяснят вам эти соглашения. Другие заставят вас прочитать некоторую документацию или пару постов в блоге.
Наконец, если редактируемый файл конфигурации структурирован в формате JSON или XML, вы можете использовать более мощный текстовый редактор с подсветкой синтаксиса. Я рекомендую Атом. Это повысит вашу точность, показывая, когда вы допустили ошибку.
Что, если это не работает?
Наконец, давайте коснемся того, что происходит, когда что-то идет не так. По моему опыту, проблемы, связанные с редактированием конфигурационных файлов, имеют тенденцию делиться на два лагеря.
Первый — это разрешения. Если вы не можете сохранить свои изменения, это может быть потому, что вы пытаетесь сделать это как обычный пользователь. Чтобы предотвратить случайное повреждение, многие конфигурационные файлы доступны для редактирования только тем, у кого есть права администратора.
В Windows щелкните правой кнопкой мыши Блокнот (или любой текстовый редактор, который вы используете) и выберите Запуск от имени администратора .
Вторая распространенная проблема — ошибка пользователя. Если что-то не работает, это может быть ваша вина. Убедитесь, что вы не сделали никаких опечаток, и что вы следовали соглашениям файла конфигурации. Я знаю, это кажется очевидным, но простая орфографическая ошибка или забывание закрыть пару речевых меток может сделать весь файл бесполезным.
Хороший способ избежать проблем — сделать копию файла конфигурации, прежде чем вносить какие-либо изменения. Таким образом, если что-то пойдет не так, вы можете восстановить копию и начать заново!
Файлы конфигурации важны
Более того, они являются неотъемлемой частью использования Linux. Знание того, как правильно их редактировать, поможет вам бесконечно.
Есть ли какие-то другие важные навыки, которые, по вашему мнению, должны знать пользователи Linux от начального до среднего уровня? Позвольте мне знать в комментариях ниже.
Задание профиля с помощью командной строки – метод далеко не всегда удобный. Даже при работе с самой командной строкой используется окружение для сохранения настроек, чтобы не задавать их всякий раз и для всякой команды. Что уж говорить о сложных системных службах, свойства которых должны сохраняться не от сеанса к сеансу, а постоянно (в том числе при перезагрузке системы). Вывод прост: профиль необходимо держать в файле, вроде того, что создается по команде "сохранить настройки".
Однако сам подход к хранению профиля в файле, при котором пользователь не может изменять этот файл напрямую, а пользуется "умными" конфигураторами, удобен только в случаях, когда настроек много, а цена ошибки невелика (например, при настройке внешнего вида рабочего стола). В общем случае довольно сложно задать поведение системы на основании описания (часто неявного) свойств того, что эта система должна получать в результате. Иными словами, из описания того, что должно получиться, далеко не всегда можно автоматически сделать вывод, как оно должно получаться.
Конфигурационный файл. Текстовый файл, содержащий настройки какой-нибудь части системы (утилиты, демона и т. п.). Как правило, считывается ею при запуске. Типичный для Linux способ организации профиля .
Одним словом, если есть конфигурационный файл , то должны быть и средства редактирования этого файла. Учитывая, что в Linux реализована высокоразвитая система хранения и переработки (как ручной, так и автоматической) данных в текстовом виде, изобретать какой-то новый формат – все равно что изобретать велосипед. Тем более, что именно текст, разделенный на строки и слова, лучше всего подходит тогда, когда есть четкое деление профиля на объекты управления и их свойства (например, настройки какого-нибудь демона и значения этих настроек). Вдобавок, именно со структурированными текстами отменно управляются текстовые редакторы Linux: Vi, Emacs и др:
Вот как выглядит конфигурационный файл для Vim , написанный Мефодием на основе файла, взятого у Гуревича. Легко заметить, что файл состоит из команд режима командной строки Vi с комментариями (в отличие от большинства утилит Linux, в Vi комментарии начинаются на """). Символы " ^O " и " ^M " – это именно соответствующие управляющие символы (вставленные в текстовый файл с помощью " ^V ", см. лекцию 9). Такой конфигурационный файл легко понимать и изменять.
Однако хранить настройки специфической программы (не нужные всем остальным) в окружении – не самое удачное решение: синтаксис, задающий переменную окружения , слишком прост ( имя_переменной=значение ), а самих переменных становится слишком много, поэтому при просмотре трудно выделить, какая из них к какой группе настроек относится. Если пытаться упаковать все настройки в значение одной переменной, это значение окажется трудночитаемым, и все преимущество текстового формата сойдет на нет. Например, стандартный конфигурационный файл утилиты ls (точнее, только ее цветовых предпочтений) – /etc/DIR_COLORS (его можно подменить личным файлом
/.dir_colors ) занимает около ста строк вместе с комментариями. Команда ls использует не этот файл, а создаваемую утилитой dircolors переменную LS_COLORS , значение которой – 600-символьная строка без всяких комментариев.
Если профиль слишком велик, держать его в одном конфигурационном файле – значит, доставлять пользователю сомнительное удовольствие разбирать этот файл целиком даже при необходимости внести минимальное изменение. Методов борьбы с неудобочитаемостью несколько. В частности, уже известный по лекции 10 механизм " .d ": файл разделяется на несколько независимых друг от друга файлов так, что редактировать приходится только один из файлов, а программа во время самонастройки считывает все.
Другой способ опирается на то, что изменения, которые пользователь вносит в профиль , как правило, существенно меньше объема всего профиля . Поэтому может быть выгодно хранить все настройки по умолчанию в каком-нибудь файле, менять который вообще не надо, а файл пользовательских настроек использовать как бы "поверх", изменяя профиль в соответствии с ними после того, как выставлен профиль по умолчанию. Дополнительное преимущество такого способа – в том, что пользователь всегда может подглядеть в "большой" файл, чтобы узнать, как оформляется та или иная настройка. Например, утилита updfstab, которая изменяет содержимое /etc/fstab при появлении или удалении съемного дискового носителя (например, лазерного диска), считывает данные из конфигурационного файла /etc/updfstab.conf . Сам этот файл состоит из единственной строки: include /etc/updfstab.conf.default , что приводит к чтению файла с настройками по умолчанию, где задан способ работы со многими съемными устройствами системы. Если администратору нужно как-то изменить поведение updfstab в отношении определенного устройства, он копирует соответствующую группу настроек из updfstab.conf.default в updfstab.conf после строчки include.. . и исправляет их. То, что эти группы настроек читаются дважды, не играет особой роли: чтение коротких файлов выполняется быстро.
Наконец, третий способ сделать конфигурационный файл удобочитаемым — секционирование профиля , когда все настройки разбиваются на группы, каждой группе дается собственное имя, и синтаксис конфигурационного файла проектируется так, чтобы границы групп хорошо различались при просмотре. В сущности, этот способ – предок схемы " .d ", где группе соответствует отдельный файл, однако нередки ситуации, когда разбивать на файлы неудобно (например, если группы не полностью независимы, поэтому может понадобиться редактировать их сразу несколько). Конфигурационный файл утилиты дозвона wvdial , например, секционируется по адресату (провайдеру) плюс отдельная секция "по умолчанию". Сами секции отделяются друг от друга заголовками, заключенными в квадратные скобки:
Утилита wvdial обладает высокоразвитым искусственным интеллектом: она самостоятельно догадывается, какой именно тип идентификации используется на сервере. Например, "с той стороны" может оказаться терминал Linux, которому требуется сначала ввести обыкновенное входное имя и пароль, затем надо получить командную строку, запустить на сервере сетевой демон pppd , и только после этого запустить pppd на собственной машине. Другой вариант: pppd на сервере уже запущен, а настройки "Username" и "Password" означают идентификационную информацию протокола CHAP , используемого pppd . Обо всем этом и о многом другом wvdial способна догадаться,так же как wvdialconf умел определять, какое же из устройств является модемом.
Однако на любой искусственный интеллект найдется непостижимая ему жизненная ситуация. На одном из серверов (секция "Dialer hotspace") тоже стоит программа с зачатками искусственного интеллекта, которая тоже пытается определить, каким способом хочет идентифицироваться позвонивший. Оттого эти два кудесника, созвонившись, все ждут, пока кто-нибудь не проявит себя. Помогает настройка TOnline , которая заставляет wvdial немедленно задействовать протокол ppp , на что сервер, подумавши "ах, ppp!", с облегчением запускает pppd . Остается вопрос: почему эта полезная настройка никак не отражена в документации (ее нашел в исходных текстах программы Гуревич)? Не потому ли, что пара wvdialconf-wvdial не по-Linux-овски стремится все делать за пользователя, а стало быть, пользовательская документация для разработчиков этой программы – не главное?
Идею чтения настроек по умолчанию можно развить. Оказывается, бывает удобно, когда описание настройки помещено не в руководство, а непосредственно в конфигурационный файл в виде комментариев. Тогда при изменении этой настройки пользователь сразу видит, что она собой представляет, при этом отпадает необходимость сначала находить строчку в файле, а потом искать ее же в руководстве. Такой распространенный способ оформления называется самодокументированием профиля . Например, файл /etc/man.conf , управляющий работой команды man , оформлен в самодокументированном стиле:
Пример 12.5. Самодокументированный конфигурационный файлМефодий, может быть, и не понял бы сразу, зачем команде man использовать утилиту cmp, однако в поясняющем комментарии написано: когда нужно показать несколько руководств разом, они предварительно сравниваются, и показываются только несовпадающие.
Если пойти еще дальше, то можно создать несколько различных файлов с примерами настроек, чтобы пользователь мог взять один из них и довести до нужного ему состояния. Именно такую – демонстрационную – настройку Мефодий и включил в качестве настройки по умолчанию в свой .vimrc (в первой строке). Кстати, на самом деле профиль Vim весьма сложен, но большинство его настроек по умолчанию находятся в различных файлах дерева каталогов /usr/share/ vim – эдакая "схема .d/.d ", где файлы профиля , соответствующие подгруппам настроек, лежат в подкаталогах, соответствующих группам. Включение определенного настроечного файла может происходить неявно: например, строчка colorscheme desert из .vimrc приводит к чтению /usr/share/ vim /colors/desert. vim .
Конфигурационные файлы могут иметь довольно замысловатый синтаксис, если соответствуют сложным структурам данных (таковы, например, настройка irc-клиента irssi ) или содержать в себе дополнительные средства самодокументирования (например, файл настройки текстового www-броузера lynx не просто хорошо документирован, но и размечен теми же средствами, какие используются в самом броузере для представления HTML).
С помощью классов из пространства имен System.Configuration управляемый код может считывать установки из конфигурационных файлов, но не записывать их в эти файлы.
В этом разделе описан синтаксис файлов конфигурации и приведены сведения о трех типах таких файлов: конфигурации компьютера, приложения и безопасности.
Формат файлов конфигурации
Файлы конфигурации состоят из элементов, которые являются логическими структурами данных, задающими сведения о конфигурации. Начало и конец каждого элемента в файле конфигурации отмечены специальными тегами. Например, <runtime> элемент состоит из <runtime> дочерних элементов </runtime> . Пустой элемент будет записан как <runtime/> или <runtime></runtime> .
Как и во всех XML-файлах, в файлах конфигурации учитывается регистр.
Параметры конфигурации задаются с помощью предварительно определенных атрибутов (пар имя-значение) в открывающем теге элемента. В следующем примере заданы два атрибута ( version и href ) элемента <codeBase> , определяющие для среды выполнения расположение сборок (дополнительные сведения см. в разделе Указание расположения сборки).
Файлы конфигурации компьютеров
Система конфигурации сначала просматривает файл конфигурации компьютера для <appSettings> элемента и других разделов конфигурации, которые может определить разработчик. Затем поиск выполняется в файле конфигурации приложения. Для облегчения управления файлом конфигурации компьютера рекомендуется переместить эти параметры в файл конфигурации приложения. Однако размещение параметров в файле конфигурации компьютера упрощает управление системой. Например, при наличии компонентов сторонних производителей, используемых сервером и клиентами, рекомендуется разместить параметры этих компонентов в одном файле. В этом случае следует задавать параметры в файле конфигурации компьютера, чтобы не дублировать параметры в разных файлах.
При развертывании приложения с помощью команды XCOPY файл конфигурации компьютера не копируется.
Дополнительные сведения об использовании файла конфигурации компьютера средой CLR для привязки сборок см. в разделе Обнаружение сборок в среде выполнения.
Файлы конфигурации приложений
В файле конфигурации приложения находятся параметры приложения. В этом файле содержатся параметры конфигурации, считываемые средой CLR (например, политика привязки сборок, удаленные объекты и т. д.) и приложением.
Имя и расположение файла конфигурации приложения зависят от места размещения приложения, которым может быть одно из указанных ниже.
Приложение, размещенное в исполняемом файле.
Такие приложения имеют два файла конфигурации: исходный файл конфигурации, который изменяется разработчиком во время разработки, и выходной файл, распространяемый с приложением.
При разработке в Visual Studio разместите исходный файл конфигурации приложения в каталоге проекта и установите для его свойства Копировать в выходной каталог значение Всегда копировать или Копировать, если новее. Имя файла конфигурации — это имя приложения с расширением CONFIG. Например, исходный файл конфигурации приложения myApp.exe должен называться myApp.exe.config.
Visual Studio автоматически копирует исходный файл конфигурации в каталог, где находится скомпилированная сборка, чтобы создать выходной файл конфигурации, развертываемый вместе с приложением. В некоторых случаях Visual Studio может изменить выходной файл конфигурации; дополнительные сведения см. в разделе Перенаправление версий сборки на уровне приложения статьи Перенаправление версий сборки.
Приложение, размещенное в Internet Explorer.
Если для приложения, размещенного в Internet Explorer, определен файл конфигурации, его расположение задается в теге <link> следующим образом:
В этом теге location — это URL-адрес файла конфигурации. Таким образом задается базовая папка приложения. Файл конфигурации должен находиться на том же веб-сайте, что и приложение.
Файлы конфигурации безопасности
В файлах конфигурации безопасности содержатся сведения об иерархии групп кода и наборах разрешений, связанных с уровнем политики. Для изменения политики безопасности настоятельно рекомендуется использовать средство политики безопасности доступа кода (Caspol.exe), что гарантирует целостность файлов конфигурации безопасности.
Ниже приведено расположение файлов конфигурации безопасности.
Файл конфигурации политики предприятия: %путь-установки-среды-выполнения%\Config\Enterprisesec.config
Файл конфигурации политики компьютера: %путь-установки-среды-выполнения%\Config\Security.config
Файл конфигурации политики пользователя: %USERPROFILE%\Application data\Microsoft\CLR security config\v xx.xx\Security.config
в этом разделе
Практическое руководство. Поиск сборок с помощью DEVPATH
Описание процесса настройки среды выполнения для использования переменной среды DEVPATH при поиске сборок.
Перенаправление версий сборки
Инструкции по указанию местоположения и версии сборки, которая должна использоваться приложением.
Указание расположения сборки
Сведения о том, как указать среде выполнения, где она должна осуществлять поиск сборки.
Настройка криптографических классов
Описание процесса сопоставления имени алгоритма криптографическому классу и идентификатора объекта в криптографическому алгоритму.
как создать политику Publisher
Сведения о том, куда и каким образом нужно добавить файл политики издателя, чтобы задать перенаправление сборки и параметры базового каталога кода.
Схема файла конфигурации
Описывается иерархия схемы для запуска, среды выполнения, сети и других типов параметров конфигурации.
Читайте также: