Назад | Перейти на главную страницу

Когда марионетка исполняется в качестве пользователя, как я могу настроить среду для этого пользователя?

Я заметил, что когда я использую user вариант на exec, он не принимает окружение указанного пользователя.

$ sudo -i puppet apply -e "exec { '/usr/bin/env': logoutput => true, user => nobody}" 
notice: /Stage[main]//Exec[/usr/bin/env]/returns: SHELL=/bin/bash
notice: /Stage[main]//Exec[/usr/bin/env]/returns: USER=root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: USERNAME=root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
notice: /Stage[main]//Exec[/usr/bin/env]/returns: MAIL=/var/mail/root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: PWD=/root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: HOME=/root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: LOGNAME=root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: executed successfully

Итак, пока команда работает как nobody, USER, HOMEи т. д. не настроены должным образом. Есть ли способ получить exec имитировать оболочку входа в систему, чтобы среда была настроена должным образом?

Нет возможности получить exec для имитации оболочки входа в систему. Вы всегда можете использовать su - (так как предложил по грызть), чтобы создать оболочку входа в систему, но если все, что вам нужно, это переменные среды контролируемый от Puppet, просто используйте параметр environment.

Конечно, запустите команду через su - вместо того, чтобы указывать пользователя в манифесте.