Как ПУТЬ установлен для пользователей в марионетке?

Да, существует очень законная причина. Обратите внимание, что другие пользователи могут читать, но не записать в Ваши файлы. Это очень полезно в профессиональных сетях, потому что можно легко совместно использовать файлы с коллегами.

Например, в лаборатории я раньше работал в, у всех нас был доступ к друг друга $HOME каталоги, таким образом, мы могли легко совместно использовать наши данные или наши сценарии друг с другом. Если бы у моей подруги Alice был хороший сценарий для того, чтобы сделать X, то я просто выполнил бы его:

~alice/bin/scriptX.pl mydata

Как другие упомянули, для изменения этого необходимо будет установить umask. Например, для создания новых файлов и папок читаемыми только Вами добавьте это к Вашему ~/.bashrc:

umask 0077
3
12.08.2014, 22:35
2 ответа

Как говорится в документации NGINX:

По умолчанию nginx удаляет из родительского процесса все переменные окружения, унаследованные от него, за исключением переменной TZ.

Обходной путь к моей конкретной проблеме может быть достигнут несколькими различными способами.

Обходной путь 1: Добавление переменной PATH в Ruby

Редактируя файл config.ru, мы можем просто определить PATH, если он еще не определен:

if not ENV['PATH']
    ENV['PATH'] = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
end

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


Обходное решение 2: Установите переменную PATH в NGINX

Установив переменную PATH в конфигурации вашего сайта NGINX, мы получим более "немедленно видимое" решение проблемы:

server {
    listen 8140 ssl default_server;

    # ...
    # manually set PATH for Passenger; see PUP-3000
    env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    passenger_enabled on;
    # ...
}
1
27.01.2020, 21:23

В общем случае linux устанавливает переменную окружения PATH, считывая файлы точек. При входе в систему считывается /etc/профиль. После установки переменных окружения по умолчанию считывается .shell_profile, например .bash_profile. Если этот файл точек не существует, то он пытается прочитать .bash_login, а если он тоже не существует, то ищет .profile.

Вернемся к вопросу. У пользователя puppet нет оболочки или не вмещаются вышеупомянутые файлы. Вы можете просто проверить его, выполнив echo "$SHELL" && echo "$PATH".

Вы можете установить PATH вручную, используя один из файлов с точками, или посмотреть на следующее: http://www.puppetcookbook.com/posts/set-global-exec-path.html

2
27.01.2020, 21:23

Теги

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