Как запустить CD от имени суперпользователя
Я хочу перейти в каталог с терминала, но доступ запрещен, и набрав sudo cd (directory)
возвращает ошибку о том, что sudo не поддерживает команду cd. я могу использовать sudo gnome-terminal
запустить новое окно терминала с привилегиями root, но я хочу решение, которое я могу использовать из того же окна терминала без полномочий root. Есть ли способ сделать команду cd совместимой с sudo?
2 ответа
Я боюсь, что это невозможно использовать cd
с sudo
непосредственно. sudo
может вызывать исполняемые файлы, например sudo ls
, но cd
это встроенная команда оболочки Другими словами, есть файл, который содержит исполняемый скрипт для ls
(/bin/ls
), но нет файла для cd
так что вы не можете использовать cd
с sudo
,
Ну, вы, безусловно, можете запустить следующую команду:
sudo sh -c "cd somedirectory"
и технически вы изменили текущий каталог запущенной подоболочки. Проблема в том, что subshell будет немедленно завершен, и ваша основная оболочка не изменит свой собственный каталог.
Основная проблема в том, что если вы не можете cd
в каталог, вы не можете запустить оболочку внутри него с вашей текущей учетной записью.
Обходной путь - переключиться на учетную запись пользователя, которая имеет это право, и root, конечно, самый простой выбор:
sudo sh -c "cd somedirectory; sh"