Перепутанный на пользователе и su в Linux

Проблема service полосы все переменные среды, но TERM, PATH и LANG который является хорошей вещью. При выполнении сценария непосредственно, ничто не удаляет переменные среды, таким образом, все работает.

Вы не хотите полагаться на переменные внешней среды, потому что при запуске переменная среды, вероятно, не присутствует, и Ваша init система, вероятно, не установит его так или иначе.

Если Вы все еще хотите полагаться на такие переменные, получить файл и считать переменные из него, например, создать /etc/default/servicename с содержанием:

VAR=value

и источник это из Вашего init сценария, например:

[ -f /etc/default/service-name ] && . /etc/default/service-name

if [ -z "$VAR" ] ;  then
  echo "VAR is not set, please set it in /etc/default/service-name" >&2
  exit 1
fi

case "$1" in
status)    
    cd "$VAR"/dir
    ;;
esac
1
09.08.2013, 00:25
3 ответа

Можно передать -c кому: su выполнить команду. Если sudo позволяет Вам выполнять команду, это должно работать:

sudo su - john -c "/usr/share/script.pl"

Следует иметь в виду это путем передачи - кому: su Ваша среда совпадет с, если Вы вошли в систему, поэтому если сценарий зависит от переменных среды (как текущий путь), Вам, вероятно, придется внести изменения.

1
27.01.2020, 23:53

Другие ответы дают лучшие ответы на Ваш конкретный вопрос, вот некоторое полезное объяснение.

su = пользователь переключателя

sudo = переключите пользователя и сделайте X (без дополнительных опций, 'пользователь' является 'корнем'),

Для большинства пользователей su не позволяется без использования sudo, который предназначен, чтобы заставить пользователя думать дважды о том, что они делают и обычно запрашивать снова пароль.

0
27.01.2020, 23:53

используйте-c опцию как

sudo su - john -c "/usr/share/script.pl"

Или вместо того, чтобы определить пользователя как вышеупомянутый можно определить задание крона для определенного пользователя, использующего следующую команду

crontab -u john -e

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

0
27.01.2020, 23:53

Теги

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