Хорошо. Я решил его. Позвольте мне показать решение на всякий случай, кому-то нужно оно. Сначала Вы должны включить IPSEC в ядре, создать установку.
В файле/src/sbin/setkey/parse.y комментируют код
enc_alg
: ALG_ENC_NOKEY {
if ($1 < 0) {
yyerror("unsupported algorithm");
return -1;
}
p_alg_enc = $1;
p_key_enc_len = 0;
p_key_enc = NULL;
/*
if (ipsec_check_keylen(SADB_EXT_SUPPORTED_ENCRYPT,
p_alg_enc, PFKEY_UNUNIT64(p_key_enc_len)) < 0) {
yyerror(ipsec_strerror());
return -1;
}
*/
выполненный делают только в setkey папке. Сгенерированный двоичный файл будет поддерживать пустое шифрование.
Имя исполняемого файла важно. Если ваш файл назван foo.sh
, то выполнение FOO
не будет работать, если нет каких-либо других исполняемых файлов foo
. В отличие от Windows, UNIX не делает неявных расширений файлов.
Если следующие работы:
./ foo.sh
Но это не:
Foo.sh
Это означает, что файл находится в вашем текущем каталоге, и ваш текущий каталог не находится на вашем пути. Для вашей защиты, если вы явно не предоставляете путь к команде, оболочка будет искать только команду между файлами, которые находятся на вашем пути.
Пространства важны. Следующее может работать:
./ foo.sh
Но это (взято из первой версии этого вопроса), безусловно, не будет работать:
./ foo.sh
с пространством между . /
и foo.sh
, оболочка будет думать, что вы хотите выполнить текущий каталог с foo.sh
аргумент Это создаст сообщение об ошибке.