Проблема с запуском cd с sudo в качестве другого пользователя

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

sudo -u USER cd /home/USER 

я получил

 sudo: cd: command not found 

Какой правильный синтаксис для команды передать sudo?

cdвстроенная оболочка . Вы должны вызвать оболочку для выполнения встроенных оболочек оболочки:

 sudo -u USER sh -c 'cd /home/USER' 

ИЛИ

 sudo -u USER bash -c 'cd /home/USER' 

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

Если вы хотите перейти в каталог, а затем запустить команды в качестве другого пользователя, запустите оболочку, которая сделает все это.

 sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething' 

Я обычно использую: sudo su - USERNAME а затем выполняю то, что вам нужно в качестве этого пользователя. Чтобы выйти, просто введите exit

Ответ (не рекомендуется, если это работает):

ssh войти в другой пользователь, по

 $ ssh USER@localhost Enter password: 

и вы можете делать все, что хотите, в качестве ПОЛЬЗОВАТЕЛЯ.