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