.bashrc
только читается из оболочек невхода в систему. Таким образом, когда Вы сначала входите в систему, не чтение. Когда Вы работаете bash
снова, не оболочка входа в систему, таким образом, это читает его и Ваши настройки, вступает в силу.
Простое решение этого состоит в том, чтобы создать ~/.bash_profile
со следующим содержанием:
source .bashrc
Это заставит оболочку входа в систему считать конфигурацию, используемую для оболочек невхода в систему.
Сохраняет ли 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, но других системах может вести себя по-другому. Исправьте свой сценарий так, чтобы он не зависел от сбрасываемой среды.
Это - прежде всего, ответ на вопрос 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
tmpfs
для моего gpg
дешифрованные файлы - спасибо за то предложение! У меня действительно есть вопрос о Вашем предложенном подходе: мое понимание - это tmpfs
монтирование может использовать подкачку (который я включил, хотя она шифруется), в то время как ramfs
монтирование не может. По этой причине, ramfs
походит на потенциально большее безопасное решение двух. Однако ramfs
монтируется, кажется, всегда принадлежат root
(по крайней мере, в тестах, которые я сделал сегодня). Из любопытства (если это корректно), почему это? Корректно мое понимание различий между этими двумя?
– J L
04.04.2013, 10:22
ramfs
но это может быть решение, незаконченные протесты. Один путь вокруг ограничения владения состоит в том, чтобы сделать это миром перезаписываемый и устанавливать липкий бит, точно так же, как /tmp
, использование chmod 1777
. Вы могли поместить это chmod
команда в локальном init сценарии.
– depquid
04.04.2013, 14:59
Я включил бы sudo. Это сделано путем редактирования/etc/sudoers файла и добавления пользователя строки ВСЕ = (ВСЕ) ВСЕ. С требуемым пользователем. Это должно быть сделано как корень.
/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
sudo
имеет столько запутанности. Я ценю изучение, что существует целый мир не-Ubuntu подходы безопасности Linux там, чтобы я читал на. Я не знал, что существенные различия существовали. Я делал некоторых продолжение читатьsudo
среды, и я все еще испытываю затруднения при понимании того, какие переменные среды/. Вы могли рекомендовать некоторые хорошие веб-страницы мне?man sudo
страница все еще оставляет меня смущенным. – J L 04.04.2013, 10:15tee
является стандартным, заставляет меня чувствовать себя лучше об использовании его. Я ранее приехал в (возможно, неинформированный) впечатление, что это был нестандартный подход, который мог вызвать проблемы так или иначе. Снова, это очень полезно.Спасибо! – J L 04.04.2013, 10:17sudo
страница справочника является действительно трудным чтением. Не помогает, что программа имеет много параметров конфигурации и в компиляции - и во времени выполнения. Переменные среды какHOME
,PATH
, … влияют на поведение программы, и это может иметь последствия безопасности (например.PATH
определяет то, что другие программы приложение закончит тем, что выполнило). Sudo может быть настроен для установки их на безопасные значения, и это - конфигурация по умолчанию на Ubuntu. – Gilles 'SO- stop being evil' 04.04.2013, 14:30su -
вместоsu
при активацииroot
полномочия? Посколькуsu -
импортирует корректные переменные среды дляroot
, в то время какsu
не ведение к неспособности к, например, запускает программы GUI? На той ноте, затем, после моего вопроса № 2 в исходном сообщении, для сценария, для которого просто нужноroot
полномочия для строки или два (например, для выполненияzypper install
, было бы уместно использоватьsu - -c 'foo'
? – J L 04.04.2013, 23:54