क्षमा करें, मैं इसे चयनित उत्तर के लिए एक टिप्पणी के रूप में पूछना चाहता हूं, लेकिन मेरे पास अभी तक सुपरसुसर पर कोई प्रतिनिधि नहीं है।
सुरक्षा उत्तर समझ में आता है, लेकिन अगर आप "" डालते हैं। आपके PATH में अंतिम चीज़ के रूप में, वर्तमान निर्देशिका में शेल को अंतिम रूप से नहीं देखना चाहिए क्योंकि यह निष्पादन योग्य के लिए खोज करता है, और इस प्रकार सुरक्षा जोखिम को कम करता है? यदि इसने $ PATH को क्रम में खोजा, तो इसे मिलने से पहले / बिन / ls मिलेगा।
तो, मेरे लिए कितना असुरक्षित है "।" मेरे $ PATH पर्यावरण चर के अंत में?
यह मेरे सुझाव के अनुसार काम करता है। यहाँ मैंने परीक्षण किया है:
सबसे पहले, "जोड़ें।" अपने पथ पर्यावरण चर का अंत करने के लिए।
फिर, निम्न फ़ाइल को कुछ निर्देशिका में डालें, जैसे ~ / dir1 / dir2 / test_which.rb:
#!/your/path/to/ruby
puts "this file is from the current directory"
और इस फाइल को /usr/bin/test_which.rb पर डालें
#!/your/path/to/ruby
puts "this file is at /usr/bin/test_which.rb"
फ़ाइलों को chmod + x के लिए सुनिश्चित करें ताकि वे निष्पादन योग्य हों।
अब, यदि आप निर्देशिका को ~ / dir1 / dir2 में बदलते हैं, और test_which.rb निष्पादित करते हैं, तो आपको आउटपुट मिलेगा
this file is at /usr/bin/test_which.rb
वास्तव में, यदि आप कहीं से "कौन सा test_which.rb" चलाते हैं, तो यह रिपोर्ट करना चाहिए
/usr/bin/test_which.rb
आप अभी भी टाइप करके मौजूदा डायरेक्टरी में फाइल निष्पादित कर सकते हैं:
./test_which.rb
ls
होगा/usr/bin/ls
और./ls
नहीं। वहाँ भी बाधा है अगर आप जानते हैं कि कैसे.
अपने रास्ते के अंत में जोड़ना है, तो आपको शायद कुछ पता है कि आप क्या कर रहे हैं। रूट में कभी भी.
पथ नहीं होना चाहिए , कई सिस्टम रूट को लॉग इन नहीं होने देते हैं।