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

Используйте sponge из пакета moreutils. Его преимущество в том, что он не записывает в стандартный вывод.

echo test | sudo sponge /tmp/foo

Используйте параметр -a для добавления к файлу вместо его перезаписи.

8
13.01.2020, 17:52
3 ответа
su -s /bin/bash -c "/usr/bin/echo -n foo" -g apache apache
  • -s /bin/bash переопределяет nologin и позволяет интерпретировать значение опции -c
  • -c "/usr/bin/echo -n foo" позволяет избежать использования первого аргумента, начинающегося с тире
23
27.01.2020, 20:08

судо на помощь!

sudo -u <user> -g <group> -- echo -n foo
20
27.01.2020, 20:08

Если оболочка входа пользователя установлена ​​на /sbin/nologin, то пользователь не может войти в систему, и su -, как правило, не будет работать.

Но есть опция su -mдля сохранения среды текущего пользователя и оболочки входа в систему:

su -m <user> -c "<command>"

Например:

su -m apache -c "echo hello; id"

Печать:

hello
uid=33(apache) gid=33(apache) groups=33(apache)
3
07.01.2021, 15:18

Теги

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