Comando chown en GNU/Linux

Como seguramente ya sabrás en UNIX y en todos los sistemas herederos de este como GNU/Linux, todo es un fichero.

Todos los ficheros están asociados con un propietario y un grupo y se les asignan derechos de acceso de permiso para el propietario del fichero, los miembros del grupo y otros.

En este tutorial, vamos a ver cómo usar el comando chown a través de ejemplos prácticos.

¿Cómo se utiliza el comando chown?

Antes de comenzar a utilizar el comando chown, comencemos por revisar la sintaxis básica.

Las expresiones del comando chown toman la siguiente forma:

  1. chown [OPCIONES] USUARIO[:GRUPO] FICHERO(s)

USUARIO es el nombre de usuario o la ID de usuario (UID) del nuevo propietario. GRUPO es el nombre del nuevo grupo o la ID de grupo (GID). ARCHIVO (s) es el nombre de uno o más archivos, directorios o enlaces. Las identificaciones numéricas deben ir precedidas del símbolo +.

  • USUARIO: si solo se especifica el usuario, el usuario especificado se convertirá en el propietario de los archivos dados, no se cambiará la propiedad del grupo.
  • USUARIO: – Cuando el nombre de usuario va seguido de dos puntos: y no se proporciona el nombre del grupo, el usuario se convertirá en el propietario de los archivos, y la propiedad del grupo de archivos se cambia al grupo de inicio de sesión del usuario.
  • USUARIO: GRUPO: si se especifica tanto el usuario como el grupo (sin espacio entre ellos), la propiedad del usuario de los archivos se cambia al usuario dado y la propiedad del grupo se cambia al grupo dado.
  • : GRUPO: si se omite el usuario y el grupo tiene el prefijo dos puntos: solo la propiedad del grupo de los archivos se cambia al grupo dado.
  • : Si solo se proporcionan dos puntos: sin especificar el usuario y el grupo, no se realiza ningún cambio.

De forma predeterminada, en caso de éxito, chown no produce ningún resultado y devuelve cero.

Usamos el comando ls -l para averiguar quién posee un archivo o a qué grupo pertenece el archivo:

  1. ls -l fichero.txt
  2. Conm el resultado:
  3. -rw-r--r-- 12 david usuarios 14.0K Oct  8 18:51 filename.txt
  4. |[-][-][-]-   [------] [---]
  5.                 |       |
  6.                 |       +-----------> Grupo
  7.                 +-------------------> Propietario

Solo la raíz o el usuario con privilegios de sudo pueden cambiar la propiedad del grupo de un archivo.

Cómo cambiar el propietario de un archivo

Para cambiar el propietario de un archivo, utilizamos el comando chown seguido del nombre de usuario del nuevo propietario y el archivo de destino como argumento:

  1. chown USER FILE

Por ejemplo, el siguiente comando cambiará la propiedad de un archivo llamado file1 a un nuevo propietario llamado david:

  1. chown david file1

Para cambiar la propiedad de varios archivos o directorios, especifíquelos como una lista separada por espacios. El siguiente comando cambia la propiedad de un archivo llamado fichero1 y directorio directorio1 a un nuevo propietario llamado david:

  1. chown david fichero1 directorio1

El ID de usuario numérico (UID) se puede usar en lugar del nombre de usuario. El siguiente ejemplo cambiará la propiedad de un archivo llamado fichero2 a un nuevo propietario con UID de 1000:

  1. chown 1000 fichero2

Si existe un propietario numérico como nombre de usuario, la propiedad se transferirá al nombre de usuario. Para evitar este prefijo, la ID con +:

  1. chown 1000 +fichero2

Cómo cambiar el propietario y el grupo de un archivo

Para cambiar tanto el propietario como el grupo de un archivo, usamos el comando chown seguido del nuevo propietario y grupo separados por dos puntos (:) sin espacios intermedios y el archivo de destino.

  1. chown USUARIO:GRUPO FICHERO

El siguiente comando cambiará la propiedad de un archivo llamado file1 a un nuevo propietario llamado david y usuarios grupales:

  1. chown david:usuarios fichero1

Si omite el nombre del grupo después de los dos puntos (:), el grupo del archivo cambia al grupo de inicio de sesión del usuario especificado:

  1. chown david: fichero1

Cómo cambiar el grupo de un archivo

Para cambiar solo el grupo de un archivo, usamos el comando chown seguido de dos puntos (:) y el nuevo nombre del grupo (sin espacio entre ellos) y el archivo de destino como argumento:

  1. chown :GRUPO FICHERO

El siguiente comando cambiará el grupo propietario de un archivo llamado archivo1 a www-data:

  1. chown :www-data fichero1

Otro comando que puede usar para cambiar la propiedad grupal de los archivos es chgrp.

Cómo cambiar la propiedad de enlaces simbólicos

Cuando no se utiliza la opción recursiva, el comando chown cambia la propiedad del grupo de los archivos a los que apuntan los enlaces simbólicos, no los enlaces simbólicos en sí.

Por ejemplo, si intenta cambiar el propietario y el grupo del enlace simbólico del enlace simbólico1 que apunta a /var/www/fichero1, chown cambiará la propiedad del archivo o directorio al que apunta el enlace simbólico:

  1. chown www-data: symlink1

Lo más probable es que en lugar de cambiar la propiedad del objetivo, obtengamos un error «no se puede desreferenciar» enlace simbólico1 «: Permiso denegado».

El error se produce porque de forma predeterminada en la mayoría de las distribuciones de GNU/Linux, los enlaces simbólicos están protegidos y no puede operar en archivos de destino. Esta opción se especifica en /proc/sys/fs/protected_symlinks. 1 significa habilitado y 0 deshabilitado. Recomendamos no deshabilitar la protección de enlace simbólico.

Para cambiar la propiedad del grupo del enlace simbólico, usamos la opción «-h«:

  1. chown -h www-data symlink1

Cómo cambiar recursivamente la propiedad del archivo

Para operar recursivamente en todos los archivos y directorios bajo el directorio dado, usamos la opción «-R» (–recursive):

  1. chown -R USUARIO:GRUPO DIRECTORIO

El siguiente ejemplo cambiará la propiedad de todos los archivos y subdirectorios bajo el directorio /var/www a un nuevo propietario y grupo llamado www-data:

  1. chown -R www-data: /var/www

Si el directorio contiene enlaces simbólicos, utilizamos la opción «-h«:

  1. chown -hR www-data: /var/www

Otras opciones que se pueden usar al cambiar recursivamente la propiedad del directorio son «-H» y «-L«.

Si el argumento pasado al comando chown es un enlace simbólico que apunta a un directorio, la opción «-H» hará que el comando lo atraviese. «-L» le dice a chown que atraviese cada enlace simbólico a un directorio que se encuentre. Por lo general, no debe usar estas opciones porque puede dañar su sistema o crear un riesgo de seguridad

Usando un archivo de referencia

La opción «–reference = ref_file» permite cambiar la propiedad del usuario y el grupo de los archivos dados para que sean los mismos que los del archivo de referencia especificado (ref_file). Si el archivo de referencia es un enlace simbólico, se utilizará el usuario y el grupo del archivo de destino.

  1. chown --reference=REF_FICHERO FICHERO

Por ejemplo, el siguiente comando asignará la propiedad de usuario y grupo del archivo1 al archivo2

  1. chown --reference=fichero1 fichero2

Conclusión

Hemos visto en sencillos pasos el uso de chown. Podemos consultar más información consultando su página de man.

Espero que esta entrada os pueda servir en el algún momento.

También te puede interesar

Permisos de archivos en Linux

Fuentes consultadas

Linuxsize.com – Chown Command in Linux (File Ownership)