El uso de archivos y directorios en Linux es una tarea que trabajamos diariamente bien sea en servidores o equipos de escritorio y algo importante que debemos saber de esto es que cada uno de los archivos y directorios en los sistemas operativos Linux poseen un propietario quien es la persona que creo dicho objeto y cuenta con permisos especiales sobre estos, esto es una medida de seguridad que impide que otras personas puedan realizar cambios en estos.
El problema de seguridad más común en ambientes Linux es que al tratarse de un sistema multiusuario podemos crear las cuentas de usuario que deseemos y esas personas podrán acceder al sistema y con los conocimientos necesarios estar en la capacidad de acceder a los archivos de los demás usuarios del sistema, para prevenir en algo esto, el sistema Linux hace uso de la propiedad de un objeto el cual está integrado por usuarios y grupos que crean y editan los archivos, esta propiedad puede asumirse como un identificador de usuario y un identificador de grupo (GID).
En algunos casos puntuales es posible que deseemos cambiar la propiedad de un objeto y para ello el comando chown es ideal ya que nos permite definir un un nuevo propietario, un nuevo grupo o bien ambas cosas de forma simultánea (un nuevo propietario y un nuevo grupo).
Quizás pueda parecer un tema no tan importante pero en situaciones específicas seria ideal editar la propiedad de un archivo, por ejemplo:
- Si sales de vacaciones y debes pedir el favor a un compañero que te edite archivos.
- Si un usuario sale de la compañía es necesario transferir esa propiedad al nuevo usuario.
- Creación un scripts que serán ejecutados por un usuario en particular.
- Transferencia de objetos y demás.
En Linux contamos con tres tipos principales de permisos asociados a los archivos los cuales son:
- Permisos de usuario: estos permisos son aplicados a un usuario único el cual tiene completo acceso al archivo, este es el usuario propietario.
- Permisos grupales: con estos permisos podemos permitir que un grupo de usuarios cuenten con acceso al archivo, este es llamado grupo propietario.
- Otros permisos pueden ser aplicados a los demás usuarios del sistema con ciertas restricciones.
Visto de este modo, cuando se crea un archivo, el propietario es el usuario que lo creó, y el grupo propietario es el grupo actual del usuario que creo dicho archivo.
La sintaxis general de uso del comando chown es la siguiente:
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 ...
1. Cómo ver grupos, UID y GID en Linux
Iniciemos por lo esencial que es determinar los grupos, UID y GID disponibles en el sistema operativo, para listar los grupos disponibles basta con ejecutar lo siguiente:
groups
Ahora, para acceder a la lista de los grupos, sus ID numéricos y su respectivo UID y GID, debemos usar el comando id:
id
Algunos parámetros a usar con el comando id son:
2. Cómo ver el propietario y permisos de un archivo Linux
Si deseamos visualizar el propietario de un archivo o directorio, basta con usar el parámetro -l (long list) con ls:
ls -l (Archivo)
Puedes ver algunas letras y números que se asignan, estas significan:
0 = ---
1 = --x
2 = -w-
3 = -wx
4 = r--
5 = r-x
6 = rw-
7 = rwx
En la línea desplegada, el nombre de la izquierda hace referencia al propietario del archivo y el nombre a la derecha hace referencia a que el archivo pertenece a un grupo con el nombre desplegado.
3. Cómo cambiar el propietario de un archivo Linux
Para modificar el propietario de un archivo debemos saber el nombre de usuario y luego ejecutar la siguiente sintaxis:
sudo chown “nuevo propietario” “archivo”
Si usamos de nuevo ls -l comprobamos que se ha cambiado el propietario del archivo en mención:
Con este mismo método podremos cambiar el propietario de múltiples archivos de forma simultánea:
sudo chown “Nuevo usuario” “Archivo” “Archivo1” “Archivo2”Una forma práctica para establecer nuevos propietarios es el uso de comodines los cuales nos permite seleccionar grupos de archivos, por ejemplo, si deseamos cambiar el propietario de todos los archivos que comiencen con la letra "s” ejecutamos:
sudo chown “Nuevo usuario” s*.*
Luego podemos revisar los permisos de dicho usuario ejecutando:
ls -l solvetic1 S*.*
Si nuestro objetivo ahora es cambiar la propiedad de un directorio, debemos ingresar el nombre del directorio junto con el comando chown de la siguiente manera:
sudo chown “usuario” “./directorio/”
Para verificar las propiedades a nivel de propietario del directorio, combinaremos el parámetro ls con la opción -d (dir) para listar las propiedades del directorio mas no los archivos alojados en el:
ls -l -d ./Solvetic3/
Si deseamos cambiar la propiedad de todos los archivos de un directorio en Linux, debemos usar la opción -R (recursivo) la cual cambiará la propiedad del usuario asignado a los archivos dentro del directorio seleccionado:
sudo chown -R solvetic ./Solvetic3/
4. Cómo cambiar el grupo propietario Linux
Otra de las opciones que nos ofrece el comando chown es cambiar el grupo de un archivo o directorio.
Por ejemplo, podemos cambiar la propiedad del grupo de forma simultánea con el usuario, para ello ingresamos el nuevo nombre del propietario y el nuevo nombre del grupo con dos puntos ":" de la siguiente forma:
sudo chown solvetic:SolveticTest Solvetic.docxPodemos comprobar los permisos ejecutando:
ls -l Solvetic.docx
Otra de las opciones disponibles para definir un nuevo grupo propietario es ingresando los dos puntos y omitir el nombre del grupo así:
sudo chown solvetic: Solvetic.docxEsto otorgará el grupo por defecto del usuario actual:
Para modificar únicamente la propiedad del grupo mas no el usuario, debemos ingresar los dos puntos y omitir el nombre del usuario:
sudo chown :SolveticTest Solvetic.docx
sudo chown 1000:1000 Solvetic.docx
5. Opciones generales de uso del comando chown Linux
A continuación mencionamos algunos de los parámetros que podemos usar con chown en Linux para optimizar el uso del comando:
-c,--changes
-v,--verbose
-f, --silent, --quiet
--dereference
-h, --no-dereference
--from=currentowner:currentgroup
--no-preserve-root
--reference=ref-file
-R, --recursive
-H
--version
--help
Podemos ver como editar el propietario ya sea usuario o grupo de objetos en Linux es simple gracias a chown.