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

перенаправление вывода с помощью sudo

Я хочу запустить команду от имени другого пользователя с помощью sudo и перенаправить вывод этой команды от имени этого пользователя. Пример, если я бегу:

touch some-file

под пользователем simon владельцем some-file будет пользователь simon. Если я бегу:

sudo -u ernesto touch some-file

тогда some-file принадлежит пользователю ernesto, поскольку я указываю, что хочу запустить команду touch от имени ernesto. Наконец, если я бегу:

sudo -u ernesto ls /some-folder/ > some-file

some-file снова принадлежит пользователю simon, поскольку оператор> перенаправляет вывод всей команды до> в some-файл (который на самом деле запускается пользователем simon). Мне нужно получить вывод списка каталога как ernesto, но с использованием sudo, поскольку каталог, который я хочу перечислить, принадлежит ernesto, и я не могу перечислить каталог, используя с simon.

Он должен использовать sudo, поскольку пользователь ernesto позволяет мне запускать команды sudo без пароля.

Я попытался

sudo -u ernesto $(ls /some-folder/ > some-file)
sudo -u ernesto `ls /some-folder/ > some-file`
sudo -u ernesto 'ls /some-folder/ > some-file'
sudo -u ernesto eval(ls /some-folder/ > some-file)
sudo -u ernesto exec(ls /some-folder/ > some-file)

надеясь, что что-то из этого сработает, но все равно не повезло.

Ты можешь использовать tee через sudo для записи в файл от имени другого пользователя.

В вашем случае написания списка каталогов это становится простым

sudo -u ernesto ls some-directory | sudo -u ernesto tee some-file