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:
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:
ls -l fichero.txt
Conm el resultado:
-rw-r--r-- 12 david usuarios 14.0K Oct 8 18:51 filename.txt
|[-][-][-]- [------] [---]
| |
| +-----------> Grupo
+-------------------> 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:
chown USER FILE
Por ejemplo, el siguiente comando cambiará la propiedad de un archivo llamado file1 a un nuevo propietario llamado david:
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:
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:
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 +:
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.
chown USUARIO:GRUPO FICHERO
El siguiente comando cambiará la propiedad de un archivo llamado file1 a un nuevo propietario llamado david y usuarios grupales:
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:
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:
chown :GRUPO FICHERO
El siguiente comando cambiará el grupo propietario de un archivo llamado archivo1 a www-data:
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:
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«:
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):
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:
chown -R www-data: /var/www
Si el directorio contiene enlaces simbólicos, utilizamos la opción «-h«:
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.
chown --reference=REF_FICHERO FICHERO
Por ejemplo, el siguiente comando asignará la propiedad de usuario y grupo del archivo1 al archivo2
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.