यदि आपको किसी अन्य उपयोगकर्ता की अनुमति की जांच करने की आवश्यकता है (हां, मुझे इस सवाल का विरोधाभास है, लेकिन किसी के लिए काम आ सकता है), आप इसे pwd
मॉड्यूल के माध्यम से कर सकते हैं , और निर्देशिका के मोड बिट्स।
डिस्क्लेमर - विंडोज पर काम नहीं करता है, क्योंकि यह POSIX परमिशन मॉडल (और pwd
मॉड्यूल वहां उपलब्ध नहीं है) का उपयोग नहीं करता है , जैसे - केवल * निक्स सिस्टम के लिए समाधान।
ध्यान दें कि एक निर्देशिका के लिए सभी 3 बिट्स सेट होते हैं - पढ़ें, लिखें और eXecute।
ठीक है, आर एक पूर्ण नहीं है, लेकिन w / o यह आप निर्देशिका में प्रविष्टियों को सूचीबद्ध नहीं कर सकते हैं (इसलिए आपको उनके नाम जानना होगा)। दूसरी ओर निष्पादन बिल्कुल आवश्यक है - w / o इसे उपयोगकर्ता फ़ाइल के इनोड को नहीं पढ़ सकता है; यहां तक कि W होने पर भी, बिना X फाइलें बनाई या संशोधित नहीं की जा सकती हैं। इस लिंक पर अधिक विस्तृत विवरण।
अंत में, मोड stat
मॉड्यूल में उपलब्ध हैं , उनका विवरण इनोड (7) आदमी में है ।
नमूना कोड जाँच करने के लिए कैसे:
import pwd
import stat
import os
def check_user_dir(user, directory):
dir_stat = os.stat(directory)
user_id, group_id = pwd.getpwnam(user).pw_uid, pwd.getpwnam(user).pw_gid
directory_mode = dir_stat[stat.ST_MODE]
# use directory_mode as mask
if user_id == dir_stat[stat.ST_UID] and stat.S_IRWXU & directory_mode == stat.S_IRWXU: # owner and has RWX
return True
elif group_id == dir_stat[stat.ST_GID] and stat.S_IRWXG & directory_mode == stat.S_IRWXG: # in group & it has RWX
return True
elif stat.S_IRWXO & directory_mode == stat.S_IRWXO: # everyone has RWX
return True
# no permissions
return False