Когда я запускаю следующее, это работает:

sudo -u apache 'whoami'

Но когда я запускаю это, он говорит, что команда не найдена:

sudo -u apache 'ls -al ~/.ssh'

Как это исправить?

1 ответ1

2

sudo видит всю строку ls -al ~/.ssh как один аргумент и запускает ее как один, как если бы пользователь apache вызвал

'ls -al ~/.ssh'

И это не работает, потому что нет инструмента с именем ls -al ~/.ssh в целом. Ваша команда должна быть больше похожа

sudo -u apache ls -al ~/.ssh

Обратите внимание , это будет расширяться , прежде чем ~ sudo даже начинается, в контексте Вашего фактического пользователя. Это, с другой стороны:

sudo -u apache ls -al ~apache/.ssh

может быть, что вы действительно хотите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .