Использование sudo для записи файлов в домашний каталог пользователя

-Pool репозитории содержат пакеты GA (пакеты на диске выпуска), можно установить значение no-refresh через zypper -> zypper mr -R repo-name

-Updates - это репозитории, содержащие выпущенные обновления, поэтому все выпущенные исправления / обновления для продукта находятся в этом репозитории. Эти репозитории должны быть настроены на обновление и являются обязательными для zypper patch и zypper up

Оба типа репозиториев необходимы, без пула невозможно установить пакет без обновления. А обновления говорят сами за себя :)

2
21.02.2017, 19:42
2 ответа

TL, DR: ни одно из ваших предложений не является хорошим. Вместо этого, при запуске от имени пользователя root, сохраните файлы состояния в папке / var (что-то вроде / var / lib / suman ).

У root уже есть разрешение

Root имеет разрешение на доступ ко всем файлам в системе. Так что не меняйте права доступа к каталогу: это не повлияет на root, но позволит всем остальным читать и писать в этом каталоге. Несмотря на распространенное мнение, chmod 777 крайне редко делают что-нибудь полезное.

У root есть разрешение на доступ ко всем файлам в системе, и обычно этого достаточно. Есть несколько исключений, связанных с определенными типами файловых систем, которые обрабатывают пользователей иначе, чем «обычные» файловые системы. Двумя основными случаями являются:

  • NFS: root на клиенте обычно отображается на другого пользователя на сервере, обычно никто . Это означает, что когда root открывает файл, это делается с разрешениями никто .
  • FUSE (который включает ecryptfs, который обычно используется для шифрования домашних каталогов): если не настроено иное (с параметром allow_other , который может использовать только root), файловые системы FUSE доступны только для пользователей, которые установил их.

В таких случаях есть файлы, к которым root не может получить прямой доступ, несмотря на очевидные права доступа. Root по-прежнему может эффективно получать доступ к файлам, переключившись на учетную запись, которая владеет файлами - это ограничения реализации, а не ограничения безопасности, - но это немного неудобно.

Но root должен использовать это разрешение осторожно

Если у вас есть программа, которая обычно вызывается как root, но с HOME , установленным в домашний каталог другого пользователя, вам следует избегать создания файлов в домашнем каталоге пользователя. каталог, к которому у пользователя нет доступа.

Если /home/oleg/.suman уже существует и принадлежит oleg, не имеет значения, записываете ли вы файлы туда, потому что владелец каталога всегда может удалить файлы в этом каталоге ( требуется разрешение на запись, и владелец всегда может предоставить это разрешение). Когда oleg запускает ту же программу, она заменяет файлы, принадлежащие root, если эти файлы нужно перезаписать. Однако не создавайте подкаталоги: Олег не сможет получить к ним доступ или удалить их, даже если они пусты.

Проблема заключается в том, что вы впервые запускаете программу от имени пользователя root, и она создает /home/oleg/.suman . Короче говоря, не делайте этого - вопрос в том, как этого избежать.

Решения

Если вы запустите sudo -H , тогда для переменной среды HOME будет установлен домашний каталог root, и программа не будет обращаться к / домой / олег .

Но иногда имеет смысл запускать программу от имени пользователя root (поскольку для этого требуются права root), но с вашим собственным домашним каталогом (для чтения файлов конфигурации). Это, конечно, применимо только в тех случаях, когда программа, работающая от имени пользователя root, может читать этот файл конфигурации - настройки пользовательского интерфейса допустимы, но файл конфигурации не должен содержать таких вещей, как исполняемый код (например,оболочка не ускользнет через предварительную обработку). В этом случае программа должна читать файлы из $ HOME , но не записывать.

Если программе необходимо сохранить некоторые файлы состояния, то, когда она работает от имени пользователя root, она должна хранить их в системном каталоге (в / var ), а не в домашнем каталоге пользователя.

1
27.01.2020, 22:10

Вам нужен параметр -H, --set-home для sudo.

На странице руководства sudo:

-H, --set-home Запросить, чтобы политика безопасности установила для переменной среды HOME домашний каталог, указанный в записи базы данных паролей целевого пользователя. В зависимости от политики это может быть поведение по умолчанию.

1
27.01.2020, 22:10

Теги

Похожие вопросы