En este artículo, veremos el comando chmod
, su sintaxis y entenderemos cómo funciona el sistema de permisos en los sistemas operativos de la familia Linux.
En la familia de sistemas tipo UNIX, la seguridad y el control de acceso a archivos y directorios son aspectos clave. Una de las herramientas principales para gestionar los permisos de acceso en estos sistemas es el comando chmod
. Te permite definir quién y qué acciones puede realizar con tus archivos.
Sintaxis del comando chmod y parámetros adicionales
La sintaxis básica del comando chmod
es la siguiente:
chmod [opciones] <permisos> <archivos>
Donde:
- En lugar de
opciones
— parámetros adicionales del comando que pueden controlar su comportamiento. - En lugar de la palabra
permisos
— los nuevos permisos de acceso que deben establecerse para los archivos o directorios especificados. - En lugar de la palabra
archivos
— una lista de archivos o directorios para los que se deben cambiar los permisos de acceso.
Además de la sintaxis básica, el comando chmod
también admite varias opciones que se utilizan para cambiar el comportamiento del comando. Algunas de las opciones más utilizadas incluyen:
-c, --changes
: Similar a--verbose
, pero solo muestra una salida detallada cuando realmente se realiza un cambio.-f, --silent, --quiet
: Modo silencioso; suprime la mayoría de los mensajes de error.-v, --verbose
: Modo detallado; muestra un mensaje de diagnóstico para cada archivo procesado.--no-preserve-root
: No trata ‘/’ (el directorio raíz) de ninguna manera especial, lo cual es la configuración predeterminada.--preserve-root
: No opera recursivamente en ‘/’.--reference=RFILE
: Establece los permisos para que coincidan con los permisos del archivoRFILE
, ignorando cualquierMODE
especificado.-R, --recursive
: Cambia archivos y directorios recursivamente.--help
: Muestra un mensaje de ayuda y sale.--version
: Muestra información de la versión y sale.
Por ejemplo, para establecer permisos de lectura, escritura y ejecución para el propietario, solo lectura para el grupo y ningún permiso para los demás usuarios para el archivo ejemplo.txt
, podemos usar el siguiente comando:
chmod 740 ejemplo.txt
Esto significa que el propietario tendrá permisos de acceso completos (lectura, escritura y ejecución). El grupo tendrá solo permisos de lectura. Y los demás usuarios no tendrán ningún permiso de acceso al archivo.

Permisos en Linux
Cuando trabajas con el comando chmod
, es importante entender los permisos de acceso básicos que se asignan a archivos o directorios. En Linux, se utilizan tres tipos principales de permisos de acceso:
- Lectura (Read) — se indica con la letra “r”. Permite ver el contenido de un archivo o directorio.
- Escritura (Write) — se indica con la letra “w”. Permite crear, modificar y eliminar archivos dentro de un directorio, así como modificar el contenido de un archivo.
- Ejecución (Execute) — se indica con la letra “x”. Da permiso para ejecutar un archivo o para ingresar a un directorio.
Cada uno de los tipos de permisos de acceso mencionados anteriormente puede asignarse a tres grupos de usuarios:
- Propietario (Owner) — el usuario que es el propietario del archivo o directorio.
- Grupo (Group) — el grupo de usuarios al que pertenece el archivo o directorio.
- Otros usuarios (Others) — todos los demás usuarios del sistema.
La combinación de estos permisos de acceso básicos para cada grupo de usuarios define el conjunto completo de permisos de acceso para un archivo o directorio.
Por ejemplo, los permisos de acceso rwxr-x--
para un archivo significan que el propietario tiene todos los permisos de acceso (lectura, escritura y ejecución), el grupo tiene solo permisos de lectura y ejecución, y los demás usuarios no tienen ningún permiso de acceso a este archivo.
Al usar el comando chmod
, podemos cambiar estos permisos de acceso básicos para cada grupo de usuarios de acuerdo con los requisitos de seguridad y la política de acceso.
Ver permisos en archivos y directorios
Veamos cómo puedes ver los permisos actuales de archivos y directorios. Para ello, usaremos el comando ls
en combinación con la opción -l
, que muestra un formato de lista larga de archivos y directorios, incluyendo información sobre los permisos.
Aquí tienes un ejemplo del uso del comando ls -l
:
-rw-r--r-- 1 user1 user1 12345 Oct 10 10:00 myfile.txt
drwxr-xr-x 2 user1 user1 4096 Oct 10 09:00 mydir
La salida del comando consta de varias columnas, y nos interesa la primera columna, que contiene información sobre los permisos. En este ejemplo:
myfile.txt
tiene los permisos-rw-r--r--
, lo que significa que el propietario del archivo (user1
) tiene permisos de lectura y escritura, y los demás usuarios tienen solo permisos de lectura.mydir
es un directorio, y sus permisosdrwxr-xr-x
nos dicen que el propietario del directorio puede leer, escribir y ejecutarlo, y los demás usuarios solo pueden leer y ejecutar.
También puedes ver los permisos de un archivo o directorio usando el comando getfacl
(obtener listas de control de acceso de archivos). Este comando mostrará una lista completa de permisos para un directorio o archivo. Un ejemplo de la salida de este comando se proporciona a continuación:
# file: file.txt
# owner: user1
# group: group1
user::rw-
group::r--
other::r--
Cambiar permisos de acceso
Ahora que hemos aprendido cómo ver los permisos actuales de archivos y directorios, pasemos a cambiar los permisos de acceso usando el comando chmod
. Puedes hacerlo usando notaciones simbólicas y numéricas, para directorios y archivos, y también de forma recursiva, cambiando los permisos para todos los objetos anidados en el directorio especificado.
Notación simbólica
La notación simbólica en el comando chmod
te permite cambiar los permisos de acceso a archivos y directorios usando un enfoque más intuitivo y legible. Te permite especificar qué permisos deben establecerse o cambiarse para el propietario del archivo, el grupo y los demás usuarios.
La sintaxis de la notación simbólica es la siguiente:
chmod [ugoa] [+-=] [rwx] archivo(s)
Donde:
[ugoa]
indica a quién se aplican los cambios:u
: propietario del archivo.g
: grupo del archivo.o
: otros usuarios (ni el propietario ni los que pertenecen al grupo).a
: todos (cuando se usa, reemplaza augo
).
[+-=]
define qué hacer con los permisos:+
: añadir permiso.-
: eliminar permiso.=
: establecer el permiso exactamente (reemplazar los permisos actuales).
[rwx]
representa una combinación de los caracteresr
,w
yx
, que denotan los permisos:r
: permiso de lectura.w
: permiso de escritura.x
: permiso de ejecución.
Ejemplos de uso de la notación simbólica:
chmod u+x archivo
— añade permiso de ejecución para el propietario del archivo.chmod go-rw archivo
— elimina el permiso de lectura y escritura para el grupo y los demás usuarios.chmod a=rwx archivo
— establece permisos completos (lectura, escritura y ejecución) para todos.
Notación numérica
Otra forma de cambiar los permisos de acceso a archivos y directorios en el comando chmod
es utilizando la notación numérica. En este caso, utilizas números para representar los permisos y sus combinaciones. Este método puede parecer menos intuitivo en comparación con la notación simbólica, pero también es una forma poderosa de gestionar los permisos de acceso.
La notación numérica consta de tres dígitos, donde cada dígito representa los permisos para el propietario, el grupo y los demás usuarios, respectivamente. Cada dígito es la suma de diferentes valores asignados a diferentes permisos:
4
— permiso de lectura (read).2
— permiso de escritura (write).1
— permiso de ejecución (execute).0
— ausencia de permiso.
Para establecer permisos específicos, suma los valores correspondientes:
- Si solo quieres permiso de lectura, usa
4
. - Si quieres permiso de lectura y escritura, suma
4
y2
, lo que da6
. - Si quieres permiso de lectura y ejecución, suma
4
y1
, lo que da5
. - Si quieres permiso de lectura, escritura y ejecución, suma
4
,2
y1
, lo que da7
.
Veamos ejemplos de uso de la notación numérica. Por ejemplo, puedes ejecutar los comandos:
chmod 644 myfile
Este comando establecerá los permisos -rw-r--r--
, donde el propietario tiene permisos de lectura y escritura, y el grupo y los demás usuarios solo pueden leer el archivo.
chmod 755 script.sh
Este comando te ayudará a establecer los permisos -rwxr-xr-x
, donde el propietario tiene permisos completos, y los demás usuarios solo pueden leer y ejecutar el script.
Cambiar permisos para un directorio
Al igual que con los archivos normales, puedes cambiar los permisos de acceso para los directorios usando el comando chmod
. Los permisos de acceso a los directorios controlan qué operaciones se pueden realizar dentro del directorio: ver su contenido, crear, eliminar archivos y directorios dentro de él, y así sucesivamente.
Para cambiar los permisos de acceso a un directorio, se utiliza la misma notación numérica y simbólica que vimos anteriormente. Especifica el nombre del directorio al que deseas aplicar los cambios de permisos en lugar del nombre del archivo. Veamos ejemplos en ambas notaciones.
Notación simbólica
chmod u+rwx directorio
— añade al propietario del directorio los permisos de lectura, escritura y ejecución.chmod go-r directorio
— elimina los permisos de lectura para el grupo y los demás usuarios para el directorio.chmod a+rx directorio
— otorga a todos los usuarios permisos de lectura y ejecución para el directorio.
Notación numérica
chmod 700 directorio
— establece los permisos-rwx------
para el propietario del directorio, permitiéndole leer, escribir y ejecutar operaciones dentro de él, pero a ningún otro usuario.chmod 755 directorio
— otorga al propietario permisos completos-rwxr-xr-x
, y a los demás usuarios solo el derecho de leer y ejecutar.chmod 644 directorio
— otorga permisos de lectura y escritura al propietario del directorio, y a los demás usuarios y grupos solo la lectura del contenido.
Aplicación recursiva del comando chmod
Para realizar un cambio recursivo de permisos de acceso, usa el flag -R
o --recursive
con el comando chmod
. Por ejemplo:
chmod -R 755 directorio
— establecerá los permisos-rwxr-xr-x
para todos los archivos y directorios dentro del directorio especificado y el propio directorio.chmod -R u+rwx,go-rwx directorio
— añadirá al propietario los permisos de lectura, escritura y ejecución, y al grupo y a los demás usuarios les quitará todos los permisos para todos los archivos y directorios en el directorio especificado y sus subdirectorios.
El cambio recursivo de permisos de acceso es una excelente herramienta para actualizar los permisos de archivos y directorios simultáneamente.
La opción --reference
y su uso
La opción --reference
en el comando chmod
proporciona una forma conveniente de copiar permisos de acceso de un archivo o directorio a otro. Esta opción permite aplicar rápida y fácilmente los permisos de acceso de una fuente a otra. Esto puede ser especialmente útil cuando necesitas unificar los permisos de acceso entre elementos del sistema de archivos.
La sintaxis para usar la opción --reference
es la siguiente:
chmod --reference=RFILE archivo
--reference=RFILE
: este argumento especifica la ruta al archivo o directorio desde el cual se copiarán los permisos de acceso.archivo
: este es el archivo o directorio de destino para el cual deseas establecer los permisos de acceso, de acuerdo con la fuente especificada.
Es importante tener en cuenta que --reference
no solo añade o elimina permisos específicos, sino que sobrescribe completamente los permisos de acceso del elemento de destino.
Ejemplos de uso de chmod
chmod 644 archivo.htm
Establece para el archivo archivo.htm
los derechos “el propietario puede leer y escribir; el grupo solo puede leer; otros solo pueden leer”.
chmod -R 755 misArchivos
Cambia recursivamente (-R
) los permisos para el directorio misArchivos
y todas sus subcarpetas y archivos al modo 755. El usuario puede leer, escribir y ejecutar; los miembros del grupo y otros usuarios pueden leer y ejecutar, pero no pueden escribir.
chmod u=rw ejemplo.jpg
Cambia los permisos para el propietario de ejemplo.jpg
para que el propietario pueda leer y escribir el archivo. No cambia los permisos para el grupo ni para los demás.
chmod u+s comphope.txt
Establece el bit “Set-User-ID” del archivo comphope.txt
, para que cualquiera que intente acceder a este archivo lo haga como si fuera el propietario del archivo.
chmod u-s comphope.txt
Lo opuesto al comando anterior; quita el bit SUID.
chmod 755 archivo.cgi
Establece los permisos para archivo.cgi
en “lectura, escritura y ejecución por el propietario” y “lectura y ejecución por el grupo y todos los demás”.
chmod 666 archivo.txt
Establece el permiso de archivo.txt
en “lectura y escritura por todos”.
chmod a=rw archivo.txt
Realiza lo mismo que el comando anterior, usando la notación simbólica.
Conclusión
Hemos visto la sintaxis del comando chmod
, sus parámetros y opciones, así como los métodos principales para cambiar los permisos de acceso. Hemos estudiado la notación simbólica y los números, que permiten configurar de forma flexible los permisos que necesitas.
Recomendamos, leer también Consecuencias Peligrosas del Comando chmod 777.
Pingback: Peligros de Comando chmod 777 en Linux » Blog Linux
Pingback: Domina los Comandos Básicos Linux: Guía para Principiantes