Есть ли способы проверить, что вы на самом деле выполняете из bash-скрипта?
Предположим, что ваш Баш скрипт звонит несколько команд (например: tar, mail, scp, mysqldump) , и вы готовы , чтобы убедиться , что tarфактическая, реальная tar, которая может быть определена с помощью rootпользователя , являющегося владельцем файла и родительский каталог и только один с правами записи а не некоторые /tmp/surprise/tarс www-dataили apache2быть владельцем.
Конечно, я знаю об PATHокружающей среде, мне любопытно узнать, можно ли это дополнительно проверить из запущенного сценария bash и, если да, то как именно?
Пример: (псевдокод)
tarfile=$(which tar)
isroot=$(ls -l "$tarfile") | grep "root root"
#and so on...
whichнеправильному сообщению, что tarбудет делать, ответ xhienne lsможет быть взломан, чтобы вернуть ложную информацию о файле (ах), если таковые имеются. Также grepможет быть взломан, чтобы вернуть ложную информацию; этого можно избежать, используя вместо этого сопоставление оболочки, но тогда можно будет взломать оболочку. И оболочка может быть взломана, чтобы дать неправильные результаты, typeво-первых, или полностью заменена, поскольку возможность замены оболочки была важным нововведением Unix по сравнению с 50-летними ОС. См. Адрес Тьюринга Кена Томпсона 1984 года. Это черепахи все время вниз.
TE), который имеет базу данных с сигнатурами (т. Е. Более обширную, чем контрольная сумма MD5. Когда TE активен, а файл находится в базе данных, вы можете выбрать запускается ли программа - или только предупреждает о том, что она не соответствует базе данных. Кроме того, есть два других параметра: TEP(доверенное выполнение PATH) и TLP(доверенное LIBrary PATH). Могут выполняться только программы в TEP, а библиотеки могут загружаться только с каталог включен в TLP. В Linux I есть кое-что под названием «AppArmor», которое может вам помочь

