Опасность: уродливое решение впереди;сделайте резервную копию двоичного файла, прежде чем продолжить
Прежде всего, проверьте, легко ли доступна жестко закодированная строка: используйте strings
в вашем двоичном файле и посмотрите, отображает ли она указанную вами строку (возможно,будет состоять из нескольких частей, например /bin/tar
, --exclude
, --ignore-failed-read
, ...).
Если это удастся, возьмите выбранный вами шестнадцатеричный редактор, откройте двоичный файл и найдите жестко закодированную строку;если он разделен на несколько частей, то вам нужен файл, содержащий /bin/tar
;перезаписать tar
произвольным трехбуквенным именем, например fkt
( f a k e t ar; быстрый поиск в Google не обернулсялюбой результат на /usr/bin/fkt
, поэтому мы должны быть в безопасности).
Теперь программа должна вызывать ваш /usr/bin/fkt
вместо обычного tar
.
Теперь вставьте ваш /bin
скрипт, подобный следующему:
#!/bin/sh
/bin/tar --use-compress-prog=pbzip2 $*
назовите его с именем, которое вы выбрали ранее (fkt
), и правильно установите разрешения (они должны быть 755 и принадлежать root
).Этот скрипт просто берет все параметры, которые он получает, и вызывает реальный tar
, добавляя перед ними нужный вам параметр.
Другим решением, которое я предложил в комментариях, может быть создание chroot
только для приложения, переименование tar
в другое имя (realtar
, может быть?) И вызов сценария выше tar
(очевидно, теперь вы должны изменить /bin/tar
внутри скрипта на /bin/realtar
).
Если программа обновляется не очень часто и трюк сработал с первой попытки, я бы, вероятно, пошел с первым решением, установивподдерживать и поддерживать chroots не весело.