Jika Anda perlu memeriksa izin pengguna lain (ya, saya menyadari ini bertentangan dengan pertanyaan, tetapi mungkin berguna untuk seseorang), Anda dapat melakukannya melalui pwd
modul, dan bit mode direktori.
Penafian - tidak berfungsi di Windows, karena tidak menggunakan model izin POSIX (dan pwd
modul tidak tersedia di sana), misalnya - solusi hanya untuk sistem * nix.
Perhatikan bahwa direktori harus memiliki semua 3 bit set - Baca, Tulis dan eXecute.
Ok, R bukanlah suatu keharusan mutlak, tetapi tanpa itu Anda tidak dapat mencantumkan entri dalam direktori (jadi Anda harus mengetahui namanya). Eksekusi di sisi lain mutlak diperlukan - tanpa pengguna tidak dapat membaca inode file; jadi meskipun memiliki W, tanpa X file tidak dapat dibuat atau dimodifikasi. Penjelasan lebih detail ada di link ini.
Akhirnya, mode tersedia di stat
modul, deskripsinya ada di inode (7) man .
Kode contoh cara memeriksa:
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