Используя sudo в openSUSE, на самом деле не изменяясь на пользователя root (т.е. как в Ubuntu)

.bashrc только читается из оболочек невхода в систему. Таким образом, когда Вы сначала входите в систему, не чтение. Когда Вы работаете bash снова, не оболочка входа в систему, таким образом, это читает его и Ваши настройки, вступает в силу.

Простое решение этого состоит в том, чтобы создать ~/.bash_profile со следующим содержанием:

source .bashrc

Это заставит оболочку входа в систему считать конфигурацию, используемую для оболочек невхода в систему.

2
13.04.2017, 15:22
3 ответа

Сохраняет ли sudo HOME переменная среды или наборы, это к корневому каталогу целевого пользователя зависит от своей конфигурации (см. руководство для деталей). Это не Ubuntu, делающая его правильно и SuSE, делающий его неправильно, или наоборот: существуют позитивные аспекты и оборотные стороны к обоим вариантам. Это - Ваше задание как устройство записи сценария для преодоления обоих случаев. Решение (1) состоит в том, чтобы или работать sudo -H или передача --homedir к gpg.

Однако работая gpg, поскольку корень является определенно неправильным подходом. Это дает gpg слишком много полномочий, и может полномочие получить доступ ~/.gnupg далеко от него (например, если корневой каталог пользователя находится на NFS). Выполненный gpg как пользователь, который владеет ключом и заставляет его распечатать данные к стандартному выводу. Передача по каналу в tee стандартный путь состоит в том, чтобы произвести в файл, который Вам нужны специальные полномочия записать (я понятия не имею, почему Вы считаете это “громоздким”):

gpg -d foo.gpg | sudo tee /run/foo

Ли su или sudo необходим для становления корнем, зависит от выбора системного администратора. Различные пользователи на той же машине могут использовать один или другой. Если Вы не будете управлять конфигурацией на всех машинах, Вы будете запускать свой скрипт на, допускать обе возможности (например, с опцией, переданной Вашему сценарию).

Если Ваши сценарии работают над Ubuntu с sudo но сбой на других дистрибутивах или с su, можно полагаться на (почти) полностью сбрасываемую среду. Это - значение по умолчанию sudo конфигурация на Ubuntu, но других системах может вести себя по-другому. Исправьте свой сценарий так, чтобы он не зависел от сбрасываемой среды.

2
27.01.2020, 22:14
  • 1
    Giles, спасибо за Ваше объяснение. До переключения далеко от Ubuntu (который я использовал в течение нескольких лет, не пробуя ничего абсолютно различного), я никогда не понимал это sudo имеет столько запутанности. Я ценю изучение, что существует целый мир не-Ubuntu подходы безопасности Linux там, чтобы я читал на. Я не знал, что существенные различия существовали. Я делал некоторых продолжение читать sudo среды, и я все еще испытываю затруднения при понимании того, какие переменные среды/. Вы могли рекомендовать некоторые хорошие веб-страницы мне? man sudo страница все еще оставляет меня смущенным. –  J L 04.04.2013, 10:15
  • 2
    Кроме того, знание того использования tee является стандартным, заставляет меня чувствовать себя лучше об использовании его. Я ранее приехал в (возможно, неинформированный) впечатление, что это был нестандартный подход, который мог вызвать проблемы так или иначе. Снова, это очень полезно.Спасибо! –  J L 04.04.2013, 10:17
  • 3
    @JL sudo страница справочника является действительно трудным чтением. Не помогает, что программа имеет много параметров конфигурации и в компиляции - и во времени выполнения. Переменные среды как HOME, PATH, … влияют на поведение программы, и это может иметь последствия безопасности (например. PATH определяет то, что другие программы приложение закончит тем, что выполнило). Sudo может быть настроен для установки их на безопасные значения, и это - конфигурация по умолчанию на Ubuntu. –  Gilles 'SO- stop being evil' 04.04.2013, 14:30
  • 4
    Gilles, спасибо. Я все еще смущен, но думаю, что медленно получаю идею больше. Я ценю Ваше объяснение. Так эта проблема, связанная с тем, почему это лучше (как я понимаю) работать su - вместо su при активации root полномочия? Поскольку su - импортирует корректные переменные среды для root, в то время как su не ведение к неспособности к, например, запускает программы GUI? На той ноте, затем, после моего вопроса № 2 в исходном сообщении, для сценария, для которого просто нужно root полномочия для строки или два (например, для выполнения zypper install, было бы уместно использовать su - -c 'foo'? –  J L 04.04.2013, 23:54

Это - прежде всего, ответ на вопрос 1, так как другой отдельный вопрос, который у меня нет времени для обращения прямо сейчас.

Ubuntu берет некоторые ярлыки на безопасности для обращений к типичным настольным пользователям, которые не хотят или нуждаются в добавленной сложности разделения полных полномочий. Однако при обработке данных, которые так уязвимы, что Вы не хотите писать это в диск, затем Вы не такой пользователь и не должны обходить архитектуру стандартной защиты путем реализации стиля Ubuntu sudo правила.

ПРЕДУПРЕЖДЕНИЕ: Просто, потому что Вы помещаете что-то в RAM, не означает, что никто больше не может добраться до нее. Самый очевидный преступник является дисковой подкачкой, которая может закончить тем, что хранила содержание того, что было на RAM неограниченно долго. Но другие компромиссы возможны также.

Таким образом, если Вы отключили свой раздел подкачки и считаете это достаточно хорошим:

Более оптимальный вариант, чем запись в выполненный/, вероятно, создает Ваш собственный tmpfs, монтируются принадлежавший пользователю чей, собираясь использовать его. Например, если Ваш пользователь и идентификаторы группы оба 500:

mount -t tmpfs tmpfs /home/jl/realtmp -ouid=500,gid=500

Эта команда должна будет быть выполнена как root, но после того как Вы усовершенствовали эту установку, можно добавить его к Вашему fstab сделать это постоянным:

tmpfs   /home/jl/realtmp    tmpfs   uid=500,gid=500 0   0
1
27.01.2020, 22:14
  • 1
    depquid, я не рассмотрел создание нового tmpfs для моего gpg дешифрованные файлы - спасибо за то предложение! У меня действительно есть вопрос о Вашем предложенном подходе: мое понимание - это tmpfs монтирование может использовать подкачку (который я включил, хотя она шифруется), в то время как ramfs монтирование не может. По этой причине, ramfs походит на потенциально большее безопасное решение двух. Однако ramfs монтируется, кажется, всегда принадлежат root (по крайней мере, в тестах, которые я сделал сегодня). Из любопытства (если это корректно), почему это? Корректно мое понимание различий между этими двумя? –  J L 04.04.2013, 10:22
  • 2
    я действительно не знаком с ramfs но это может быть решение, незаконченные протесты. Один путь вокруг ограничения владения состоит в том, чтобы сделать это миром перезаписываемый и устанавливать липкий бит, точно так же, как /tmp, использование chmod 1777. Вы могли поместить это chmod команда в локальном init сценарии. –  depquid 04.04.2013, 14:59
  • 3
    depquid, интересный! Я испытаю это, также! –  J L 04.04.2013, 23:47

Я включил бы sudo. Это сделано путем редактирования/etc/sudoers файла и добавления пользователя строки ВСЕ = (ВСЕ) ВСЕ. С требуемым пользователем. Это должно быть сделано как корень.

-1
27.01.2020, 22:14
  • 1
    mkkohls, та строка, кажется, уже включена по умолчанию. Рассматриваемые строки в /etc/sudoers читать ## In the default (unconfigured) configuration, sudo asks for the root password. This allows use of an ordinary user account for administration of a freshly installed system. When configuring sudo, delete the two following lines: Defaults targetpw # ask for the password of the target user i.e. root ALL ALL=(ALL) ALL # WARNING! Only use this together with 'Defaults targetpw'! –  J L 03.04.2013, 22:06

Теги

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