Cómo obtener una lista de todos los propietarios de archivos en un directorio de Linux

Este tutorial está destinado a ayudarlo a obtener una lista de propietarios de todos los archivos en un directorio en Linux. Los comandos que se muestran aquí son universales y se espera que funcionen en cualquier distribución de Linux. Sin embargo, My Lab se basa en Ubuntu 18.04, 16.04 y CentOS 7.

Trabajar con archivos, directorios y permisos de usuario es una tarea diaria cuando se administran sistemas Linux. Casi todo en Linux es un archivo, y saber cómo verificar y cambiar la propiedad de un archivo / directorio es útil.

Enumere los propietarios de archivos en un directorio usando el comando stat

El estadística es una herramienta de línea de comandos que se utiliza para mostrar el estado de archivos o sistemas de archivos en sistemas Linux / Unix. En Ubuntu y todos los sistemas basados ​​en Debian, el paquete coreutils proporciona el comando stat. Si por alguna razón este paquete no está instalado, puede instalarlo usando el comando:

$ sudo apt-get -y install coreutils

En CentOS, el comando también lo proporciona el paquete coreutils que se puede instalar usando yum si falta:

$ sudo yum -y install coreutils

Una vez confirmado que el comando existe, usaremos las siguientes opciones para obtener los propietarios de los archivos en un directorio:

-C : Para especificar el formato
% U : Formato para imprimir el nombre de usuario del propietario del archivo

Entonces la sintaxis del comando es:

 stat -c %U  <file>

Para todos los archivos, utilice la marca comodín *. Vea ejemplos a continuación:

$ cd ~
$ stat -c %U *
jmutai
jmutai
jmutai

El problema con esta salida es que no existe un mapeo entre el archivo y el propietario. Necesitaremos usar bash conceptos para mapear archivo y propietario. Entonces ejecutaremos un comando como el siguiente:

$ cd /dir
$ files=`ls`
$ for file in $files; do owner=`stat -c %C $file`; echo $file $owner; done

La salida de arriba estará en el formato que debería ser fácil de interpretar.

Development jmutai
Documents root
ping_all.sh dan
examples.desktop benard

Para otras secuencias de formato válidas de estadísticas para archivos, consulte su página de manual:

$ man stat

Enumere los propietarios de archivos en un directorio usando el comando buscar

Un hallazgo es una herramienta de línea de comandos de Linux que se usa a menudo para buscar archivos en un directorio. Con algunas expresiones regulares y un comando de impresión, puede enumerar los propietarios de los archivos en un directorio

La sintaxis exacta del comando a utilizar es:

# find /dir -printf '%un'

Esto hará una búsqueda recursiva y una lista por defecto. Puede realizar un filtrado adicional, como imprimir nombres de usuario únicos para evitar duplicados. Para esto, canalice la salida al comando sort, con -u opción:

# find /dir -printf '%un' | sort -t: -u

Para incluir la propiedad del grupo de archivos, agregue una opción% g en la función de impresión.

# find /dir -printf '%u:%gn' | sort -t: -u

El example a continuación se imprimirán todos los nombres de usuario únicos que poseen archivos en el directorio / var /

Ver siguiente example para nombres de usuario y grupos:

Usando el comando ls

También puede usar el comando ls para verificar el propietario de los archivos y directorios en Linux. El único problema es cómo manejar la propiedad recursiva.

# ls -lh /dir 
# ls -lhR /dir

Conclusión

Los tres comandos anteriores deberían ayudarlo a identificar a los propietarios de archivos y directorios en sus máquinas Linux. Si tiene otros comandos / script que cree que podemos actualizar en esta lista, no dude en compartirlos.