Есть ли способы проверить, что вы на самом деле выполняете из 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», которое может вам помочь