comment trouver le propriétaire d'un fichier ou d'un répertoire en python
j'ai besoin d'une fonction ou d'une méthode en Python pour trouver le propriétaire d'un fichier ou d'un répertoire.
la fonction doit ressembler à:
>>> find_owner("/home/somedir/somefile")
owner3
5 réponses
Je ne suis pas vraiment un gars de python, mais j'ai pu le faire:
from os import stat
from pwd import getpwuid
def find_owner(filename):
return getpwuid(stat(filename).st_uid).pw_name
vous voulez utiliser os.stat()
:
os.stat(path)
Perform the equivalent of a stat() system call on the given path.
(This function follows symlinks; to stat a symlink use lstat().)
The return value is an object whose attributes correspond to the
members of the stat structure, namely:
- st_mode - protection bits,
- st_ino - inode number,
- st_dev - device,
- st_nlink - number of hard links,
- st_uid - user id of owner,
- st_gid - group id of owner,
- st_size - size of file, in bytes,
- st_atime - time of most recent access,
- st_mtime - time of most recent content modification,
- st_ctime - platform dependent; time of most recent metadata
change on Unix, or the time of creation on Windows)
Exemple d'utilisation pour obtenir le propriétaire UID:
from os import stat
stat(my_filename).st_uid
Notez, cependant, que stat
renvoie le numéro d'utilisateur (par exemple, 0 pour root), pas le nom d'utilisateur réel.
Voir os.stat. Il vous donne st_uid
qui est le code d'utilisateur du propriétaire. Alors vous devez le convertir au nom. Pour ce faire, utilisez pwd.getpwuid.
Voici un exemple de code montrant comment vous pouvez trouver le propriétaire d'un fichier:
#!/usr/bin/env python
import os
import pwd
filename = '/etc/passwd'
st = os.stat(filename)
uid = st.st_uid
print(uid)
# output: 0
userinfo = pwd.getpwuid(st.st_uid)
print(userinfo)
# output: pwd.struct_passwd(pw_name='root', pw_passwd='x', pw_uid=0,
# pw_gid=0, pw_gecos='root', pw_dir='/root', pw_shell='/bin/bash')
ownername = pwd.getpwuid(st.st_uid).pw_name
print(ownername)
# output: root
je suis tombé sur ce récemment, cherchant à obtenir propriétaire Utilisateur et le groupe information, donc j'ai pensé que je devais partager ce que j'ai trouvé:
import os
from pwd import getpwuid
from grp import getgrgid
def get_file_ownership(filename):
return (
getpwuid(os.stat(filename).st_uid).pw_name,
getgrgid(os.stat(filename).st_gid).gr_name
)