Cómo usar el comando chown Linux

comando chown linux

En sistemas operativos tipo Unix, el comando chown cambia la propiedad de los archivos y directorios en un sistema de archivos.

Este documento describe la versión GNU/Linux de chown.

¿Qué es la propiedad de los archivos?

Linux está diseñado para soportar un gran número de usuarios. Debido a esto, necesita llevar un registro cuidadoso de quién tiene permiso para acceder a un archivo y cómo puede acceder a él. Estas reglas de acceso se denominan permisos.

Hay tres tipos principales de permisos de archivo:

  • Permisos de usuario. Estos permisos se aplican a un solo usuario que tiene acceso especial al archivo. Este usuario se llama el propietario.
  • Permisos de grupo. Éstos se aplican a un único grupo de usuarios que tienen acceso al fichero. Este grupo es el grupo propietario.
  • Otros permisos. Éstos se aplican a todos los demás usuarios del sistema. Estos usuarios son conocidos como otros, o el mundo.

Cuando se crea un archivo, su propietario es el usuario que lo creó, y el grupo propietario es el grupo actual del usuario.

chown puede cambiar estos valores a algo más.

Sintaxis

chown [-c|--changes] [-v|--verbose] [-f|--silent|--quiet] [--dereference]
      [-h|--no-dereference] [--preserve-root]
      [--from=currentowner:currentgroup] [--no-preserve-root]
      [-R|--recursive] [--preserve-root] [-H] [-L] [-P]
      {new-owner|--reference=ref-file} file ...
chown --help
chown --version

Especificación del nuevo propietario

La nueva propiedad del fichero es especificada por el argumento nuevo-propietario, que toma esta forma general:

[usuario[:grupo]]

Específicamente, hay cinco maneras de formatear nuevo-propietario:

formulario de nuevo propietarioDescripción
usuarioEl nombre del usuario al que pertenece el archivo. En esta forma, se omiten los dos puntos (":") y el grupo. El grupo de propietarios no se modifica.
usuario:grupoEl usuario y el grupo al que pertenece el archivo, separados por dos puntos, sin espacios intermedios.
:grupoEl grupo al que pertenece el archivo. En este formulario, el usuario es omitido, y el grupo debe estar precedido por dos puntos.
usuario:Si se omite el grupo, pero dos puntos siguen al usuario, el propietario pasa a ser usuario y el grupo propietario pasa a ser el grupo de inicio de sesión del usuario.
:Se acepta la especificación de dos puntos sin usuario o grupo, pero no se cambiará la propiedad. Este formulario no causa un error, pero no cambia nada.

Notas sobre el uso

  • El usuario y el grupo pueden ser especificados por nombre o por número.
  • Sólo root puede cambiar el propietario de un archivo. El propietario no puede transferir la propiedad, a menos que el propietario sea root, o utilice sudo para ejecutar el comando.
  • El propietario del fichero puede cambiar el grupo de propiedad de un fichero, si el propietario pertenece a ese grupo. El grupo propietario de un archivo puede ser cambiado, por root, a cualquier grupo. Los miembros del grupo propietario que no sean el propietario no pueden cambiar el grupo propietario del archivo.
  • El grupo propietario también puede ser cambiado usando el comando chgrp. chgrp y chown usan la misma llamada de sistema, y son funcionalmente idénticos.
  • Ciertas operaciones misceláneas de archivos sólo pueden ser realizadas por el propietario o root. Por ejemplo, sólo el propietario o root puede cambiar manualmente el "atime" o "mtime" de un archivo (tiempo de acceso o tiempo de modificación) utilizando el comando táctil.
  • Debido a estas restricciones, casi siempre querrá ejecutar chown como root, o con sudo.

Opciones

OptionDescripción
-c,
--changes
Similar al modo --verbose, pero sólo muestra información sobre los archivos que realmente se han cambiado. Por ejemplo:

 

cambia el propietario de 'dir/dir1/archivo1' de comofriki:jesus a jesus:jesus
-v,
--verbose
Mostrar información detallada de cada archivo procesado. Por ejemplo:

 

cambia el propietario de 'dir/dir1/archivo1' de comofriki:jesus a comofriki:comofriki
el propietario de 'dir/dir1' retenido como comofriki:comofriki
-f,
--silent,
--quiet
"Quiet mode" Modo silencioso. No muestra el output.
--dereferenceDereferencia todos los enlaces simbólicos. Si el archivo es un enlace simbólico, cambie el propietario del archivo de referencia, no el propio enlace simbólico. Este es el comportamiento por defecto.
-h,
--no-dereference
Nunca dereferencia enlaces simbólicos. Si el archivo es un enlace simbólico, cambie el propietario del enlace simbólico en lugar del archivo de referencia.
--from=propietarioactual:grupoactualCambie el propietario o grupo de cada archivo sólo si su propietario o grupo actual coincide con el propietario y/o grupo actual. Cualquiera de los dos puede omitirse, en cuyo caso no se requiere una coincidencia para el otro atributo.
--no-preserve-rootNo trate / (el directorio raíz) de ninguna manera especial. Este es el comportamiento por defecto. Si la opción --preserve-root está previamente especificada en el comando, esta opción la cancelará.
--reference=ref-fileUtilice el archivo del propietario y del grupo de archivos, en lugar de especificar la propiedad con el nuevo propietario.
-R,
--recursive
Operar en archivos y directorios recursivamente. Ingrese a cada directorio que coincida y opere sobre todos sus contenidos.

Opciones

Las siguientes opciones modifican la forma en que se atraviesa una jerarquía cuando se especifica la opción -R o --recursive.

OpciónDescripción
--preserve-rootNunca opere recursivamente en el directorio raíz /.

 

Si no se especifica --recursive, esta opción no tiene efecto.

-HSi un archivo especificado en la línea de comandos es un enlace simbólico a un directorio, atraviéselo y opere también en esos archivos y directorios.
-LAtravesar todos los enlaces simbólicos a un directorio.
-PNo atraviese ningún enlace simbólico; opere con los propios enlaces simbólicos. Este es el comportamiento por defecto.

Si se especifica más de una de -H, -L o -P, sólo entra en vigor la última opción.

Opciones

Estas opciones muestran información sobre el programa y no se pueden utilizar con otras opciones o argumentos.

OptionDescription
--helpMuestre un breve mensaje de ayuda y sale.
--versionMuestra la información de la versión y sale.

Estado de salida

chown sale o cierra con un estado de 0 para el éxito. Cualquier otro número indica una operación fallida.

¿Por qué cambiar la propiedad de un archivo?

Debe utilizar chown cuando desee que los permisos de usuario o grupo de un archivo se apliquen a un usuario o grupo diferente.

Escenarios hipotéticos

Aquí hay algunos ejemplos de cuando puede usar chown:

  • Usted crea un archivo, miArchivo.txt, usando sudo o mientras está conectado como root, por lo que el archivo es propiedad de root. Sin embargo, tiene la intención de que el archivo sea utilizado por su cuenta de usuario habitual, mi usuario.

Usa chown para cambiar de dueño:

sudo chown miUsuario miArchivo.txt
  • Usted es dueño de miArchivo.txt, pero quiere dárselo a otro usuario del sistema llamado noYo. También desea cambiar el grupo de propietarios por el grupo de ese usuario, no por mi grupo.

Utilice chown para cambiar el propietario y el grupo:

sudo chown noYo:noMiGrupo miArchivo.txt
  • Acabas de transferir un directorio entero de archivos, otros archivos, desde otra computadora. Todos los archivos y directorios son propiedad de su nombre de usuario en el otro sistema, y usted quiere que su usuario y grupo actual sea dueño de todos ellos.

Cambie la propiedad del directorio y de todos sus contenidos de forma recursiva, con la opción -R:

sudo chown -R miUsuario:miGrupo otrosArchivos

El comando anterior cambiará la propiedad de cada archivo, subdirectorio y contenido de subdirectorios en otros archivos.

Grupos en Linux

En Linux, un usuario puede ser miembro de múltiples grupos, pero sólo tiene un "grupo actual". El grupo actual del usuario es la identidad de grupo del usuario, o GID.

Cuando el usuario crea un nuevo archivo, la propiedad del archivo se establece en el UID (identidad de usuario) y GID (identidad de grupo) del usuario. Así que cuando el usuario Camila empieza a escribir un nuevo documento, el archivo es propiedad de Camila, y también de su grupo actual. Puede cambiar la propiedad del grupo del archivo con chown, pero sólo root puede usar chown para cambiar el propietario por otro.

Además, cada usuario tiene un grupo de inicio de sesión configurable, que puede ser cualquiera de los grupos de usuarios. Así que cuando Camila se conecta, su grupo de acceso es su grupo actual. El grupo de inicio de sesión se puede cambiar con el comando usermod, usando la opción -g.

sudo usermod -g newlogingroup carla

Un usuario puede cambiar el grupo actual con el comando newgrp. La modificación tiene lugar en un subshell, y persiste hasta que se cierra el subshell. Incluso si Carla cambia su grupo actual con newgrp, se restablecerá a su grupo de inicio de sesión la próxima vez que inicie sesión.

Puede comprobar su grupo actual utilizando el comando id con la opción -g:

id -g

1001
Este es su GID numérico (el número de su grupo actual). Para ver el nombre, especifique la opción -n:

id -ng
comofriki
Para ver todos los miembros de tu grupo, usa una G mayúscula:
id -nG

comofriki sudo jesus libvirtd vboxusers grupodeusuarios

Por defecto, cada usuario de Linux tiene un grupo privado, con ese usuario como único miembro. Así, cuando la cuenta de usuario Carlos se crea con el comando adduser, también se crea un grupo llamado Carlos. El grupo Carlos es el grupo de inicio de sesión predeterminado de Carlos, y sólo tiene un miembro (Carlos).

Grupos en otros sistemas operativos

Otros sistemas operativos utilizan chown, pero sus grupos pueden funcionar de forma diferente.

En macOS X y BSD, por ejemplo, los usuarios no tienen grupos privados. En cambio, todos los usuarios regulares pertenecen a un grupo general llamado usuarios.

En estos sistemas operativos, las opciones y la funcionalidad de chown pueden ser similares, pero diferentes. Si está usando chown en un sistema operativo que no sea Linux, asegúrese de ejecutar man chown para saber cuáles son las diferencias.

Ejemplos

Visualización de la propiedad

Antes de usar chown, es posible que desee comprobar la propiedad actual de un archivo. Puede ver la propiedad, los permisos y otra información importante de un archivo con el comando ls, utilizando la opción -l:

ls -l myscript.sh

-rwxrw-r-- 1 comofriki usuarioscomofriki 12 Nov 5 13:14 miscript.sh

En la salida, verá varios campos de información listados, incluyendo los permisos y la propiedad del archivo. Puede que no tenga sentido al principio, así que vamos a describirlo en detalle.

Esto es lo que significa la información:

datosPosición del campoDescripción
-Campo 1, caracter 1Tipo de archivo: d para un directorio, l (L minúscula) para un enlace simbólico, o - (un guión) para un archivo normal.
rwxCampo 1, caracteres 2-4Permisos de usuario. El propietario puede leer ("r"), escribir en ("w") y ejecutar ("x") este archivo.
rw-Campo 1, caracteres 5-7Permisos de grupo. El grupo propietario puede leer y escribir en este archivo, pero no puede ejecutarlo como un comando.
r--Campo 1, caracteres 8-10Otros permisos, también conocidos como permisos mundiales. Cualquier otro usuario del sistema sólo puede leer el archivo.
1Campo 2Número de enlaces simbólicos a este archivo. Si no hay enlaces simbólicos al archivo, este número es 1, porque el nombre del archivo original está incluido en este recuento. Si hubiera un enlace simbólico al archivo, este número sería 2, o 3 para dos enlaces simbólicos, etc.
comofrikiCampo 3Nombre del propietario. Es el nombre del usuario propietario del archivo. Cuando este usuario intenta acceder al archivo, el acceso está restringido de acuerdo con los permisos del usuario.
usuarioscomofrikiCampo 4Nombre del grupo propietario. Este es el grupo de usuarios al que pertenece el archivo. Cuando un usuario que es miembro de este grupo intenta acceder al archivo, el acceso se restringe en función de los permisos del grupo.
12Campo 5Tamaño. Este archivo contiene 12 bytes de datos.
NovCampo 6Mtime (mes). Nombre abreviado del mes en el que se modificó por última vez el contenido del archivo. Este archivo fue modificado por última vez en el mes de noviembre.
5Campo 7Mtime (día del mes). Este archivo fue modificado por última vez el 5 de noviembre.
13:14Campo 8Mtime (tiempo o año). Este archivo fue modificado por última vez a las 13:14 (1:34 P.M.) del 5 de noviembre de este año. Si se modificó hace más de un año, este campo would list the year instead, for instance 2015.
miscript.shCampo 9Nombre de archivo. El nombre del archivo.

Así que los campos importantes aquí son 1, 3 y 4. Nos dicen que el usuario hope puede leer, escribir o ejecutar el contenido del archivo, y los miembros del grupo hopeusers pueden leer o escribir en él.

Cambiar de propietario

sudo chown comofriki archivo.txt

Cambie el propietario del archivo.txt a el usuario comofriki.

sudo chown comofriki archivo1 archivo2 archivo3

Cambie el propietario del archivo1, archivo2 y archivo3 a el usuario comofriki.

sudo chown comofriki archivo*

Aquí, el asterisco ("*") es un comodín que el shell expande a una lista de todos los archivos cuyo nombre comienza por "archivo". Si el directorio actual contiene cuatro archivos con los nombres de archivo1, archivo2, archivo3 y archivo4, todos los nombres de estos archivos se pasan al comando chown y sus propietarios cambian a usuario comofriki.

sudo chown comofriki misarchivos

Cambie el propietario del archivo o directorio misarchivos a el usuario comofriki.

sudo chown -R comofriki misarchivos

Cambiar el propietario de los ficheros misarchivos a el usuario comofriki. Si misarchivos es un directorio, chown buscará recursivamente (-R) en ese directorio y cambiará el propietario de todos los archivos, subdirectorios y contenidos de subdirectorios.

sudo chown comofriki: archivo1

Cambie el propietario del archivo1 a usuario comofriki, y el grupo de propietarios a grupo de acceso de comofriki.

chown :otrogrupo archivo2

Cambie el grupo propietario de archivo2 a otro grupo. Note que este es el único comando en estos ejemplos que puede ejecutarse sin sudo.

Si el usuario comofriki ejecuta el comando anterior pero no pertenece al grupo otro grupo, el comando fallará, a menos que se ejecute con sudo.

sudo chown 1000:1001 archivo1

Cambie la propiedad del archivo1 al usuario con el UID 1000 numérico y al grupo con el GID 1001 numérico.

sudo chown +1000:+1001 archivo1

Igual que el comando anterior. Si el usuario comofriki tiene UID 1000, y otro usuario se llama "1000" pero tiene UID 1002, este formulario de comando (con los signos "+") cambia inequívocamente el propietario a comofriki.

sudo chown -R comofriki:comofriki Documentos

Cambiar de forma recurrente la propiedad del directorio Documentos, y de todos los archivos y subdirectorios que contiene, el usuario comofriki, y del grupo comofriki.

sudo chown -Rc --reference /inicio/comofriki/bandeja de entrada ~/Documentos/trabajo

Cambie de forma recurrente la propiedad del directorio ~/Documentos/trabajo, y de todos los archivos y subdirectorios que contiene, para que coincida con la propiedad del archivo o directorio /inicio/comofriki/bandeja de entrada.

En el comando anterior, ~ , es un alias en bash que representa su directorio inicio. Su directorio home también puede ser representado por la variable de entorno $HOME, como en $HOME/Documentos/trabajo.

Además, si algún archivo cambia de propietario (opción -c), la información se imprimirá en la salida estándar:

cambió la propiedad de'dir/archivo2' de carlos:carlos a comofriki:comofriki
cambio de propietario de'dir/dir1/archivo1' de maria:maria a comofriki:comofriki
cambió la propiedad de'dir/dir1' de juan:juan a comofriki:comofriki
cambio de propietario de'dir/dir2/archivo2' de german:german a comofriki:comofriki
cambió la propiedad de'dir/dir2' de carla:carla a comofriki:comofriki
cambio de propietario de'dir/archivo1' de steve:steve a comofriki:comofriki
cambio de propiedad de'dir' de grace:grace a comofriki:comofriki:comofriki