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

Портативно:

sed -e 's/.*/ & /' -e :1 -e 's/ test3 / /g;t1' -e 's/^ //;s/ $//'

Это:

  • сначала добавьте пространство вначале и конец строки, для не рассмотрения test3 вначале и конец особенно,
  • замена test3 включенный в пробелы с одиночным пробелом,
  • повторите процесс, пока существуют замены (для покрытия test3 test3 случаи).
  • Удалите продвижение и конечный пробел, который мы добавили первоначально.
5
28.03.2014, 21:51
2 ответа
[116229] Использование [116566]su someuser -c ...[116567] это то, что нужно. Для начала, [116568]setuid()[116569] является системным вызовом, недоступным для кода оболочки. Не усложняйте ситуацию.[116230]
1
27.01.2020, 20:41
[116241] Зависит от дистрибутива, но дистрибутивы на основе RHEL используют функцию Bash, источником которой является [116580]/etc/rc.d/init.d/functions[116581], называемая [116582]daemon[116583], которая сама по себе является лишь обёрткой вокруг команды [116584]runuser[116585]. Из того, что я могу сказать в исходных файлах, он функционально идентичен [116586]su[116587] в большинстве случаев, он просто не проходит через PAM (вероятно, чтобы избежать проблем с курицей и яйцом в некоторых случаях).

Это не совсем ответ на ваши возражения, но это то, как сервисы это делают. Чистота и общее соответствие логике, которую вы хотите, является частью мотивации таких вещей, как [116588]systemd

2
27.01.2020, 20:41

Теги

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