Использование sudo в openSUSE без фактического изменения для пользователя root (например, как в Ubuntu)

Недавно я начал попробовать openSUSE 12.3 после использования Ubuntu в течение нескольких лет. Я все еще привык к тому, что openSUSE обрабатывает susudo ) по сравнению с использованием Ubuntu sudo . Я читал руководство openSUSE, но не могу найти ответы на два связанных вопроса:

1) В предыдущем вопросе на https://askubuntu.com/questions/236859/are-there-adverse-effects-from-or-a-better-way-than-writing-to-run-or-dev-sh , Я попросил временно записать дешифрованный файл gpg в /run используя флаг gpg --output чтобы дешифрованный файл никогда не касался жесткого диска. Однако, чтобы писать /run , мне нужно было использовать sudo в Ubuntu (т. sudo gpg --output '/run/temporary_file_name' etc. . sudo gpg --output '/run/temporary_file_name' etc. ).

Когда я пытаюсь сделать то же самое в openSUSE (используя sudo или su ), я получаю сообщение об ошибке из gpg , предположительно потому, что пользователь root не может видеть ключи gpg моей учетной записи. Может ли это использование `sudo from Ubuntu, in which sudo, seems to use the same preferences / gpg keys as the regular user, be replicated in openSUSE? I could use seems to use the same preferences / gpg keys as the regular user, be replicated in openSUSE? I could use gpg и т. Д. | tee и т. д. », я полагаю, но это кажется громоздким по сравнению с способностью Ubuntu делать вещи.

2) У меня есть несколько сценариев bash от Ubuntu, для которых требуются привилегии root для некоторых, но не для всех строк (например, копирование файлов, которые я не хочу получать от root, но затем установка нового программного обеспечения, которое требует прав root). В Ubuntu я мог бы просто запустить несколько строк с sudo . sudo some_command не всегда работает в openSUSE. Лучший способ адаптировать эти сценарии для openSUSE для использования su -c 'command' в этих строках скрипта? Если я сам использую su в скрипте, скрипт перестает работать после ввода пароля root.

Обратите внимание, что, хотя я спрашиваю об openSUSE конкретно, этот вопрос предположительно применяется ко многим не-Ubuntu-дистрибутивам.

  • Туннелирование трафика IPv6 из SLIP в Linux
  • Интернет регулярно исчезает
  • Как найти файлы в формате PDF, созданные LaTeX?
  • Как найти IP-адрес виртуальной машины KVM, чтобы я мог использовать SSH?
  • Неправильное количество кликов от мыши и капель, нажмите и удерживайте, затем снова забирает
  • Не удается запустить snmpd правильно
  • «Невозможно разрешить имя хоста» - как очистить имя хоста без перезагрузки
  • nVidia терпит неудачу после обновления
  • 3 Solutions collect form web for “Использование sudo в openSUSE без фактического изменения для пользователя root (например, как в Ubuntu)”

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

    Тем не менее, запуск gpg как root определенно является неправильным подходом. Это дает gpg слишком много привилегий и может иметь привилегию получить доступ к ~/.gnupg от него (например, если домашний каталог пользователя находится в NFS). Запустите gpg в качестве пользователя, которому принадлежит ключ, и сделайте его печать данных на стандартный вывод. Трубопровод в tee является стандартным способом вывода в файл, который вам нужны специальные привилегии для записи (я понятия не имею, почему вы считаете его «громоздким»):

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

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

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

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

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

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

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

    Лучше, чем писать / запускать, возможно, создает собственный монтируемый 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 

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

    Linux и Unix - лучшая ОС в мире.