Como obtener los propietarios de cada archivo en directorios de Linux

En el pequeño tutorial de hoy explicaremos diferentes maneras de obtener una lista de archivos junto a sus respectivos dueños en cualquier directorio de Linux. Los trucos siguientes aplican a la práctica totalidad de las distribuciones basadas en Linux/*NIX, aunque en particular estos ejemplos han sido realizados en Centos 7.3.

Cualquier administrador de sistemas o usuario más o menos avanzado se las tiene que ver a diario con gestión de usuarios, archivos y permisos. Como casi todo en Linux está representado por un archivo (incluso procesos) nos será de gran utilidad cualquier truco que nos ayude a gestionar los ficheros de una forma ágil.

Cómo ver los propietarios de cada archivo en directorios de Linux

A continuación repasaremos diferentes métodos para visualizar los dueños efectivos de cada archivo/directorio en cualquier versión de GNU Linux.

Saber quién es el propietario de cada elemento en los diferentes directorios del sistema nos permitirá resolver multitud de problemas o incluso detectar un uso malintencionado de los recursos del equipo.

Listar propietarios con el comando Stat

Stat en Linux es una herramienta de línea de comandos que nos permite revisar el estado de archivos o sistemas de archivos. En sistemas típicos como Ubuntu y todos los basados en Debian esta herramienta está incluida dentro del paquete coreutils. En caso de que debamos instalarlo nos fijaremos en el siguiente apartado.

Instalar coreutils en Linux

  • Debian/Ubuntu:
sudo apt-get install coreutils
  • En CentOS se hace así:
sudo yum -y install coreutils

Sintaxis de stat

Vamos a utilizar la opción -c para especificar a continuación un formato, que en este caso será %U para consultar los usuarios propietarios de cada archivo. Sería algo así: stat -c %U <archivos>

Es decir, si por ejemplo nos situamos en un directorio y queremos ver una lista con todos los usuarios propietarios de archivos en la misma, pondremos un asterisco en el lugar del nombre de archivo:

stat -c %U *

A continuación podemos comparar la salida del comando ls -ltr (1) con la salida de este comando para que veáis la correspondencia entre ambos.

Al tratarse de archivos que solo pertenecen a mi usuario, vemos que se repite siempre el mismo, concretamente se repite la salida por cada archivo presente en el directorio.

Script sencillo con stat

Como lo anterior no nos ofrece un mapeo que relacione cada archivo con su usuario, vamos a conseguir esto con un pequeño script de una linea que lanzaremos con el intérprete de bash:

Definimos la variable files:

files=`ls`

Lanzamos el script:

for file in $files; do owner=`stat -c %U $file`; echo $file $owner; done

La salida nos permitirá ver una columna con el nombre de archivo junto a una segunda conlumna con el propietario. De nuevo, adjunto el resultado de un comando listar sencillo para comparar.

Es posible aplicar muchas más opciones de filtrado con el comando, podéis consultarlas en la ayuda con man stat.

Listar propietarios en directorios con find

Find es un comando de Linux / UNIX que permite realizar búsquedas por archivo y directorio, con cierta potencia por cierto. Si combinamos el comando con algo de regex y printf, tenemos lo siguiente:

# find /dir -printf  '%u\n'

Este comando realiza una búsqueda recursiva con listado, aunque pueden aparecer valores duplicados, por lo que filtraremos además con sort para obtener valores únicos:

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

Y obtendremos el siguiente resultado:

Visualizar los propietarios de ficheros en Linux con el comando find

Ahora, supongamos que queremos obtener también el grupo al que pertenece cada uno de los propietarios. Haremos lo siguiente:

find /dir -printf '%u:%g\n' | sort -t: -u

Visualizar los propietarios y grupos de archivos y directorios en Linux con el comando find

Con este último comando habremos extraído todos los propietarios y sus grupos, de entre los que tienen archivos en el directorio /var.

Comando ls

El tradicional ls -ltr nos permitirá realizar una búsqueda con bastante nivel de detalle en cualquier directorio del sistema, aunque no es tan apropiado como los anteriores si hablamos de directorios con muchos archivos, dado que tendremos que paginar.

ls -ltr

Si queremos realizar una enumeración de directorios y ficheros en Linux de forma recursiva, este comando nos puede servir de ayuda haciendo lo siguiente:

ls -lhR | more

Espero que os sea de utilidad y si tenéis nuevas o mejores formas de listar propietarios de archivos en UNIX o Linux no dejéis de compartirlo con la gente 😉

2 comentarios en “Como obtener los propietarios de cada archivo en directorios de Linux

Deja tu comentario (puedes hacerlo de forma anónima)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.