El comando chown en Linux Te permite cambiar la propiedad de los archivos y directorios. Puedes adivinar con razón que ‘chown’ es la abreviatura de ‘change owner’.
Si no conoces estos términos, te recomiendo que leas mi artículo en el cual te explico sobre los permisos y la propiedad de los archivos en Linux.
Aquí tienes una imagen para recordarlo rápidamente:
Con el comando chown, puedes cambiar la propiedad tanto del usuario como del grupo de un archivo o directorio.
Ejemplos del comando chown en Linux
Esta es la sintaxis del comando chown:
chown [opciones] aspectos_de_usuario archivos
Ten en cuenta que chown es un comando administrativo y por lo tanto necesitas ser root o tener derechos sudo para poder hacer cambios con el comando chown. Espero que sepas cómo añadir el usuario sudo.
De lo contrario, verás un error como este:
chown: cambiando la propiedad de 'agatha.txt': Operación no permitida
Ahora vamos a ver cómo utilizar el comando chown con ejemplos.
Aquí está el conjunto de archivos que voy a estar utilizando:
-rw-r--r-- 1 marcocarmonaga marcocarmonaga 456 Jun 26 09:30 agatha.txt
drwxr-xr-x 2 marcocarmonaga marcocarmonaga 4096 Jun 26 09:31 mydir
drwxr-xr-x 3 marcocarmonaga marcocarmonaga 4096 Jun 26 09:30 new
-rw-r--r-- 1 marcocarmonaga marcocarmonaga 356 Jun 26 09:30 sherlock.txt
1. Cambiar o establecer la propiedad del usuario de un archivo
Para cambiar la propiedad de un archivo, utiliza el comando de esta manera:
sudo chown nombre_del_usuario nombre_del_archivo
También puedes utilizar el UID (ID de usuario) en lugar del nombre de usuario. Aquí hay un ejemplo de los cambios que hace:
$ sudo chown team agatha.txt
$ ls -l agatha.txt
-rw-r--r-- 1 team marcocarmonaga 456 Jun 26 09:30 agatha.txt
Como puedes ver, el propietario del archivo ha cambiado de ‘marcocarmonaga’ a ‘team’, pero el grupo sigue siendo ‘marcocarmonaga’. Déjame mostrarte cómo cambiar tanto la propiedad del usuario como la del grupo.
2. Cambiar la propiedad del usuario y del grupo
Para cambiar la propiedad del usuario y del grupo de un archivo, puedes especificar el grupo con el nombre del usuario separado por una columna como esta:
sudo chown nombre_de_usuario:nombre_del_grupo nombre_del_archivo
Por supuesto, puedes utilizar UID y GID en lugar de nombre de usuario y nombre de grupo respectivamente.
$ sudo chown team:grupo sherlock.txt
$ ls -l sherlock.txt
-rw-r--r-- 1 team grupo 356 Jun 26 09:30 sherlock.txt
Como puedes ver en el ejemplo anterior, he cambiado el usuario del archivo sherlock.txt a ‘team’ y el grupo a ‘grupo’.
3. Cambia el grupo a grupo por defecto de un uso r
Cada usuario tiene un grupo por defecto o primario. Si el usuario crea un nuevo archivo o directorio, este grupo primario se convierte automáticamente en el grupo propietario del archivo. Puedes listar el grupo por defecto de un usuario con el comando id.
Ahora, si quieres cambiar la propiedad del grupo de un archivo al grupo por defecto de un usuario, sólo debes dejar el nombre del grupo después de los dos puntos.
sudo chown nombre_de_usuario: nombre_del_archivo
Como puedes ver en el ejemplo de abajo, el archivo sherlock.text tiene como propietario al usuario ‘team’ y como propietario al grupo ‘grupo’. Cambié el propietario a ‘marcocarmonaga’ pero no proporcioné el nombre del grupo. Y, sin embargo, cambió el grupo de ‘grupo’, al grupo por defecto ‘marcocarmonaga’.
$ ls -l sherlock.txt
-rw-r--r-- 1 team grupo 356 Jun 26 09:30 sherlock.txt
$ sudo chown marcocarmonaga: sherlock.txt
$ id marcocarmonaga
uid=1000(marcocarmonaga) gid=1000(marcocarmonaga) groups=1000(marcocarmonaga),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),117(netdev)
$ ls -l sherlock.txt
-rw-r--r-- 1 abhishek abhishek 356 Jun 26 09:30 sherlock.txt
4. Cambiar sólo el grupo
Si sólo quieres cambiar el grupo sin que te moleste el propietario del usuario, puedes utilizar el comando chown de la siguiente manera:
sudo chown :nombre_del_grupo nombre_del_archivo
En el siguiente ejemplo, he establecido la propiedad del grupo a sudo sin tocar la propiedad del usuario:
$ ls -l agatha.txt
-rw-r--r-- 1 marcocarmonaga marcocarmonaga 456 Jun 26 09:30 agatha.txt
$ sudo chown :sudo agatha.txt
$ ls -l agatha.txt
-rw-r--r-- 1 marcocarmonaga sudo 456 Jun 26 09:30 agatha.txt
5. Cambiar la propiedad del usuario y del grupo de un directorio de forma recursiva
En todos los comandos anteriores, puedes sustituir archivo por directorio y funcionará igual para cambiar la propiedad del directorio.
El único problema aquí es que por defecto la propiedad del contenido dentro del directorio no se cambia.
Para cambiar la propiedad del directorio junto con todo el contenido dentro del directorio, puedes utilizar la opción recursiva -R.
sudo chown -R nombre_de_usuario:nombre_del_grupo nombre_del_directorio
6. Establecer la misma propiedad de usuario y grupo que un archivo de referencia
Puedes utilizar un archivo como referencia y cambiar la propiedad de usuario y grupo de un archivo basándose en el archivo de referencia de esta manera:
sudo chown --reference=archivo1.txt archivo2.txt
En el ejemplo siguiente, se ha utilizado el archivo agatha.txt como referencia. Y como puedes ver, la propiedad de sherlock.txt ha sido cambiada en base a agatha.txt.
$ ls -l agatha.txt sherlock.txt
-rw-r--r-- 1 marcocarmonaga sudo 456 Jun 26 09:30 agatha.txt
-rw-r--r-- 1 marcocarmonaga marcocarmonaga 356 Jun 26 09:30 sherlock.txt
$ sudo chown --reference=agatha.txt sherlock.txt
$ ls -l agatha.txt sherlock.txt
-rw-r--r-- 1 marcocarmonaga sudo 456 Jun 26 09:30 agatha.txt
-rw-r--r-- 1 marcocarmonaga sudo 356 Jun 26 09:30 sherlock.txt
Creo que tienes suficientes ejemplos del comando chown para entenderlo. Siempre puedes consultar la página man de chown para más detalles.
Si tienes preguntas o sugerencias, no dudes en házmelo saber.