Теперь это может быть исправлено. При ошибке # 1495097 вы найдете ссылку на PPA с версией libhunspell-1.3-0, которая исправляет аналогичные сбои в 14.04.
Итак, вы хотите загрузить и запустить http://example.com/install.sh.
На данный момент я предполагаю, что ваш SHA256-хэш хранится локально в файле с именем my-sha256.txt. Файл содержит только сам хеш и символ разрыва в стиле Unix, поэтому его размер должен быть ровно 65 байтов. Вы можете создать его, просто выполнив это:
sha256sum ORIGINAL_FILE.SH | grep -Eo '^\w+' > my-sha256.txt
Как вы распространяете этот хеш-файл с вашей машины разработки на клиента, не является частью этого ответа (но вы можете уточнить свой вопрос и попросить меня обновите эту часть на основе ваших подробных спецификаций).
Фактическая команда, которую должен выполнить ваш клиент для загрузки, проверки и успешного выполнения сценария, может выглядеть так:
t=$(mktemp) && wget 'http://example.com/install.sh' -qO "$t" && if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt ; then bash "$t" ; else echo FAIL ; fi ; rm "$t"
Немного укороченная и уродливая версия без пробелов:
t=$(mktemp)&&wget 'http://example.com/install.sh' -qO"$t"&&if sha256sum "$t"|grep -Eo '^\w+'|cmp -s my-sha256.txt;then bash "$t";else echo FAIL;fi;rm "$t"
Размещено на нескольких строках для удобочитаемости:
t=$(mktemp) &&
wget 'http://example.com/install.sh' -qO "$t" &&
if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt
then bash "$t"
else echo FAIL
fi
rm "$t"
Если вы хотите напрямую предоставить хэш внутри команды в качестве строки вместо чтения из файла, просто используйте одну из моих исходных версий команд выше и замените появление my-sha256.txt на <(echo YOUR_HASH), вставив ваш реальный хэш вместо «YOUR_HASH» заполнителя, конечно. [ ! d7]
Объяснение:
Сценарий / однострочный файл сначала создает временный файл, используя mktemp (использует временную папку системы /tmp). Затем он использует wget, чтобы загрузить скрипт установки из указанного URL-адреса и сохранить его во временном файле. Теперь мы вычисляем его хэш-сумму, фильтруем только хэш-значение из вывода sha256sum и сравниваем это с тем, что мы сохранили вне my-sha256.txt. Если оба хэша равны, мы будем вызывать bash с нашим временным файлом сценария в качестве аргумента, иначе мы echo FAIL, или вы можете вывести собственное сообщение об ошибке. В конце мы очищаем, удаляя наш временный файл в обоих случаях.
Однако, возвращаясь к проблеме безопасного распространения хэша для проверки исходного скрипта, это решение выше вам не поможет, поскольку он решает одну проблему, создавая еще один такой же тип.
На самом деле вам нужно создать пару ключей GPG (и опубликовать свой открытый ключ на сервере ключей) подпишите свой скрипт и предложите сжатый подписанный двоичный файл для загрузки. Затем позвольте клиенту проверить и расшифровать скрипт с помощью gpg еще раз и запустить его с успехом.
Итак, вы хотите скачать и запустить http://example.com/install.sh.
на данный момент я предполагаю, что у вас есть свои sha256 хэш локально сохранены в файле под названием my-sha256.txt. Файл содержит только хэш-и Unix-стиля linebreak характер, поэтому ее размер должен быть ровно 65 байт. Вы можете создать его, выполнив это:
sha256sum ORIGINAL_FILE.SH | grep -Eo '^\w+' > my-sha256.txt
как вы распределите этот хэш-файл на своей машине разработки клиент не является частью этого ответа (еще, можно уточнить Ваш вопрос и попросить обновить эту часть на основе ваших подробных спецификаций).
фактическая команды ваш клиент должен работать для того, чтобы скачать, проверить, и при успешном выполнении скрипта может выглядеть так:
t=$(mktemp) && wget 'http://example.com/install.sh' -qO "$t" && if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt ; then bash "$t" ; else echo FAIL ; fi ; rm "$t"
немного сокращен и уродливую версию без пробелов:
t=$(mktemp)&&wget 'http://example.com/install.sh' -qO"$t"&&if sha256sum "$t"|grep -Eo '^\w+'|cmp -s my-sha256.txt;then bash "$t";else echo FAIL;fi;rm "$t"
размещен на несколько строк для удобочитаемости:
t=$(mktemp) &&
wget 'http://example.com/install.sh' -qO "$t" &&
if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt
then bash "$t"
else echo FAIL
fi
rm "$t"
если вы хотите, чтобы непосредственно обеспечить хеш внутри командной как строки, а не значение из файла, просто используйте один из моих оригинальной версии, и заменить в наступлении my-sha256.txt с [F8] и вводить ваши реальные хэш вместо "YOUR_HASH" заполнитель конечно.
объяснение:
сценарий/сценарий сначала создается временный файл, используя на [F9] (используется папка Temp системы /tmp). Затем он использует [F11], чтобы загрузить ваш скрипт установка из указанного URL и сохранить его в файл Temp. Сейчас мы можем вычислить его хеш-сумму, фильтра только хэш-значение с выхода [F12] и сравните, что у нас хранится в [от f13]. Если оба хэши равны, мы будем ссылаться на bash с нашими временный файл скрипта в качестве аргумента, то мы [с f15] или вы могли бы вывести настраиваемое сообщение об ошибке. В конце концов мы очистить, удалив наш временный файл в обоих случаях.
[однако Д16], возвращаясь к проблеме безопасного распространения хэш для проверки оригинальный сценарий, это решение выше не поможет вам много, так как он решает одну проблему, создавая еще один из того же рода. [dиода d17], что вы действительно должны сделать, это создать пару ключей gpg (и опубликовать свой открытый ключ на сервер ключей), подписывают свой скрипт с ним и предложить сжатого подписал бинарных для скачивания. Затем пусть клиент проверить и расшифровать скрипт еще раз, используя gpg и запустить его на успех.[!dиода d17]Итак, вы хотите загрузить и запустить http://example.com/install.sh.
На данный момент я предполагаю, что ваш SHA256-хэш хранится локально в файле с именем my-sha256.txt. Файл содержит только сам хеш и символ разрыва в стиле Unix, поэтому его размер должен быть ровно 65 байтов. Вы можете создать его, просто выполнив это:
sha256sum ORIGINAL_FILE.SH | grep -Eo '^\w+' > my-sha256.txt
Как вы распространяете этот хеш-файл с вашей машины разработки на клиента, не является частью этого ответа (но вы можете уточнить свой вопрос и попросить меня обновите эту часть на основе ваших подробных спецификаций).
Фактическая команда, которую должен выполнить ваш клиент для загрузки, проверки и успешного выполнения сценария, может выглядеть так:
t=$(mktemp) && wget 'http://example.com/install.sh' -qO "$t" && if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt ; then bash "$t" ; else echo FAIL ; fi ; rm "$t"
Немного укороченная и уродливая версия без пробелов:
t=$(mktemp)&&wget 'http://example.com/install.sh' -qO"$t"&&if sha256sum "$t"|grep -Eo '^\w+'|cmp -s my-sha256.txt;then bash "$t";else echo FAIL;fi;rm "$t"
Размещено на нескольких строках для удобочитаемости:
t=$(mktemp) &&
wget 'http://example.com/install.sh' -qO "$t" &&
if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt
then bash "$t"
else echo FAIL
fi
rm "$t"
Если вы хотите напрямую предоставить хэш внутри команды в качестве строки вместо чтения из файла, просто используйте одну из моих исходных версий команд выше и замените появление my-sha256.txt на <(echo YOUR_HASH), вставив ваш реальный хэш вместо «YOUR_HASH» заполнителя, конечно. [ ! d7]
Объяснение:
Сценарий / однострочный файл сначала создает временный файл, используя mktemp (использует временную папку системы /tmp). Затем он использует wget, чтобы загрузить скрипт установки из указанного URL-адреса и сохранить его во временном файле. Теперь мы вычисляем его хэш-сумму, фильтруем только хэш-значение из вывода sha256sum и сравниваем это с тем, что мы сохранили вне my-sha256.txt. Если оба хэша равны, мы будем вызывать bash с нашим временным файлом сценария в качестве аргумента, иначе мы echo FAIL, или вы можете вывести собственное сообщение об ошибке. В конце мы очищаем, удаляя наш временный файл в обоих случаях.
Однако, возвращаясь к проблеме безопасного распространения хэша для проверки исходного скрипта, это решение выше вам не поможет, поскольку он решает одну проблему, создавая еще один такой же тип.
На самом деле вам нужно создать пару ключей GPG (и опубликовать свой открытый ключ на сервере ключей) подпишите свой скрипт и предложите сжатый подписанный двоичный файл для загрузки. Затем позвольте клиенту проверить и расшифровать скрипт с помощью gpg еще раз и запустить его с успехом.
Итак, вы хотите загрузить и запустить http://example.com/install.sh.
На данный момент я предполагаю, что ваш SHA256-хэш хранится локально в файле с именем my-sha256.txt. Файл содержит только сам хеш и символ разрыва в стиле Unix, поэтому его размер должен быть ровно 65 байтов. Вы можете создать его, просто выполнив это:
sha256sum ORIGINAL_FILE.SH | grep -Eo '^\w+' > my-sha256.txt
Как вы распространяете этот хеш-файл с вашей машины разработки на клиента, не является частью этого ответа (но вы можете уточнить свой вопрос и попросить меня обновите эту часть на основе ваших подробных спецификаций).
Фактическая команда, которую должен выполнить ваш клиент для загрузки, проверки и успешного выполнения сценария, может выглядеть так:
t=$(mktemp) && wget 'http://example.com/install.sh' -qO "$t" && if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt ; then bash "$t" ; else echo FAIL ; fi ; rm "$t"
Немного укороченная и уродливая версия без пробелов:
t=$(mktemp)&&wget 'http://example.com/install.sh' -qO"$t"&&if sha256sum "$t"|grep -Eo '^\w+'|cmp -s my-sha256.txt;then bash "$t";else echo FAIL;fi;rm "$t"
Размещено на нескольких строках для удобочитаемости:
t=$(mktemp) &&
wget 'http://example.com/install.sh' -qO "$t" &&
if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt
then bash "$t"
else echo FAIL
fi
rm "$t"
Если вы хотите напрямую предоставить хэш внутри команды в качестве строки вместо чтения из файла, просто используйте одну из моих исходных версий команд выше и замените появление my-sha256.txt на <(echo YOUR_HASH), вставив ваш реальный хэш вместо «YOUR_HASH» заполнителя, конечно. [ ! d7]
Объяснение:
Сценарий / однострочный файл сначала создает временный файл, используя mktemp (использует временную папку системы /tmp). Затем он использует wget, чтобы загрузить скрипт установки из указанного URL-адреса и сохранить его во временном файле. Теперь мы вычисляем его хэш-сумму, фильтруем только хэш-значение из вывода sha256sum и сравниваем это с тем, что мы сохранили вне my-sha256.txt. Если оба хэша равны, мы будем вызывать bash с нашим временным файлом сценария в качестве аргумента, иначе мы echo FAIL, или вы можете вывести собственное сообщение об ошибке. В конце мы очищаем, удаляя наш временный файл в обоих случаях.
Однако, возвращаясь к проблеме безопасного распространения хэша для проверки исходного скрипта, это решение выше вам не поможет, поскольку он решает одну проблему, создавая еще один такой же тип.
На самом деле вам нужно создать пару ключей GPG (и опубликовать свой открытый ключ на сервере ключей) подпишите свой скрипт и предложите сжатый подписанный двоичный файл для загрузки. Затем позвольте клиенту проверить и расшифровать скрипт с помощью gpg еще раз и запустить его с успехом.
Итак, вы хотите загрузить и запустить http://example.com/install.sh.
На данный момент я предполагаю, что ваш SHA256-хэш хранится локально в файле с именем my-sha256.txt. Файл содержит только сам хеш и символ разрыва в стиле Unix, поэтому его размер должен быть ровно 65 байтов. Вы можете создать его, просто выполнив это:
sha256sum ORIGINAL_FILE.SH | grep -Eo '^\w+' > my-sha256.txt
Как вы распространяете этот хеш-файл с вашей машины разработки на клиента, не является частью этого ответа (но вы можете уточнить свой вопрос и попросить меня обновите эту часть на основе ваших подробных спецификаций).
Фактическая команда, которую должен выполнить ваш клиент для загрузки, проверки и успешного выполнения сценария, может выглядеть так:
t=$(mktemp) && wget 'http://example.com/install.sh' -qO "$t" && if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt ; then bash "$t" ; else echo FAIL ; fi ; rm "$t"
Немного укороченная и уродливая версия без пробелов:
t=$(mktemp)&&wget 'http://example.com/install.sh' -qO"$t"&&if sha256sum "$t"|grep -Eo '^\w+'|cmp -s my-sha256.txt;then bash "$t";else echo FAIL;fi;rm "$t"
Размещено на нескольких строках для удобочитаемости:
t=$(mktemp) &&
wget 'http://example.com/install.sh' -qO "$t" &&
if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt
then bash "$t"
else echo FAIL
fi
rm "$t"
Если вы хотите напрямую предоставить хэш внутри команды в качестве строки вместо чтения из файла, просто используйте одну из моих исходных версий команд выше и замените появление my-sha256.txt на <(echo YOUR_HASH), вставив ваш реальный хэш вместо «YOUR_HASH» заполнителя, конечно. [ ! d7]
Объяснение:
Сценарий / однострочный файл сначала создает временный файл, используя mktemp (использует временную папку системы /tmp). Затем он использует wget, чтобы загрузить скрипт установки из указанного URL-адреса и сохранить его во временном файле. Теперь мы вычисляем его хэш-сумму, фильтруем только хэш-значение из вывода sha256sum и сравниваем это с тем, что мы сохранили вне my-sha256.txt. Если оба хэша равны, мы будем вызывать bash с нашим временным файлом сценария в качестве аргумента, иначе мы echo FAIL, или вы можете вывести собственное сообщение об ошибке. В конце мы очищаем, удаляя наш временный файл в обоих случаях.
Однако, возвращаясь к проблеме безопасного распространения хэша для проверки исходного скрипта, это решение выше вам не поможет, поскольку он решает одну проблему, создавая еще один такой же тип.
На самом деле вам нужно создать пару ключей GPG (и опубликовать свой открытый ключ на сервере ключей) подпишите свой скрипт и предложите сжатый подписанный двоичный файл для загрузки. Затем позвольте клиенту проверить и расшифровать скрипт с помощью gpg еще раз и запустить его с успехом.
Итак, вы хотите загрузить и запустить http://example.com/install.sh.
На данный момент я предполагаю, что ваш SHA256-хэш хранится локально в файле с именем my-sha256.txt. Файл содержит только сам хеш и символ разрыва в стиле Unix, поэтому его размер должен быть ровно 65 байтов. Вы можете создать его, просто выполнив это:
sha256sum ORIGINAL_FILE.SH | grep -Eo '^\w+' > my-sha256.txt
Как вы распространяете этот хеш-файл с вашей машины разработки на клиента, не является частью этого ответа (но вы можете уточнить свой вопрос и попросить меня обновите эту часть на основе ваших подробных спецификаций).
Фактическая команда, которую должен выполнить ваш клиент для загрузки, проверки и успешного выполнения сценария, может выглядеть так:
t=$(mktemp) && wget 'http://example.com/install.sh' -qO "$t" && if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt ; then bash "$t" ; else echo FAIL ; fi ; rm "$t"
Немного укороченная и уродливая версия без пробелов:
t=$(mktemp)&&wget 'http://example.com/install.sh' -qO"$t"&&if sha256sum "$t"|grep -Eo '^\w+'|cmp -s my-sha256.txt;then bash "$t";else echo FAIL;fi;rm "$t"
Размещено на нескольких строках для удобочитаемости:
t=$(mktemp) &&
wget 'http://example.com/install.sh' -qO "$t" &&
if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt
then bash "$t"
else echo FAIL
fi
rm "$t"
Если вы хотите напрямую предоставить хэш внутри команды в качестве строки вместо чтения из файла, просто используйте одну из моих исходных версий команд выше и замените появление my-sha256.txt на <(echo YOUR_HASH), вставив ваш реальный хэш вместо «YOUR_HASH» заполнителя, конечно. [ ! d7]
Объяснение:
Сценарий / однострочный файл сначала создает временный файл, используя mktemp (использует временную папку системы /tmp). Затем он использует wget, чтобы загрузить скрипт установки из указанного URL-адреса и сохранить его во временном файле. Теперь мы вычисляем его хэш-сумму, фильтруем только хэш-значение из вывода sha256sum и сравниваем это с тем, что мы сохранили вне my-sha256.txt. Если оба хэша равны, мы будем вызывать bash с нашим временным файлом сценария в качестве аргумента, иначе мы echo FAIL, или вы можете вывести собственное сообщение об ошибке. В конце мы очищаем, удаляя наш временный файл в обоих случаях.
Однако, возвращаясь к проблеме безопасного распространения хэша для проверки исходного скрипта, это решение выше вам не поможет, поскольку он решает одну проблему, создавая еще один такой же тип.
На самом деле вам нужно создать пару ключей GPG (и опубликовать свой открытый ключ на сервере ключей) подпишите свой скрипт и предложите сжатый подписанный двоичный файл для загрузки. Затем позвольте клиенту проверить и расшифровать скрипт с помощью gpg еще раз и запустить его с успехом.
Поскольку отпечатки пальцев GPG используют небезопасный хэш SHA-1, вот однострочный, который позволяет аутентификацию с помощью неофициального хэша SHA256, вычисленного из открытого ключа с помощью команды
gpg --export <key ID> | sha256sum
:
h="<SHA256 hash of exported public key>"; fp="<PGP key SHA1 fingerprint>"; f='key.pub'; gpg --keyserver pgp.mit.edu --recv $fp && gpg --export $fp > $f && if sha256sum $f | grep -Eo '^\w+' | cmp -s <(echo $h); then rm $f && wget https://example.com/install.sh{,.asc} -q && gpg --verify install.sh{.asc,} && bash install.sh; else rm $f; echo "ERROR: Signing key had invalid SHA256 hash"; fi;
Поскольку отпечатки пальцев GPG используют небезопасный хэш SHA-1, вот однострочный, который позволяет аутентификацию с помощью неофициального хэша SHA256, вычисленного из открытого ключа с помощью команды
gpg --export <key ID> | sha256sum
:
h="<SHA256 hash of exported public key>"; fp="<PGP key SHA1 fingerprint>"; f='key.pub'; gpg --keyserver pgp.mit.edu --recv $fp && gpg --export $fp > $f && if sha256sum $f | grep -Eo '^\w+' | cmp -s <(echo $h); then rm $f && wget https://example.com/install.sh{,.asc} -q && gpg --verify install.sh{.asc,} && bash install.sh; else rm $f; echo "ERROR: Signing key had invalid SHA256 hash"; fi;
Поскольку отпечатки пальцев GPG используют небезопасный хэш SHA-1, вот однострочный, который позволяет аутентификацию с помощью неофициального хэша SHA256, вычисленного из открытого ключа с помощью команды
gpg --export <key ID> | sha256sum
:
h="<SHA256 hash of exported public key>"; fp="<PGP key SHA1 fingerprint>"; f='key.pub'; gpg --keyserver pgp.mit.edu --recv $fp && gpg --export $fp > $f && if sha256sum $f | grep -Eo '^\w+' | cmp -s <(echo $h); then rm $f && wget https://example.com/install.sh{,.asc} -q && gpg --verify install.sh{.asc,} && bash install.sh; else rm $f; echo "ERROR: Signing key had invalid SHA256 hash"; fi;
Поскольку отпечатки пальцев GPG используют небезопасный хэш SHA-1, вот однострочный, который позволяет аутентификацию с помощью неофициального хэша SHA256, вычисленного из открытого ключа с помощью команды
gpg --export <key ID> | sha256sum
:
h="<SHA256 hash of exported public key>"; fp="<PGP key SHA1 fingerprint>"; f='key.pub'; gpg --keyserver pgp.mit.edu --recv $fp && gpg --export $fp > $f && if sha256sum $f | grep -Eo '^\w+' | cmp -s <(echo $h); then rm $f && wget https://example.com/install.sh{,.asc} -q && gpg --verify install.sh{.asc,} && bash install.sh; else rm $f; echo "ERROR: Signing key had invalid SHA256 hash"; fi;
Поскольку отпечатки пальцев GPG используют небезопасный хэш SHA-1, вот однострочный, который позволяет аутентификацию с помощью неофициального хэша SHA256, вычисленного из открытого ключа с помощью команды
gpg --export <key ID> | sha256sum
:
h="<SHA256 hash of exported public key>"; fp="<PGP key SHA1 fingerprint>"; f='key.pub'; gpg --keyserver pgp.mit.edu --recv $fp && gpg --export $fp > $f && if sha256sum $f | grep -Eo '^\w+' | cmp -s <(echo $h); then rm $f && wget https://example.com/install.sh{,.asc} -q && gpg --verify install.sh{.asc,} && bash install.sh; else rm $f; echo "ERROR: Signing key had invalid SHA256 hash"; fi;
Поскольку отпечатки пальцев GPG используют небезопасный хэш SHA-1, вот однострочный, который позволяет аутентификацию с помощью неофициального хэша SHA256, вычисленного из открытого ключа с помощью команды
gpg --export <key ID> | sha256sum
:
h="<SHA256 hash of exported public key>"; fp="<PGP key SHA1 fingerprint>"; f='key.pub'; gpg --keyserver pgp.mit.edu --recv $fp && gpg --export $fp > $f && if sha256sum $f | grep -Eo '^\w+' | cmp -s <(echo $h); then rm $f && wget https://example.com/install.sh{,.asc} -q && gpg --verify install.sh{.asc,} && bash install.sh; else rm $f; echo "ERROR: Signing key had invalid SHA256 hash"; fi;