
Я пишу небольшую утилиту, и мне нужно где-то разместить файлы конфигурации. Если присмотреться, то это, похоже, /etc
каноническое расположение в Linux. Но я столкнулся с проблемой, что этот каталог, похоже, требует доступа root для записи по умолчанию.
Есть ли место, куда можно записать без необходимости вызывать мою программу с помощью sudo
? Например, homebrew
на Mac, кажется, можно как-то записать /usr/local/bin
без прав root.
Я знаю, что могу что-то добавить /home
, но я пытаюсь сделать все «правильно» с точки зрения того, где должны храниться файлы в Linux.
решение1
Если вы хотите сделать все правильно, программа и ее файлы конфигурации не должны быть доступны для редактирования пользователем, поскольку в противном случае это нарушает стандартную модель безопасности.
Либо он принадлежит пользователю, и, следовательно, его конфигурация хранится в домашнем каталоге пользователя, либо он установлен в любом месте системы (например /usr/bin
, /usr/local/bin
, /opt/appname
), а затем его конфигурация снова сохраняется в каком-либо месте системы (например /etc
, , /usr/local/etc
или /opt/appname/etc
).
решение2
Вам следует использовать подкаталог, возможно скрытый, специфичный для вашего приложения, например .myApp
. Он также может содержать журналы версий и установки. Это значительно упрощает очистку и т. д.
Если конфигурация общая для всех пользователей, вы можете сделать одноразовый sudo mkdir в "общем пространстве" и предоставить соответствующие разрешения в этом каталоге. Не имеет значения, что уровни выше не могут быть записаны.
Если ваша конфигурация рассчитана на пользователя, ваше приложение создается .myApp
в папке /home/username пользователя при установке или первом использовании.
Для Linux существует официальный стандарт иерархии файловой системы.