GNU/Linux >> Tutoriales Linux >  >> Linux

cómo encontrar el propietario de un archivo o directorio en python

Quiere usar 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)

Ejemplo de uso para obtener el UID del propietario:

from os import stat
stat(my_filename).st_uid

Tenga en cuenta, sin embargo, que stat devuelve el número de identificación del usuario (por ejemplo, 0 para raíz), no el nombre de usuario real.


Es una vieja pregunta, pero para aquellos que buscan una solución más simple con Python 3.

También puedes usar Path de pathlib para resolver este problema, llamando al Path de owner y group método como este:

from pathlib import Path

path = Path("/path/to/your/file")
owner = path.owner()
group = path.group()
print(f"{path.name} is owned by {owner}:{group}")

Entonces, en este caso, el método podría ser el siguiente:

from typing import Union
from pathlib import Path

def find_owner(path: Union[str, Path]) -> str:
    path = Path(path)
    return f"{path.owner()}:{path.group()}"

Realmente no soy un tipo de pitón, pero pude preparar esto:

from os import stat
from pwd import getpwuid

def find_owner(filename):
    return getpwuid(stat(filename).st_uid).pw_name

Me topé con esto recientemente, buscando obtener el usuario propietario y el grupo información, así que pensé en compartir lo que se me ocurrió:

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
    )

Linux
  1. Cómo encontrar el archivo más antiguo en un árbol de directorios en Linux

  2. Cómo agregar el archivo .so a java.library.path en Linux

  3. ¿Cómo hago para que find excluya la carpeta en la que busca?

  4. ¿Cómo desvincular todos los enlaces simbólicos del directorio?

  5. Cómo encontrar el archivo .pid para un proceso dado

Cómo encontrar el tamaño total de un directorio en Linux

¿Cómo encontrar el propietario y el grupo de un directorio?

¿Cómo encuentro la ubicación del ejecutable en C?

¿Cómo encuentro la ubicación MySQL my.cnf?

¿Cómo puedo encontrar el archivo más antiguo en un árbol de directorios?

¿Cómo encontrar una ruta de directorio parcial?