Я хочу запустить команду от имени другого пользователя с помощью 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