Bir bash betiğinden gerçekte ne yürüttüğünüzü kontrol etmek için herhangi bir yöntem var mı?
(Örneğin: sizin bash komut çeşitli komutlar çağırıyor Say tar, mail, scp, mysqldump) ile emin olmak isteyen targerçek, gerçek olan tarile belirlenebilir olan rootdosya ve üst dizin sahibi ve yazma izinleri olan tek varlık kullanıcıya ve sahibi /tmp/surprise/tarolan www-dataveya olmayan bazıları apache2.
Tabii biliyorum PATHve çevre, bunun çalışan bir bash betiğinden ek olarak kontrol edilip edilemeyeceğini merak ediyorum ve eğer öyleyse, tam olarak nasıl?
Örnek: (sözde kod)
tarfile=$(which tar)
isroot=$(ls -l "$tarfile") | grep "root root"
#and so on...
whichne taryapacağını doğru bir şekilde söylememenin yanı sıra ls, varsa dosya (lar) hakkında yanlış bilgi döndürmek için saldırıya uğrayabilir . Ayrıca grepyanlış bilgi döndürmek için kesmek olabilir; bunun yerine kabuk eşleştirme kullanılarak önlenebilir, ancak daha sonra kabuk saldırıya uğrayabilir. Ve kabuk typeilk etapta yanlış sonuçlar vermek için hacklenebilir - veya kabuğun değiştirilebilirliği 50 yıllık işletim sistemlerine kıyasla Unix'in önemli bir yeniliği olduğu için tamamen değiştirilebilir. Bkz. Ken Thompson'ın 1984 Turing adresi. Tamamen kaplumbağalar.
TEİmzaları olan bir veritabanına sahip olan (yani MD5 sağlama toplamından daha kapsamlı olan Linux - sadece AIX - Güvenilir Yürütme ( ) adında bir bileşeni olan) için bunu yanıtlayamıyorum . TE aktif olduğunda ve bir dosya veritabanındayken seçebilirsiniz Programın çalışıp çalışmadığı veya yalnızca veritabanıyla eşleşmediği konusunda uyarır. Ayrıca, iki ayar daha vardır: TEP(güvenilir yürütme PATH) ve TLP(güvenilir KÜTÜPHANE PATH) Yalnızca TEP'deki programlar yürütülebilir ve kitaplıklar yalnızca Linux'ta dizin, TLP'ye dahil edilmiştir.Linux'da size yardımcı olabilecek 'AppArmor' adı verilen bir şey var

