Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero
El comando chmod en sistemas Unix y Linux se utiliza para cambiar los permisos de los archivos y directorios. Los permisos controlan quién puede leer, escribir o ejecutar un archivo o directorio. A continuación te ofrezco una guía completa sobre el uso de chmod, sus opciones y ejemplos.
Conceptos básicos
Cada archivo o directorio en Linux tiene permisos asociados a tres tipos de usuarios:
- Propietario (
u- user) - Grupo (
g- group) - Otros (
o- others)
Existen tres tipos de permisos para cada uno de estos usuarios:
- Lectura (
r- read): Permite leer el contenido del archivo o listar los contenidos de un directorio. - Escritura (
w- write): Permite modificar el contenido de un archivo o añadir/eliminar archivos en un directorio. - Ejecución (
x- execute): Permite ejecutar un archivo o acceder a un directorio.
Estructura de permisos
Los permisos se visualizan mediante un formato de 10 caracteres, donde el primero indica si es un archivo o directorio (- para archivo, d para directorio), y los siguientes nueve indican los permisos para el propietario, grupo y otros, en ese orden.
Ejemplo de permisos:
-rwxr-xr--
- El propietario tiene permisos de lectura, escritura y ejecución (
rwx). - El grupo tiene permisos de lectura y ejecución (
r-x). - Otros solo tienen permisos de lectura (
r--).
Modos de uso de chmod
Existen dos formas principales de utilizar chmod:
- Modo simbólico: Se usan letras y operadores para modificar permisos.
- Modo numérico (octal): Se usan números para representar los permisos.
Modo simbólico
En este modo se usan las letras u (usuario), g (grupo), o (otros) y a (todos) junto con operadores para añadir (+), quitar (-) o establecer (=) permisos.
Sintaxis:
chmod [opciones] permisos archivo_o_directorio
Ejemplos:
- Añadir permisos de ejecución al propietario:
chmod u+x archivo.txt - Quitar permisos de lectura al grupo:
chmod g-r archivo.txt - Asignar permisos de lectura y ejecución para todos (propietario, grupo y otros):
chmod a=rx archivo.txt - Quitar permisos de escritura para otros:
chmod o-w archivo.txt - Añadir permisos de escritura y ejecución para el grupo y otros:
chmod go+wx archivo.txt
Modo numérico (octal)
Los permisos pueden representarse en un número de 3 dígitos, donde cada dígito es la suma de valores para cada permiso:
- Lectura (
r) = 4 - Escritura (
w) = 2 - Ejecución (
x) = 1
El valor se calcula sumando los números correspondientes para cada conjunto de permisos (usuario, grupo, otros).
Ejemplos:
- Permisos de lectura, escritura y ejecución para el propietario, lectura y ejecución para el grupo, y solo lectura para otros:
chmod 754 archivo.txt
Esto asigna los permisos:- Propietario:
rwx(4+2+1=7) - Grupo:
r-x(4+1=5) - Otros:
r--(4=4)
- Propietario:
- Permisos de lectura y escritura para el propietario, sin permisos para el grupo ni otros:
chmod 600 archivo.txt - Permisos de solo lectura para todos:
chmod 444 archivo.txt
Opciones adicionales
-Ro--recursive: Aplica los cambios de forma recursiva a todos los archivos y directorios dentro de un directorio.
Ejemplo:chmod -R 755 mi_directorio/-vo--verbose: Muestra una salida detallada de los archivos cuyos permisos han sido modificados.
Ejemplo:chmod -v 755 archivo.txt-co--changes: Similar a--verbose, pero solo muestra los cambios que realmente se han realizado (si el archivo ya tenía los permisos no muestra nada).
Ejemplo:chmod -c 644 archivo.txt--reference=archivo: Cambia los permisos de un archivo o directorio basándose en otro archivo.
Ejemplo:chmod --reference=referencia.txt archivo.txt
Permisos especiales
Existen algunos permisos especiales que pueden aplicarse a archivos y directorios:
- SUID (Set User ID -
spara el propietario): Permite que un archivo se ejecute con los privilegios del propietario.
Ejemplo para activar SUID:chmod u+s archivo.txt - SGID (Set Group ID -
spara el grupo): Permite que un archivo o directorio se ejecute con los privilegios del grupo.
Ejemplo para activar SGID:chmod g+s archivo.txt - Sticky bit (
t): Se usa comúnmente en directorios públicos para asegurar que solo el propietario de un archivo pueda eliminar o modificar sus archivos.
Ejemplo para activar el sticky bit:chmod +t /directorio_publico
Ejemplos prácticos
- Dar permisos completos al propietario y solo lectura para grupo y otros:
chmod 744 script.sh - Permitir que todos los usuarios puedan leer, escribir y ejecutar un archivo:
chmod 777 archivo.txt - Dar permisos de lectura, escritura y ejecución al propietario, sin permisos para los demás, de manera recursiva en un directorio:
chmod -R 700 mi_directorio/ - Añadir permisos de ejecución para el propietario y el grupo, pero quitar permisos de escritura para otros:
chmod u+x,g+x,o-w archivo.txt - Aplicar permisos a un archivo basándose en los permisos de otro archivo:
chmod --reference=archivo_base.txt archivo_objetivo.txt
Resumen de modos octales
| Permiso | Binario | Octal |
|---|---|---|
| Sin permiso | 000 | 0 |
| Ejecución | 001 | 1 |
| Escritura | 010 | 2 |
| Escritura y ejecución | 011 | 3 |
| Lectura | 100 | 4 |
| Lectura y ejecución | 101 | 5 |
| Lectura y escritura | 110 | 6 |
| Lectura, escritura y ejecución | 111 | 7 |
Conclusión
El comando chmod es una herramienta poderosa para gestionar los permisos de archivos y directorios en sistemas Linux y Unix. Al dominar tanto los modos simbólicos como los numéricos, puedes administrar eficientemente el acceso y control sobre los archivos de tu sistema.