Вы можете попробовать chattr + i
, установить владельца сценария как root и дать ему права на чтение / выполнение.
После установки этого флага для сценария только root сможет редактировать его (после выполнения chattr -i
)
Более подробную информацию можно найти здесь: http://computernetworkingnotes.com/managing-file-system-security/chattr.html
Вы ожидаете, что md5
прочитает значение переменной backup_dir
и вернет ее хеш-сумму MD5.
Конвейер команд
${backup_dir} | md5
попытается запустить $backup_dir
как команду, передав ее вывод в md5
. Я бы ожидал от этого ошибки «команда не найдена» вместе с хэшем MD5 пустой строки(d41d8cd98f00b204e9800998ecf8427e
)в $hashed
.
Вместо этого вам нужно будет использовать что-то вроде
printf '%s' "$backup_dir" | md5
, чтобы передать md5
значение стандартного входного потока.
Вы также можете использовать echo "$backup_dir" | md5
или md5 <<<"$backup_dir"
, но обратите внимание, что это добавляет новую строку в конец значения $backup_dir
, что изменит хэш.
Если md5
является утилитой md5
, обычно используемой в BSD и BSD -подобных системах (, например. macOS ), тогда вам следует использовать
md5 -q -s "$backup_dir"
Опция -s
принимает в качестве аргумента строку, а -q
заставляет md5
выводить только хэш этой строки и ничего больше.
Резюме:
#!/bin/bash
backup_dir=$(date +%Y-%m-%d_%H-%M-%S)
hashed=$(md5 -q -s "$backup_dir")