Как я могу подражать 'sudo su - пользователь' в сценарии?

Необходимо попробовать что-то как:

flac -c -d -force-raw-format --endian=little --signed=unsigned input.flac | \
  lame -r --little-endian --unsigned \
       -s 44.1 [other encoding options here] - output.mp3

На flac сторона:

  • -c вывод средств к stdout
  • -d декодировать
  • -force-raw-format --endian=little --signed=unsigned вызовите СЫРЫЕ ДАННЫЕ, прямой порядок байтов, неподписанный вывод

На lame сторона:

  • - читайте из stdin (это почти стандартно),
  • -r считайте СЫРЫЕ ДАННЫЕ pcm данные
  • --little-endian --unsigned соответствуйте что хромые выводы
  • -s частота: соответствуйте тому параметру тому, что содержит Ваш flac файл
  • Вам, возможно, понадобилось бы --bitwidth если Ваш flac файл не является 16bits/sample

Относительно порядка байтов и со знаком, не уверенный то, что "собственный" формат Вы имеете, (или как решить, что) - пробуют несколько комбинаций. Пока они соответствуют с обеих сторон канала, выбирание неправильного должно только стоить процессорного времени.

3
14.07.2013, 23:54
2 ответа

Казалось бы, что кун-фу полномочия на Вашем сервере является довольно интересной обрабатываемой деталью. Существует две вещи, которые можно попробовать, но поскольку мы можем только предположить, какой alice и боб могут и не могут сделать, YMMV.

Почему это должен быть скрипт, который запущен как alice? Поскольку это - некоторый автоматизированный доступ? Ну, если существует некоторый демон крона, у Вас может быть задание крона для боба, который регулярно выполняет некоторый сценарий удара. Если тот сценарий удара перезаписываем alice, Вы нашли себя методом для выполнения сценариев, как боб без потребности в su (делает)? вуду. Все же это действительно смягчает безопасность немного...

Другой подход, я никогда не пробовал, идет вроде фоновой оболочки с stdin и связанный с каналами. Должно быть возможно отправить sudo su - bob\n к каналу stdin и это должно заставить фоновую оболочку выполнить ту команду. Каждая последующая команда, отправленная в фоновую оболочку, должна быть выполнена как боб. Грубый эскиз - это:

mkdir -p /tmp/backshell
mkfifo /tmp/backshell/stdin
mkfifo /tmp/backshell/stdout
mkfifo /tmp/backshell/stderr

bash -l >/tmp/backshell/stdout 2>/tmp/backshell/stderr </tmp/backshell/stdin &

cat /tmp/backshell/stdout &
cat /tmp/backshell/stderr >&2 &

echo "sudo su - bob" >> /tmp/backshell/stdin
echo "whoami" >> /tmp/backshell/stdin

Однако это имеет дефект что после первого echo канал stdin закрывается и следовательно кожух соединителя также. Таким образом, необходимо или найти способ помешать каналу stdin закрываться, или Вы реализуете его с помощью чего-то немного более сложного. Я думаю Python как довольно хороший модуль для подоболочек и взаимодействующий с ними.

0
27.01.2020, 21:32
  • 1
    Другой возможный взлом должен настроить простой setuid сценарий, принадлежавший bob. Снова, это значительно ослабляет безопасность. –  tripleee 16.07.2013, 09:40

Необходимо смочь передать команды, которые будут выполнены к stdin sudo su - bob команда (и следовательно к оболочке это создает):

sudo su - bob <<ENDCOMMANDS
echo "Running as:"
whoami
echo "done now...
ENDCOMMANDS
1
27.01.2020, 21:32

Теги

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