निर्धारित करें कि क्या वर्तमान उपयोगकर्ता ने किसी निर्देशिका में अनुमति लिखी है


9

मुझे पता है कि आप ऐसा करके निर्देशिका के मालिक का निर्धारण कर सकते हैं:

ls -ld ~/foo | awk '{ print $3 }'

आप ऐसा करके वर्तमान उपयोगकर्ता से इसकी तुलना कर सकते हैं:

if [[ $(ls -ld ~/foo | awk '{ print $3 }') == "$USER" ]] # or $(id -u -n ) instead of $USER
then
    echo "You are the owner"
else
    echo "You are NOT the owner"
fi

लेकिन आपके पास मालिक होने के बिना लिखने की अनुमति हो सकती है। आप यह कैसे निर्धारित करते हैं?

जवाबों:


20

मुझे लगता है

if [ -w ~/foo ]; then ....

आपको जो चाहिए वो करना चाहिए।

साथ ही, stat -c %U ~/fooपार्सिंग lsआउटपुट की तुलना में मालिक को प्राप्त करने का एक बेहतर तरीका है ।


1
ध्यान दें कि statआधुनिक लिनक्स सिस्टम के लिए विशिष्ट है, अन्य यूनियनों में एक अलग statया कोई भी नहीं हो सकता है । पार्सिंग एलएस आमतौर पर परेशानी का नुस्खा है , लेकिन तीसरे शब्द के रूप में मालिक को पार्स करना ज्यादातर काम करता है (चीजें बाद में टूट जाती हैं); यह अभी भी सही नहीं है (कुछ सिस्टम उपयोगकर्ता नामों में रिक्त स्थान की अनुमति देते हैं)।
गिलेस एसओ- बुराई को रोकना '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.