Запустите подоболочку как root - PullRequest
1 голос
/ 31 января 2020

Предположим, у вас есть машина Linux / UNIX с Bash. У вас есть файл secret.txt , который может прочитать только root. Вы хотите использовать команду, которая принимает строку в качестве аргумента, скажем,

sample-command <string>

Войдите как пользователь root и выполните команду, используя первую строку текстового файла:

root ~ $ sample-command $(sed '1!d' secret.txt)

Может ли это сделать не-1024 * пользователь sudoer?

Примечание. sudo sh -c "<command>" не помогает, так как подоболочки не переносят корень / привилегия судо. Например,

sarah ~ $ sudo sh -c "echo $(whoami)"

дает вам sarah, а не root.

1 Ответ

2 голосов
/ 31 января 2020

Расширения подобно подстановка команд будет обработана оболочкой перед выполнением фактической командной строки:

sudo sh -c "echo $(whoami)"
foouser

Здесь оболочка сначала запустится whoami , как текущий пользователь, замените расширение его результатом и затем выполните

sudo sh -c "echo foouser"

Расширения не происходят в одинарных кавычках:

sudo sh -c 'echo "$(whoami)"'
root

В этом примере $(whoami) не обрабатывается вызовом shell, потому что он появляется в одинарных кавычках. Следовательно, $(whoami) будет расширяться на subhell перед вызовом echo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...