Это немного глупо, но - напишите программу на C, которая выглядит так:
#include <stdio.h>
#include <stdlib.h>
︙
FILE *sh;
sh = popen("/bin/sh", "w"); // Use "/bin/bash" if you need to.
if (sh == (FILE *)NULL) {
perror("popen");
exit(1);
}
<-------- Insert magic here.
fclose(sh);
На « Вставьте магию здесь. ”Укажите, вставьте код для записи сценария в sh
; например,
fprintf(sh, "for x in red blue green\n");
fprintf(sh, "do\n");
fprintf(sh, " echo x = \"$x\"\n");
fprintf(sh, "done\n");
Если это больше, чем просто несколько строк, может быть удобнее хранить его как строковый массив.
Затем скомпилируйте эту программу и сделайте двоичный файл доступным только для выполнения (например, режим 710 или 711).
Ни одно решение не будет надежным, потому что пользователи смогут видеть, какие команды выполняются, используя ps
в другом окне, но это даст им лишь фрагментарные проблески в сценарии.
Конечно, если логика вашего скрипта действительно чувствительна, реальный ответ - перевести его на компилируемый язык.