Si vous avez besoin de vérifier la permission d' un autre utilisateur (oui, je réalise que cela contredit la question, mais peut être utile pour quelqu'un), vous pouvez le faire via le pwd
module et les bits de mode du répertoire.
Clause de non- responsabilité - ne fonctionne pas sous Windows, car il n'utilise pas le modèle d'autorisations POSIX (et le pwd
module n'y est pas disponible), par exemple - solution uniquement pour les systèmes * nix.
Notez qu'un répertoire doit avoir tous les 3 bits définis: lecture, écriture et exécution.
Ok, R n'est pas un must absolu, mais sans lui, vous ne pouvez pas lister les entrées dans le répertoire (vous devez donc connaître leurs noms). Exécuter en revanche est absolument nécessaire - sans cela, l'utilisateur ne peut pas lire les inodes du fichier; donc même avoir W, sans X, les fichiers ne peuvent pas être créés ou modifiés. Explication plus détaillée sur ce lien.
Enfin, les modes sont disponibles dans le stat
module, leurs descriptions sont en inode (7) man .
Exemple de code comment vérifier:
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