Когда я запускаю следующее, это работает:
sudo -u apache 'whoami'
Но когда я запускаю это, он говорит, что команда не найдена:
sudo -u apache 'ls -al ~/.ssh'
Как это исправить?
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
может быть, что вы действительно хотите.