TL, DR: ни одно из ваших предложений не является хорошим. Вместо этого, при запуске от имени пользователя root, сохраните файлы состояния в папке / var
(что-то вроде / var / lib / suman
).
Root имеет разрешение на доступ ко всем файлам в системе. Так что не меняйте права доступа к каталогу: это не повлияет на root, но позволит всем остальным читать и писать в этом каталоге. Несмотря на распространенное мнение, chmod 777
крайне редко делают что-нибудь полезное.
У root есть разрешение на доступ ко всем файлам в системе, и обычно этого достаточно. Есть несколько исключений, связанных с определенными типами файловых систем, которые обрабатывают пользователей иначе, чем «обычные» файловые системы. Двумя основными случаями являются:
никто
. Это означает, что когда root открывает файл, это делается с разрешениями никто
. allow_other
, который может использовать только root), файловые системы FUSE доступны только для пользователей, которые установил их. В таких случаях есть файлы, к которым root не может получить прямой доступ, несмотря на очевидные права доступа. Root по-прежнему может эффективно получать доступ к файлам, переключившись на учетную запись, которая владеет файлами - это ограничения реализации, а не ограничения безопасности, - но это немного неудобно.
Если у вас есть программа, которая обычно вызывается как root, но с HOME
, установленным в домашний каталог другого пользователя, вам следует избегать создания файлов в домашнем каталоге пользователя. каталог, к которому у пользователя нет доступа.
Если /home/oleg/.suman
уже существует и принадлежит oleg, не имеет значения, записываете ли вы файлы туда, потому что владелец каталога всегда может удалить файлы в этом каталоге ( требуется разрешение на запись, и владелец всегда может предоставить это разрешение). Когда oleg запускает ту же программу, она заменяет файлы, принадлежащие root, если эти файлы нужно перезаписать. Однако не создавайте подкаталоги: Олег не сможет получить к ним доступ или удалить их, даже если они пусты.
Проблема заключается в том, что вы впервые запускаете программу от имени пользователя root, и она создает /home/oleg/.suman
. Короче говоря, не делайте этого - вопрос в том, как этого избежать.
Если вы запустите sudo -H
, тогда для переменной среды HOME
будет установлен домашний каталог root, и программа не будет обращаться к / домой / олег
.
Но иногда имеет смысл запускать программу от имени пользователя root (поскольку для этого требуются права root), но с вашим собственным домашним каталогом (для чтения файлов конфигурации). Это, конечно, применимо только в тех случаях, когда программа, работающая от имени пользователя root, может читать этот файл конфигурации - настройки пользовательского интерфейса допустимы, но файл конфигурации не должен содержать таких вещей, как исполняемый код (например,оболочка не ускользнет через предварительную обработку). В этом случае программа должна читать файлы из $ HOME
, но не записывать.
Если программе необходимо сохранить некоторые файлы состояния, то, когда она работает от имени пользователя root, она должна хранить их в системном каталоге (в / var
), а не в домашнем каталоге пользователя.
Отсутствующее (серое) пространство на вашей диаграмме - это 5%, зарезервированных вашей файловой системой.
Есть очень хороший ответ на аналогичный вопрос: Зарезервированное пространство для root в файловой системе - почему ? , что объясняет причину этой оговорки. Он также дает команду, которая уменьшит процент резервирования, но я настоятельно рекомендую вам не изменять ее, если вы не поймете и не примете проблемы, которые могут возникнуть в дальнейшем.