El concepto de propietario y grupos de archivos es fundamental para Linux. Cada archivo está asociado a un propietario y un grupo. Puede usar los comandos chown y chgrp para cambiar el propietario o el grupo de un archivo o directorio en particular.
En este artículo, discutiremos el comando 'chown' ya que cubre la mayor parte del 'chgrp ' comando también.
Incluso si ya conoce este comando, probablemente uno de los ejemplos mencionados a continuación podría ser nuevo para usted.
1. Cambiar el propietario de un archivo
# ls -lart tmpfile -rw-r--r-- 1 himanshu family 0 2012-05-22 20:03 tmpfile # chown root tmpfile # ls -l tmpfile -rw-r--r-- 1 root family 0 2012-05-22 20:03 tmpfile
Entonces vemos que el propietario del archivo se cambió de 'himanshu' a 'root'.
2. Cambiar el grupo de un archivo
A través del comando chown, también se puede cambiar el grupo (al que pertenece un archivo).
# ls -l tmpfile -rw-r--r-- 1 himanshu family 0 2012-05-22 20:03 tmpfile # chown :friends tmpfile # ls -l tmpfile -rw-r--r-- 1 himanshu friends 0 2012-05-22 20:03 tmpfile
Si observa de cerca, el grupo del archivo cambió de 'familia' a 'amigos'. Entonces vemos que simplemente agregando un ':' seguido del nuevo nombre del grupo, se puede cambiar el grupo del archivo.
3. Cambiar propietario y grupo
# ls -l tmpfile -rw-r--r-- 1 root family 0 2012-05-22 20:03 tmpfile # chown himanshu:friends tmpfile # ls -l tmpfile -rw-r--r-- 1 himanshu friends 0 2012-05-22 20:03 tmpfile
Entonces vemos que usando la sintaxis '
4. Usando el comando chown en el archivo de enlace simbólico
Aquí hay un enlace simbólico:
# ls -l tmpfile_symlnk lrwxrwxrwx 1 himanshu family 7 2012-05-22 20:03 tmpfile_symlnk -> tmpfile
Entonces vemos que el enlace simbólico 'tmpfile_symlink' enlaza con el archivo 'tmpfile'.
Veamos qué sucede si se emite el comando chown en un enlace simbólico:
# chown root:friends tmpfile_symlnk # ls -l tmpfile_symlnk lrwxrwxrwx 1 himanshu family 7 2012-05-22 20:03 tmpfile_symlnk -> tmpfile # ls -l tmpfile -rw-r--r-- 1 root friends 0 2012-05-22 20:03 tmpfile
Cuando se emitió el comando chown en un enlace simbólico para cambiar el propietario y el grupo, entonces es el referente del enlace simbólico, es decir, 'tmpfile' cuyo propietario y grupo cambiaron. Este es el comportamiento predeterminado del comando chown. Además, existe una bandera '–desreferencia' para el mismo.
5. Usando el comando chown para cambiar a la fuerza el propietario/grupo del archivo simbólico.
Usando la marca '-h', puede cambiar a la fuerza el propietario o grupo de un enlace simbólico como se muestra a continuación.
# ls -l tmpfile_symlnk lrwxrwxrwx 1 himanshu family 7 2012-05-22 20:03 tmpfile_symlnk -> tmpfile # chown -h root:friends tmpfile_symlnk # ls -l tmpfile_symlnk lrwxrwxrwx 1 root friends 7 2012-05-22 20:03 tmpfile_symlnk -> tmpfile
6. Cambiar propietario solo si un archivo es propiedad de un usuario en particular
Con el indicador chown “–from”, puede cambiar el propietario de un archivo, solo si ese archivo ya pertenece a un propietario en particular.
# ls -l tmpfile -rw-r--r-- 1 root friends 0 2012-05-22 20:03 tmpfile # chown --from=guest himanshu tmpfile # ls -l tmpfile -rw-r--r-- 1 root friends 0 2012-05-22 20:03 tmpfile # chown --from=root himanshu tmpfile # ls -l tmpfile -rw-r--r-- 1 himanshu friends 0 2012-05-22 20:03 tmpfile
- En el ejemplo anterior, verificamos que el propietario/grupo original del archivo 'tmpfile' era raíz/amigos.
- A continuación, usamos la marca "-from" para cambiar el propietario a "himanshu", pero solo si el propietario existente es "invitado".
- Ahora, como el propietario existente no era un 'invitado'. Entonces, el comando no pudo cambiar el propietario del archivo.
- A continuación, intentamos cambiar el propietario si el propietario existente es 'root' (lo cual era cierto) y esta vez el comando fue exitoso y el propietario se cambió a 'himanshu'.
En una nota relacionada, si desea cambiar el permiso de un archivo, debe usar el comando chmod.
Si es un principiante, debe comenzar leyendo los conceptos básicos de los permisos de archivo.
7. Cambiar de grupo solo si un archivo ya pertenece a un determinado grupo
Aquí también se usa la bandera '–from' pero de la siguiente manera:
# ls -l tmpfile -rw-r--r-- 1 himanshu friends 0 2012-05-22 20:03 tmpfile # chown --from=:friends :family tmpfile # ls -l tmpfile -rw-r--r-- 1 himanshu family 0 2012-05-22 20:03 tmpfile
Dado que el archivo 'tmpfile' en realidad pertenecía al grupo 'amigos', la condición era correcta y el comando fue exitoso.
Entonces vemos que al usar la bandera '–from=:
NOTA:Al seguir la plantilla '–from=
8. Copie la configuración del propietario/grupo de un archivo a otro
Esto es posible usando el indicador '–reference'.
# ls -l file -rwxr-xr-x 1 himanshu family 8968 2012-04-09 07:10 file # ls -l tmpfile -rw-r--r-- 1 root friends 0 2012-05-22 20:03 tmpfile # chown --reference=file tmpfile # ls -l tmpfile -rw-r--r-- 1 himanshu family 0 2012-05-22 20:03 tmpfile
En el ejemplo anterior, primero verificamos el propietario/grupo del archivo de referencia 'archivo' y luego verificamos el propietario/grupo del archivo de destino 'tmpfile'. Ambos eran diferentes. Luego usamos el comando chown con la opción '–reference' para aplicar la configuración de propietario/grupo del archivo de referencia al archivo de destino. El comando fue exitoso y la configuración del propietario/grupo de 'tmpfile' se hizo similar al 'archivo'.
9. Cambia el propietario/grupo de los archivos recorriendo los directorios recursivamente
Esto es posible gracias a la opción '-R'.
# ls -l linux/linuxKernel -rw-r--r-- 1 root friends 0 2012-05-22 21:52 linux/linuxKernel # ls -l linux/ubuntu/ub10 -rw-r--r-- 1 root friends 0 2012-05-22 21:52 linux/ubuntu/ub10 # ls -l linux/redhat/rh7 -rw-r--r-- 1 root friends 0 2012-05-22 21:52 linux/redhat/rh7 # chown -R himanshu:family linux/ # ls -l linux/redhat/rh7 -rw-r--r-- 1 himanshu family 0 2012-05-22 21:52 linux/redhat/rh7 # ls -l linux/ubuntu/ub10 -rw-r--r-- 1 himanshu family 0 2012-05-22 21:52 linux/ubuntu/ub10 # ls -l linux/linuxKernel -rw-r--r-- 1 himanshu family 0 2012-05-22 21:52 linux/linuxKernel
Entonces vemos eso después de verificar el propietario/grupo de todos los archivos en el directorio 'linux' y sus dos subdirectorios 'ubuntu' y 'redhat'. Emitimos el comando chown con la opción '-R' para cambiar tanto el propietario como el grupo. El comando fue exitoso y el propietario/grupo de todos los archivos se cambió con éxito.
10. Usando el comando chown en un directorio de enlaces simbólicos
Veamos qué sucede si emitimos el comando 'chown' para cambiar recursivamente el propietario/grupo de archivos en un directorio que es un enlace simbólico a algún otro directorio.
Aquí hay un directorio de enlace simbólico 'linux_symlnk' que enlaza con el directorio 'linux' (ya utilizado en el ejemplo '9' anterior):
$ ls -l linux_symlnk lrwxrwxrwx 1 himanshu family 6 2012-05-22 22:02 linux_symlnk -> linux/
Ahora, cambiemos el propietario (de himanshu a root) de este directorio de enlaces simbólicos recursivamente:
# chown -R root:friends linux_symlnk # ls -l linux_symlnk/ -rw-r--r-- 1 himanshu friends 0 2012-05-22 21:52 linuxKernel drwxr-xr-x 2 himanshu friends 4096 2012-05-22 21:52 redhat drwxr-xr-x 2 himanshu friends 4096 2012-05-22 21:52 ubuntu
En el resultado anterior, vemos que el propietario de los archivos y directorios no se modificó. Esto se debe a que, de forma predeterminada, el comando 'chown' no puede atravesar un enlace simbólico. Este es el comportamiento predeterminado, pero también hay un indicador '-P' para esto.
11. Uso de chown para cambiar a la fuerza el propietario/grupo de un directorio de enlace simbólico de forma recursiva
Esto se puede lograr usando la bandera -H
# chown -R -H guest:family linux_symlnk # ls -l linux_symlnk/ total 8 -rw-r--r-- 1 guest family 0 2012-05-22 21:52 linuxKernel drwxr-xr-x 2 guest family 4096 2012-05-22 21:52 redhat drwxr-xr-x 2 guest family 4096 2012-05-22 21:52 ubuntu
Entonces vemos que al usar el indicador -H, se cambió el propietario/grupo de todos los archivos/carpetas.
12. Enumere todos los cambios realizados por el comando chown
Utilice la opción detallada -v, que mostrará si la propiedad del archivo se cambió o se mantuvo, como se muestra a continuación.
# chown -v -R guest:friends linux changed ownership of `linux/redhat/rh7' to guest:friends changed ownership of `linux/redhat' retained to guest:friends ownership of `linux/redhat_sym' retained as guest:friends ownership of `linux/ubuntu_sym' retained as guest:friends changed ownership of `linux/linuxKernel' to guest:friends changed ownership of `linux/ubuntu/ub10' to guest:friends ownership of `linux/ubuntu' retained as guest:friends ownership of `linux' retained as guest:friends