Я пишу звичайну складену програму, для якої потрібно створити спеціальний файл і написати в нього чарівне печиво. Я не можу записати файл безпосередньо з програми, модель безпеки системи вимагає від мене запустити допоміжний інструмент із підвищеними привілеями, щоб виконати трюк. Я можу навести будь-яку кількість аргументів до помічника інструменту. Тепер я хотів би вибрати декілька дуже простих системних команд, які послужили б помічником і створили для мене файл. Щось на зразок цього:
/bin/sh -c "/bin/echo -n 'magic' > /some/where/file"
Простий touch
не вирізає його, як мені потрібно записати файл cookie у файл, простий echo
без обгортки оболонки не працює, оскільки для запису файлу потрібен перенаправлення. Мені не комфортно телефонувати оболонці з привілеями root, щоб виконати таке тривіальне завдання. Чи є якась дійсно проста, обмежена системна команда, яку я міг би закликати написати файл для мене?
tee
. Спасибі!
/bin/sh -c 'echo magic > /path/to/magic/file'
це не працює? Це був би виконуваний файл і два аргументи. Вам потрібно буде побудувати останній аргумент у вигляді рядка (з sprintf або аналогом). Чи є причина, що це не працює для вас? З вашого запитання це здається, що doCommandAsRoot () не приймає вхід для передачі в команду, правильно? В іншому випадку ви можете замінити останній аргумент'cat > /path/to/magic/file'
і передавати дані замість побудови рядка.