Maestro de Permisos en Linux: Un Análisis Profundo sobre Chmod y Chown

¿Alguna vez te has encontrado enredado en el desconcertante mundo de los permisos de Linux? Si aún te preguntas quién puede leer, escribir o ejecutar qué, bueno, estás en el lugar correcto. ¡Desmitifica el intrincado arte de los permisos de Linux, enfocándote específicamente en el dúo poderoso: chmod y chown!

En este tutorial, te equiparás con las habilidades para controlar el acceso a tus archivos y directorios con confianza.

Ahora, ¡remángate y conquista los permisos de Linux como un campeón!

Prerrequisitos

Antes de embarcarte en esta inmersión profunda en los permisos de Linux, asegúrate de tener una Máquina Linux para dominar los comandos chmod y chown. Este tutorial utiliza Ubuntu 22.04 LTS (Jammy Jellyfish).

Comprendiendo los Comandos chmod y chown

En el ámbito de los permisos de Linux, los comandos chmod y chown ejercen un poder significativo. Comprender cómo usar estos comandos de manera efectiva es crucial para cualquier usuario de Linux, desde principiantes hasta administradores experimentados.

Ambos comandos ofrecen muchas formas de controlar tu sistema Linux, pero a continuación se presentan los conceptos básicos de lo que cada uno es capaz de hacer:

  • chmod – Este comando es la clave para administrar los permisos de archivos y directorios en Linux, lo que te permite especificar quién puede leer, escribir y ejecutar un archivo. Al emplear una combinación de símbolos y códigos numéricos, puedes otorgar o restringir el acceso a usuarios, grupos y otros.
  • chown – Con este comando, puedes cambiar la propiedad de archivos y directorios. Este comando es invaluable cuando necesitas transferir el control administrativo o alterar la asociación entre un archivo y un usuario/grupo.

Ya sea para proteger datos sensibles o agilizar el acceso para un equipo, estos comandos son tus fieles compañeros en el mundo de las operaciones de archivos en Linux.

Sigue leyendo y sumérgete aún más en las complejidades de estos comandos.

Listar Archivos y Ver Permisos

Antes de cambiar permisos y propiedad con los comandos chmod y chown, el primer paso es listar archivos y ver sus permisos.

Como encontrar un libro en una biblioteca, en Linux, a menudo necesitarás ver una lista de archivos junto con sus permisos asociados. Este conocimiento es crucial para una gestión efectiva de archivos.

Para ver los permisos de un archivo o directorio:

Abre una terminal y ejecuta el siguiente comando ls para listar todos los archivos y directorios en el directorio de trabajo actual en un formato largo (-l)

ls -l

El formato largo proporciona información detallada sobre cada archivo o directorio, como se muestra a continuación.

Esta información incluye permisos, número de enlaces, propietario, grupo, tamaño y hora de modificación. Pero tu enfoque en este momento está en los permisos de archivo.

Viewing a list of files and directories

Tres permisos clave gobiernan cada archivo y directorio: leer (r), escribir (w) y ejecutar (x). Cada uno dicta cómo interactúan los usuarios con el contenido de cada archivo y directorio.

Además, cada uno de estos permisos se aplica en tres categorías distintas de propiedad: propietario, grupo y otros (usuarios que no son ni miembros del grupo).

Lo siguiente ilustra cada parte de los permisos de archivo:

  • El primer carácter indica un archivo () o un directorio (d).
  • La primera parte (rw-) – Proporciona al propietario permisos de lectura y escritura pero no de ejecución.
  • La segunda parte (rw-) – Concede al grupo permisos de lectura y escritura pero no de ejecución.
  • La última parte (r–) – Permite a otros permisos de lectura pero no de escritura o ejecución.
Illustrating file permissions

Modificación de permisos mediante el comando chmod: Modo simbólico

Ampliando tu comprensión de los permisos de archivo, sumérgete en una herramienta poderosa para modificar permisos. Imagina ajustar quién puede acceder, modificar o ejecutar un archivo o directorio con precisión. El comando chmod (cambiar modo) te otorga el poder de tomar el control de tu sistema Linux.

Cuando necesites una forma flexible y expresiva de controlar el acceso a tus archivos y directorios con precisión, el modo simbólico hará el truco.

Para modificar permisos con el comando chmod mediante el modo simbólico, sigue estos pasos:

1. Ejecute el siguiente comando who para crear un nuevo archivo (>) llamado user.txt como usuario no privilegiado, que contiene una lista de usuarios actualmente conectados en su máquina Linux.

Este comando no proporciona salida en la terminal, pero verificará los permisos del archivo en el siguiente paso.

who > user.txt

2. A continuación, ejecute el siguiente comando para ver los permisos del archivo user.txt.

ls -l user.txt

A continuación, puede ver los permisos predeterminados del archivo, el propietario, el día y el mes de creación, y el nombre del archivo.

Tome nota de los permisos actuales del archivo, ya que más tarde realizará una comparación. Su enfoque por ahora son los permisos de usuario (rw-).

Viewing the file’s default permissions

3. Ahora, ejecute el siguiente comando para eliminar (-) el permiso de escritura (w) para el propietario (u), dejando inalterado cualquier otro permiso para otras categorías.

La siguiente tabla desglosa lo que representa cada símbolo:

User Symbol Details Operation Symbol Details Permission Symbol Details
u Owner + Add permissions r Read
g Group Remove permissions w Write
o Others = Set permissions explicitly x Execute

Cuando tenga éxito, el comando chmod no tendrá salida en la terminal, lo cual se aplica en todo este tutorial.

chmod u-w user.txt

4. Después de cambiar los permisos, ejecute el siguiente comando para ver los permisos del archivo user.txt.

ls -l user.txt

Compare los permisos del archivo que anotó en el paso dos (rw-) con los que se muestran a continuación. Observe que el propietario (u) ahora solo tiene el permiso de lectura (r–).

Viewing modified owner permission

5. Ahora, ejecuta cada comando a continuación para realizar lo siguiente:

  • Agregar (+), escribir (w) y ejecutar (x) permisos para el propietario (u) en el mismo archivo user.txt.
  • Ver la información del archivo user.txt para verificar los permisos modificados.
chmod u+wx user.txt
ls -l user.txt

Como se muestra a continuación, el usuario ahora tiene permisos de lectura, escritura y ejecución (rwx) para el archivo user.txt.

Viewing modified owner permissions

6. En lugar de agregar, ejecuta el comando chmod a continuación para eliminar (-) lo siguiente:

  • Permiso de ejecución (x) para el propietario (u).
  • Permiso de escritura (w) para el grupo (g).
  • Todos los permisos (rwx) para otros (o).

Este comando te permite eliminar permisos de diferentes categorías simultáneamente con un solo comando.

Esta vez, la opción -v le indica a chmod que muestre un mensaje sobre los cambios realizados por la operación.

chmod -v u-x,g+w,o-rwx user.txt
Viewing modified permissions for owner, group, and others

7. A continuación, ejecuta el siguiente comando para realizar las siguientes operaciones:

  • Agregar (+) permisos de lectura (r) a todas las categorías.
  • Eliminar (-) permisos de escritura y ejecución (wx) para todas las categorías (a).
chmod a+r,a-wx user.txt

8. Ahora, ejecuta el siguiente comando para ver los permisos actualizados del archivo user.txt.

ls -l user.txt
Viewing updated permissions for all categories

? Alternativamente, puedes modificar el mismo permiso para las tres categorías (usuario, grupo y otros) con los siguientes comandos:

chmod ugo-r – Elimina (-) los permisos de lectura (r) para las tres categorías (ugo).

chmod ugo+r – Agrega (+) los permisos de lectura (r) para las tres categorías (ugo).

9. Por último, ejecuta los comandos a continuación para realizar lo siguiente:

  • chmod – Establece (=) los permisos de lectura y escritura (rw) para el propietario y el grupo, y elimina los permisos de otros (o=).
    El símbolo = te permite establecer explícitamente permisos y anular cualquier permiso existente. Si no se especifican permisos después del símbolo =, se eliminan todos los permisos para esa categoría.
  • ls – Visualiza los cambios que realizaste en los permisos del archivo user.txt.
chmod ug=rw,o= user.txt
ls -l user.txt
Viewing the modified permissions set

Ajustar Derechos de Acceso Usando el Comando chmod: Modo Octal

Imagina tener la capacidad de establecer rápidamente y con precisión permisos para tus archivos sin las complejidades de la notación simbólica. El modo octal (notación en base ocho) se convertirá en tu nuevo método favorito para gestionar permisos.

En el modo octal (notación en base ocho), los permisos se representan mediante un número de cuatro o tres dígitos, del 0 al 7. Cada número corresponde a un conjunto específico de permisos para el propietario, el grupo y otros, de la siguiente manera:

  • Lectura (r) = 4
  • Escritura (w) = 2
  • Ejecución (x) = 1
  • Sin permisos (-) = 0

Para ver cómo funciona el modo octal en la gestión de permisos de archivos, lleva a cabo estos pasos:

1. Ejecute el siguiente comando chmod para agregar los siguientes permisos (664) al archivo user.txt:

  • Propietario – lectura (4) + escritura (2) + ejecución (0) = 6
  • Grupo – lectura (4) + escritura (2) + ejecución (0) = 6
  • Otros – lectura (4) + escritura (0) + ejecución (0)= 4

Cuando se utiliza un número de cuatro dígitos con el comando chmod para permisos de archivo en Linux, el dígito principal (el más a la izquierda) representa permisos especiales, como setuid, setgid y el bit sticky. Los siguientes tres dígitos representan los permisos estándar para el propietario, grupo y otros, respectivamente.

Pero al usar un número de tres dígitos, el primer dígito representa los permisos del propietario del archivo (u), el segundo para el grupo del archivo (g), y el último para otros (o).

En muchos casos, especialmente cuando no se trata de permisos especiales, es posible que solo vea la notación de tres dígitos. El cero principal, que indica notación octal, puede entenderse e implícitamente omitirse. Como en el ejemplo a continuación, en lugar de 0664, se utiliza 664.

chmod 664 user.txt

2. A continuación, ejecute el siguiente comando para ver los permisos del archivo user.txt.

ls -l user.txt

En la salida a continuación, puede ver que los permisos establecidos para el archivo user.txt están en modo simbólico, equivalente a 664 en modo octal.

Viewing permissions modified via octal mode

3. Ahora, ejecuta el comando stat a continuación para ver un conjunto completo de estadísticas sobre el archivo user.txt, incluidos los permisos en los modos simbólico y octal.

stat user.txt

En la propiedad de Acceso, como se muestra a continuación, verás el modo octal y simbólico asociado con los permisos de archivo del archivo user.txt.

Con esta información, mejorarás tu comprensión de cómo ajustar permisos usando el modo octal.

Viewing the octal and symbolic representations of permissions

Cambiando la propiedad del archivo con el comando chown

Mientras que los permisos dictan qué acciones se pueden realizar en un archivo o directorio, puedes especificar quién tiene el derecho de establecer o modificar estos permisos cambiando la propiedad.

El comando chown (cambiar propietario) es el comando principal para administrar la propiedad de archivos y directorios. Al igual que el comando chmod, el comando chown es un comando solo para el usuario root, solo el usuario root puede cambiar la propiedad de un archivo o directorio.

Para administrar la propiedad con el comando chown, procede con los siguientes pasos:

1. Ejecuta los siguientes comandos para crear un usuario (useradd) llamado bill y proporcionar una contraseña segura.

Necesitas tener más de un usuario en tu máquina local que no sea el usuario predeterminado, que eres tú, para ver cómo funciona el cambio de propiedad.

sudo useradd bill
sudo passwd bill
Adding a user and updating user password

2. A continuación, ejecuta cada comando a continuación y escribe una lista de usuarios conectados actualmente (who) en un archivo llamado new.txt como un usuario no privilegiado, y visualiza (ls) su propietario y permisos.

who > new.txt
ls -l  new.txt

Abajo, la salida muestra que el propietario del archivo es mercy.

Viewing the owner of the new.txt file

3. Con el propietario verificado, ejecuta el comando chown a continuación para cambiar el propietario del archivo new.txt a bill.

Al igual que el comando chmod, el comando chown no proporciona salida, pero verificarás el cambio de propietario en el siguiente paso.

sudo chown bill new.txt

4. Ahora, ejecuta el siguiente comando para visualizar (ls) el nuevo propietario del archivo new.txt.

ls -l  new.txt

La salida a continuación confirma que has cambiado correctamente el propietario del archivo new.txt a bill, quien ahora tiene control y autoridad sobre ese archivo.

Viewing the new owner of the new.txt file

Aplicando el Comando chown para Modificar la Propiedad del Grupo

En el sistema de archivos de Linux, cada archivo y directorio está asociado no solo con un propietario individual sino también con un grupo. Así como un solo instrumento desafinado puede perturbar todo el conjunto, una propiedad incorrecta puede provocar problemas potenciales.

¿Deberías preocuparte? Realmente no. La asociación de grupos permite un enfoque en capas para los permisos de archivo. Este enfoque permite que varios usuarios colaboren y compartan acceso según la membresía al grupo.

Para modificar la propiedad de un grupo, sigue estos pasos:

1. Ejecuta el siguiente comando para ver el grupo asociado con el archivo new.txt.

ls -l  new.txt
Viewing the group associated with the new.txt file

2. A continuación, ejecuta los comandos a continuación, que no proporcionan una salida pero realizan lo siguiente:

  • Crea un grupo (groupadd) llamado developers.
  • Cambia la propiedad del grupo (chown) del archivo new.txt a developers.
sudo groupadd developers
sudo chown :developers new.txt

? Alternativamente, en lugar de un enfoque individual, utiliza los siguientes comandos para cambiar de forma recursiva el propietario y la propiedad del grupo de un archivo o un directorio completo.

sudo chown -R john:finance-group user.txt

sudo chown -R john:finance-group ~/Desktop

3. Ahora, vuelve a ejecutar el siguiente comando para ver (ls) la nueva propiedad del grupo del archivo new.txt.

ls -l  new.txt

A continuación, la salida confirma que has cambiado con éxito la propiedad del grupo del archivo new.txt a developers.

Viewing the new group ownership of the new.txt file

Modificación de la Propiedad de Archivos mediante Identificadores Numéricos de UID y GID

Mientras que los nombres de usuario y de grupo ofrecen una forma legible para identificar a los propietarios de archivos, cada usuario y grupo también está asociado con identificadores numéricos únicos.

Estos identificadores numéricos únicos son el Identificador de Usuario (UID) y el Identificador de Grupo (GID). Proporcionan una forma inequívoca de establecer la propiedad del archivo en entornos con nombres de usuario y de grupo superpuestos o similares.

Para cambiar la propiedad utilizando UIDs y GIDs numéricos, realiza estos pasos:

1. Ejecute el siguiente comando para listar la información (ls) sobre el archivo new.txt.

La opción -n indica al comando ls que muestre UIDs y GIDs numéricos en lugar de resolverlos a sus nombres de usuario y grupo correspondientes.

ls -n new.txt

Observe el UID y GID asociados con el archivo new.txt, ya que los necesitará para realizar comparaciones en el siguiente paso.

Viewing the UID and GID associated with the new.txt file

2. A continuación, ejecute los siguientes comandos de getent para obtener el UID y GID del usuario y grupo que desea establecer como propietarios de su archivo.

Asegúrese de reemplazar los marcadores <username> y <groupname> con su nombre de usuario y nombre de grupo preferidos.

getent passwd <username>
getent group <groupname>

Tomar nota del UID (es decir, 1002) y GID (es decir, 1005) en la siguiente salida, ya que los necesitará para cambiar la propiedad en el siguiente paso.

Por defecto, al crear un usuario en Linux, se crea automáticamente un grupo con el mismo nombre que el usuario. Este grupo sirve como grupo primario del usuario y se agrega automáticamente a este grupo primario.

Por lo tanto, el GID del usuario john difiere del GID del grupo finance. A menos que el usuario sea añadido explícitamente al grupo, sus respectivos GIDs siguen siendo diferentes.

Viewing UID and GID for user john and group finance

3. A continuación, ejecute el siguiente comando para cambiar la propiedad y el grupo propietario del archivo new.txt. Asegúrese de reemplazar 1002 y 1005 con los que anotó en el paso dos.

? Ten en cuenta que el uso de UID y GID numéricos puede ser menos legible que los nombres de usuario y grupos. Por lo tanto, asegúrate de usar los números correctos para evitar cambios no deseados.

sudo chown 1002:1005 new.txt

4. Finalmente, vuelve a ejecutar el comando a continuación para listar información (ls) sobre el archivo new.txt y verificar los cambios en la propiedad del archivo.

ls -n new.txt

Compara el UID y GID que anotaste en el paso uno con los que se muestran a continuación. Observa que la propiedad del nuevo archivo ha cambiado de 1001:1003 a 1002:1005.

Verifying the new UID and GID for the new.txt file

Conclusión

Acabas de embarcarte en una exploración exhaustiva de los permisos de Linux, dominando comandos cruciales como chmod y chown. A lo largo de este tutorial, te has vuelto hábil en la modificación de permisos utilizando modos simbólicos y octales.

También has adquirido habilidades para gestionar la propiedad de archivos y asignaciones de grupos, ya sea por nombre o mediante UID y GID numéricos. Con esta nueva experiencia en chmod y chown, ahora tienes herramientas poderosas para gobernar el acceso y la propiedad dentro de tu sistema Linux.

Pero, ¿por qué no fortalecer aún más tu competencia en Linux? Tal vez considera adentrarte en métodos avanzados de control de acceso, incluyendo Listas de Control de Acceso (ACL). ¡Apunta a un control aún más preciso sobre los permisos de archivos y directorios!

Source:
https://adamtheautomator.com/chmod-and-chown/