Выполненные sudo управляют в рамках каталога

Возможные решения могли быть:

  1. Запуск интерактивной сессии.

    sudo -s <<< "cd dir ; command"
    

    или

    sudo /bin/bash -c "cd dir ; command"
    

    Но у меня нет/bin/bash/bin/sh/bin/su или других sudoer полномочий

  2. Каталог Changing прежде sudo сделан.

    cd dir ; sudo command
    

    Но у меня нет разрешения ввести dir.

  3. Мне нужен общий случай pwd набор (как Popen cwd), таким образом, ниже не ответ, я могу использовать:

    sudo command /path/to/file
    

То, что я пытаюсь записать, является Python обертка Popen с sudo=True/False опцией, и в настоящее время я пытаюсь так или иначе заставить cwd параметр работать.

5
задан 11 October 2017 в 22:05

2 ответа

Я не уверен, каково большее изображение, но Ваш подход должен быть должен выполнить команду с на файл в каталоге. Например, если Вы хотите работать grep regex file, где file находится в /root, тогда необходимо приблизиться к нему как это:

$ sudo grep regex /root/file

И не :

$ sudo 'cd /root; grep regex file'
sudo: cd /root; grep regex file: command not found

, Почему этот вывод? Ну, это - синтаксис оболочки, и sudo не выполняет команду в другой интерактивной оболочке.

Другой подход должен был бы изменить переменную среды PWD, как это:

$ sudo -i PWD=/root grep regex file
6
ответ дан 23 November 2019 в 09:13

Для меня комбинация sudo и screen разработанный:

sudo -iu vagrant screen -mS npm_install bash -c 'cd /vagrant && npm install'

Эта команда сначала переключается на vagrant пользователь. Затем как vagrant изменения каталог к /vagrant и выполняется npm install.

0
ответ дан 23 November 2019 в 09:13

Другие вопросы по тегам:

Похожие вопросы: