sudo -i разрешает только один аргумент

Является ли это нормальным?

> sudo -u misc -i "ls"
note test tmp
> sudo -u misc -i "ls ~"
-bash: ls ~: command not found
> sudo -u misc -i "ls ~"
-bash: ls ~: command not found
> sudo -u misc -i "foo=bar"
[misc]

Все, что имеет место в нем, похоже, интерпретируется как одна команда, которая непризнана. Даже более странно, устанавливая любую переменную окружения, меня бросает в учетную запись другого пользователя. Как я могу запустить эти команды, как ожидалось?

2
задан 4 January 2012 в 04:01

2 ответа

Команда и аргументы, переданные в sudo, не должны быть окружены кавычками, поэтому вы можете попробовать

sudo -u misc -i ls -l

, но

sudo -u misc -i ls ~

не должны перечислять misc , но ваш дом, потому что символ ~ расширен до того, как был передан sudo. Вы можете попытаться избежать этого, используя

sudo -u misc -i ls '~'

, но это снова не работает, потому что sudo не вызывают оболочку для выполнения своей команды, поэтому ~ не имеет смысла из оболочки .

Наконец, решение может быть

sudo -u misc -i bash -c 'ls ~'
4
ответ дан 25 May 2018 в 15:28
  • 1
    Я никогда не понимал, насколько сложно сделать что-то такое с помощью sudo :). Но это работает, а также прекрасно выполняет настройку переменных окружения. Благодарю. – mahemoff 5 January 2012 в 00:56
  • 2
    Просто пересмотрел это и нашел некоторые исправления, обходные пути объяснялись в этой теме. lists.gnu.org/archive/html/bug-bash/2011-02/msg00095.html . sudo -u misc -i bash -c 'cd / tmp; pwd 'не работает, например. Нужна sudo -u misc -i bash -c "cd / tmp". Но лучший способ - передать его в bash ( lists.gnu.org/archive/html/bug-bash/2011-02/msg00095.html ): echo 'cd / tmp; pwd '| sudo -u misc -i bash – mahemoff 21 January 2012 в 03:07
  • 3
    @mahemoff: в этих двух потоках, похоже, нет ссылки на sudo, и команда sudo -u user -i bash -c 'cd tmp; pwd' отлично работает здесь. – enzotib 21 January 2012 в 03:24
  • 4
    Нет, не судо, но похожая идея. (Я искал bash pwd, так как понял, что у других были аналогичные проблемы.) Я просто попробовал теперь стандартную сборку 10.04, а pwd не показывал / tmp, он показал домашний каталог. – mahemoff 21 January 2012 в 05:47

Он работает для меня, но без кавычек:

sudo -u test -i ls -lah ~
0
ответ дан 25 May 2018 в 15:28
  • 1
    Он перечисляет ваш дом, а не пользователя test. – enzotib 4 January 2012 в 04:16

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

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