Решение обфускации $ PATH с помощью / bin / sh (тире)

Этот вопрос является продолжением https://unix.stackexchange.com/questions/126955/percent-in-path-environment-variable. Я размещаю его здесь, так как он более специфичен для дистрибутива.

Оболочка, используемая по умолчанию для sh, а именно тире, не совместима с execvp, потому что она работает с переменной $ PATH. Стандартный способ борьбы со странными именами файлов - использовать схему кодирования URL. Теперь я не могу использовать этот стандарт, потому что резервные резервы%. Для решения этой проблемы у меня есть следующие опции

Рекомендуйте моим пользователям Ubuntu изменить символическую ссылку / bin / sh на что-то другое, например bash. Это необходимо сделать глобально, поскольку popen (3) полагается на / bin / sh. Отклонитесь от традиционной кодировки URL, используя что-то другое, кроме%. Выбрасывайте ошибку, когда появляется любой из запрещенных символов (да, Windows, но это ограничение является нормальным в конфигурации с двойной загрузкой).

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

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

Опция (3) подразумевает слишком большое сокращение функциональности

1
задан 13 April 2017 в 15:37

0 ответов

Другие вопросы по тегам:

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