Только для вас я играл с Veracrypt (никогда раньше не слышал этого названия: D).
Вы отформатировали диск как FAT? Тогда это твоя проблема. Когда Veracrypt спросит вас, отформатируйте его как NTFS вместо FAT и попробуйте снова.
FAT32, к сожалению, не поддерживает владельца, разрешения или символические ссылки. Вот почему вы получаете сообщение об ошибке Операция запрещена
. Обратите внимание, что эта ошибка не является «в разрешении отказано»: «операция не разрешена» часто означает «операция не поддерживается», т.е. никто не может этого сделать.
Q1: I'd like to know how to do this using a command that does not require copy and pasting of the first output's checksum (if it's possible).
Bash
не предоставляет механизма для повторного вызова каких-либо выходных данных ранее запущенной команды. Вы должны явно зафиксировать его, если собираетесь использовать его в любых последующих командах.
Q2: I'd like to know the simplest way to do this using a command that does require copy and pasting of the first output's checksum. (Simply attempting to use grep on a double‐quoted pasted checksum (i.e., as a string) doesn't work.)
Таким образом, единственным вариантом здесь является копирование/вставка вывода предыдущей команды. Что касается того, почему это не сработало для вас, когда вы попытались это сделать. Вероятно, это не удалось, потому что при использовании echo <sha1sum>
вы ввели дополнительный символ, символ новой строки (\n
), который изменил строку контрольной суммы.
При выводе строк в любую из хеш-функций, таких как md5
или sha256sum
, обычно лучше всего использовать echo -n <..>
, который сообщает echo
опустить добавление новой строки в конце строки.
Вы можете видеть, как это может повлиять на любые вызовы хэш-функции, например:
$ echo "blah" | sha256sum
41af286dc0b172ed2f1ca934fd2278de4a1192302ffa07087cea2682e7d372e3 -
$ echo -n "blah" | sha256sum
8b7df143d91c716ecfa5fc1730022f6b421b05cedee8fd52b1fc65a96030ad52 -
Истинный хэш строки 'blah' является вторым вызовом.
Похоже, вы проверяете совпадения. Рассматривали ли вы вариант-c
(--check
)для sha256sum
?
Вы можете создать простую функцию в конфигурации .bashrc
или .zshrc
и запустить ее следующим образом:
sha256 <expected-sha-256-sum> <name-of-the-file>
Он сравнивает ожидаемую сумму sha256 с фактической в одной команде.
Функция:
sha256() {
echo "$1 $2" | sha256sum --check
}
Подробную информацию можно найти здесь .
Хорошая идея, @Sasha. Ребята, обратите внимание, что вам нужно поставить два пробела между $1 и $2.
sha256() { echo "$1 $2"|sha256sum -c; }
Для однократного решения можно использовать:
echo "<expected-sha-256-sum> <name-of-the-file>" | sha256sum -c
Опять же, важно иметь два пробела между «ожидаемая -ша -256 -сумма» и «имя -из -файла -».
Вы можете сделать это в одну строку следующим образом:
В Linux:
check=$(sha256sum -b linuxmint-20.2-cinnamon-64bit.iso); check_escaped_space=$(echo $check | sed 's/ / \\/'); grep $check_escaped_space mint_sha256sum.txt -n
На Mac:
check=$(shasum -a 256 -b linuxmint-20.2-cinnamon-64bit.iso); check_escaped_space=$(echo $check | sed 's/ / \\/'); grep $check_escaped_space mint_sha256sum.txt -n
Я использовал mint _sha256sum.txt в качестве файла правильных хэшей для проверки, как они приведены дляhttps://linuxmint.com/edition.php?id=288здесь https://ftp.heanet.ie/mirrors/linuxmint.com/stable/20.2/sha256sum.txt, это должно дать результат
2:50b833f1f093c029bfb7ba6148c9ce96619c01a83e92f35287983fbd62f26b01 *linuxmint-20.2-cinnamon-64bit.iso
, что указывает на то, что он соответствует строке 2 в файле.txt.
Если у вас нет файла значений хэша, а есть только ожидаемый хэш, вы можете просто поместить хэш в файл с пробелом, звездочкой и именем файла, который вы проверяете, или что-то вроде ожидаемый вывод команды sha256sum.
На веб-сайте , с которого вы скачивали, написано, что нужно проверять вот так:
Линукс:
echo "50b833f1f093c029bfb7ba6148c9ce96619c01a83e92f35287983fbd62f26b01 *linuxmint-20.2-cinnamon-64bit.iso" | sha256sum --check
Мак:
echo "50b833f1f093c029bfb7ba6148c9ce96619c01a83e92f35287983fbd62f26b01 *linuxmint-20.2-cinnamon-64bit.iso" | shasum -a 256 --check