क्या यह जांचने की कोई विधि है कि आप वास्तव में बैश स्क्रिप्ट से क्या निष्पादित कर रहे हैं?
अपने bash स्क्रिप्ट कई आदेशों बुला रहा है कहो (उदाहरण के लिए: tar
, mail
, scp
, mysqldump
) और आप यह सुनिश्चित करें कि बनाने के लिए तैयार हैं tar
वास्तविक है, असली tar
है, जिसके द्वारा निर्धार्य है root
उपयोगकर्ता फ़ाइल और मूल निर्देशिका के मालिक और केवल लिखने की अनुमति के साथ एक होने के और मालिक के /tmp/surprise/tar
साथ www-data
या कुछ नहीं apache2
।
निश्चित रूप से मैं PATH
और पर्यावरण के बारे में जानता हूं , मुझे यह जानने की उत्सुकता है कि क्या इसके अलावा एक चल रही स्क्रिप्ट से जांच की जा सकती है और यदि हां, तो वास्तव में कैसे?
उदाहरण: (छद्म कोड)
tarfile=$(which tar)
isroot=$(ls -l "$tarfile") | grep "root root"
#and so on...
which
, सही तरीके से यह नहीं कहा जा सकता है कि tar
जैसा कि xhienne द्वारा उत्तर ls
दिया गया है, फ़ाइल (नों) के बारे में गलत जानकारी वापस करने के लिए हैक किया जा सकता है, यदि कोई हो। इसके अलावा grep
झूठी जानकारी वापस जाने के लिए काट दिया जा सकता है, इसके बजाय शेल मिलान का उपयोग करके बचा जा सकता है, लेकिन फिर शेल को हैक किया जा सकता है। और शेल को type
पहली जगह से गलत परिणाम देने के लिए हैक किया जा सकता है - या पूरी तरह से प्रतिस्थापित करने के बाद से शेल की बदली 50-वर्षीय ओएस की तुलना में यूनिक्स का एक महत्वपूर्ण नवाचार था। केन थॉम्पसन का 1984 ट्यूरिंग पता देखें। यह सभी तरह से नीचे कछुए है।
TE
) कहा जाता है - जिसमें हस्ताक्षर के साथ एक डेटाबेस होता है (यानी, एमडी 5 चेकसम की तुलना में अधिक व्यापक। जब टीए सक्रिय होता है और एक फ़ाइल डेटाबेस में होती है जिसे आप चुन सकते हैं। क्या प्रोग्राम चलता है - या केवल चेतावनी देता है कि यह डेटाबेस से मेल नहीं खाता है। इसके अलावा, दो अन्य सेटिंग्स हैं: TEP
(विश्वसनीय निष्पादन पथ) और TLP
(विश्वसनीय लिबास पथ)। केवल TEP में ही कार्यक्रमों को निष्पादित किया जा सकता है और पुस्तकालय केवल लोड किए जा सकते हैं। निर्देशिका को TLP में शामिल किया गया है। लिनक्स में I में 'AppArmor' नाम की एक चीज है जो आपकी मदद कर सकती है।