Existe-t-il des méthodes pour vérifier ce que vous exécutez réellement à partir d'un script bash?
Supposons que votre script bash appelle plusieurs commandes (par exemple: tar
, mail
, scp
, mysqldump
) et vous êtes prêt à vous assurer que tar
le réel, réel tar
, qui est déterminable par l' root
utilisateur étant le fichier et le répertoire parent propriétaire et le seul avec des autorisations d'écriture et pas certains /tmp/surprise/tar
avec www-data
ou apache2
étant le propriétaire.
Bien sûr, je connais PATH
et l'environnement, je suis curieux de savoir si cela peut également être vérifié à partir d'un script bash en cours d'exécution et, si oui, comment exactement?
Exemple: (pseudo-code)
tarfile=$(which tar)
isroot=$(ls -l "$tarfile") | grep "root root"
#and so on...
which
ne pas dire correctement ce qui tar
va faire, comme l'a répondu xhienne, il ls
pourrait être piraté pour renvoyer de fausses informations sur le ou les fichiers, le cas échéant. grep
Peut également être piraté pour renvoyer de fausses informations; cela pourrait être évité en utilisant la correspondance du shell à la place, mais le shell pourrait être piraté. Et le shell pourrait être piraté pour donner des résultats erronés type
en premier lieu - ou remplacé entièrement car la remplaçabilité du shell était une innovation importante d'Unix par rapport aux systèmes d'exploitation vieux de 50 ans. Voir l'adresse Turing de 1984 de Ken Thompson. C'est des tortues tout le long.
TE
) - qui a une base de données avec des signatures (c'est-à-dire plus étendue qu'une somme de contrôle MD5. Lorsque TE est actif ET qu'un fichier est dans la base de données, vous pouvez choisir si le programme s'exécute - ou avertit uniquement qu'il ne correspond pas à la base de données. En outre, il existe deux autres paramètres: TEP
(PATH d'exécution approuvé) et TLP
(CHEMIN LIBrary approuvé). Seuls les programmes dans TEP peuvent être exécutés et les bibliothèques ne peuvent être chargées qu'avec le répertoire est inclus dans TLP. Dans Linux I, il y a quelque chose appelé "AppArmor" qui peut vous aider.