Проблема із запуском компакт-диска з sudo як іншого користувача


12

Я хочу запустити команду на оболонці від імені іншого користувача. Команда така:

sudo -u USER cd /home/USER

я отримав

sudo: cd: command not found

Який правильний синтаксис для команди, що передається в sudo?

Відповіді:


14

cdє вбудованою оболонкою . Вам потрібно викликати оболонку для виконання вбудованих оболонок:

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

АБО

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

1
Це насправді нічого корисного не зробить --- оболонка вийде відразу після cd. ОП, напевно, хоче sudo -i.
derobert

5

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

Якщо ви хочете перейти до каталогу, а потім запустити команди як інший користувач, запустіть оболонку, яка все це робить.

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

1

Я схильний використовувати: sudo su - USERNAMEа потім робити те, що потрібно як цей користувач. Щоб вийти, просто введітьexit


3
реєстрація як USERNAMEі потім виконання команди відрізняється від безпосередньо запущеної команди якUSERNAME
Пандія,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.