GNU/Linux >> Tutoriales Linux >  >> Linux

Comando Chmod en Linux (Permisos de archivo)

En Linux, el acceso a los archivos se administra a través de los permisos, los atributos y la propiedad de los archivos. Esto garantiza que solo los usuarios y procesos autorizados puedan acceder a los archivos y directorios.

Este tutorial cubre cómo usar chmod comando para cambiar los permisos de acceso de archivos y directorios.

Permisos de archivo de Linux #

Antes de continuar, expliquemos el modelo básico de permisos de Linux.

En Linux, cada archivo está asociado con un propietario y un grupo y se le asignan derechos de acceso de permisos para tres clases diferentes de usuarios:

  • El propietario del archivo.
  • Los miembros del grupo.
  • Otros (todos los demás).

La propiedad del archivo se puede cambiar usando el chown y chgrp comandos.

Hay tres tipos de permisos de archivos que se aplican a cada clase:

  • El permiso de lectura.
  • El permiso de escritura.
  • El permiso de ejecución.

Este concepto le permite especificar qué usuarios pueden leer el archivo, escribir en el archivo o ejecutar el archivo.

Los permisos de archivo se pueden ver usando ls comando:

ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
| |  |  | |      |       |
| |  |  | |      |       +-----------> 7. Group
| |  |  | |      +-------------------> 6. Owner
| |  |  | +--------------------------> 5. Alternate Access Method
| |  |  +----------------------------> 4. Others Permissions
| |  +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type

El primer carácter muestra el tipo de archivo. Puede ser un archivo normal (- ), directorio (d ), un enlace simbólico (l ), o cualquier otro tipo especial de archivo.

Los siguientes nueve caracteres representan los permisos del archivo, tres tripletes de tres caracteres cada uno. El primer triplete muestra los permisos del propietario, el segundo grupo los permisos y el último triplete muestra los permisos de todos los demás. Los permisos pueden tener un significado diferente según el tipo de archivo.

En el ejemplo anterior (rw-r--r-- ) significa que el propietario del archivo tiene permisos de lectura y escritura (rw- ), el grupo y los demás solo tienen permisos de lectura (r-- ).

Cada uno de los tres tripletes de permisos se puede construir con los siguientes caracteres y tener efectos diferentes, dependiendo de si se configuran en un archivo o en un directorio:

Efecto de los permisos en los archivos

Efecto de los permisos en directorios (carpetas)

En Linux, los directorios son tipos especiales de archivos que contienen otros archivos y directorios.

Permiso Personaje Significado en archivo
Leer - El archivo no se puede leer. No puede ver el contenido del archivo.
r El archivo es legible.
Escribir - El archivo no se puede cambiar ni modificar.
w El archivo se puede cambiar o modificar.
Ejecutar - El archivo no se puede ejecutar.
x El archivo se puede ejecutar.
s Si se encuentra en el user triplete establece el setuid poco. Si se encuentra en el group triplete, establece el setgid poco. También significa que x está establecido.
Cuando el setuid o setgid las banderas se establecen en un archivo ejecutable, el archivo se ejecuta con el propietario del archivo y/o privilegios de grupo.
S Igual que s pero el x la bandera no está configurada. Esta marca rara vez se usa en archivos.
t Si se encuentra en los others triplete establece el sticky bit.
También significa que x se establece la bandera. Esta bandera es inútil en los archivos.
T Igual que t pero el x la bandera no está configurada. Esta bandera es inútil en los archivos.

Usando chmod #

El chmod El comando toma la siguiente forma general:

chmod [OPTIONS] MODE FILE...

El chmod El comando le permite cambiar los permisos en un archivo utilizando un modo simbólico o numérico o un archivo de referencia. Explicaremos los modos con más detalle más adelante en este artículo. El comando puede aceptar uno o más archivos y/o directorios separados por espacios como argumentos.

Solo la raíz, el propietario del archivo o el usuario con privilegios sudo pueden cambiar los permisos de un archivo. Tenga mucho cuidado al usar chmod , especialmente cuando se cambian recursivamente los permisos.

Método Simbólico (Texto) #

La sintaxis de chmod El comando cuando se usa el modo simbólico tiene el siguiente formato:

chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE...

El primer conjunto de banderas ([ugoa…] ), marcas de usuarios, define qué clases de usuarios se modifican los permisos para el archivo.

  • u - El propietario del archivo.
  • g - Los usuarios que son miembros del grupo.
  • o - Todos los demás usuarios.
  • a - Todos los usuarios, idénticos a ugo .

Si se omite el indicador de usuarios, el predeterminado es a y los permisos establecidos por umaskare no se ven afectados.

El segundo conjunto de banderas ([-+=] ), la operación marca, define si los permisos se eliminarán, agregarán o establecerán:

  • - Elimina los permisos especificados.
  • + Agrega permisos específicos.
  • = Cambia los permisos actuales a los permisos especificados. Si no se especifican permisos después de = símbolo, se eliminan todos los permisos de la clase de usuario especificada.

Los permisos (perms... ) se puede configurar explícitamente usando cero o una o más de las siguientes letras:r , w , x , X , s y t . Usa una sola letra del conjunto u , g y o al copiar permisos de una clase de usuario a otra.

Al establecer permisos para más de una clase de usuario ([,…] ), use comas (sin espacios) para separar los modos simbólicos.

A continuación se muestran algunos ejemplos de cómo usar el chmod comando en modo simbólico:

  • Otorgue a los miembros del grupo permiso para leer el archivo, pero no para escribirlo y ejecutarlo:

    chmod g=r filename
  • Eliminar el permiso de ejecución para todos los usuarios:

    chmod a-x filename
  • Elimine recursivamente el permiso de escritura para otros usuarios:

    chmod -R o-w dirname
  • Elimine los permisos de lectura, escritura y ejecución para todos los usuarios, excepto el propietario del archivo:

    chmod og-rwx filename

    Lo mismo también se puede lograr utilizando el siguiente formulario:

    chmod og= filename
  • Otorgue permisos de lectura, escritura y ejecución al propietario del archivo, permisos de lectura al grupo del archivo y ningún permiso a todos los demás usuarios:

    chmod u=rwx,g=r,o= filename
  • Agregue los permisos de propietario del archivo a los permisos que tienen los miembros del grupo del archivo:

    chmod g+u filename
  • Agregue un bit adhesivo a un directorio dado:

    chmod o+t dirname

Método numérico #

La sintaxis de chmod el comando cuando se usa el método numérico tiene el siguiente formato:

chmod [OPTIONS] NUMBER FILE...

Al usar el modo numérico, puede configurar los permisos para las tres clases de usuarios (propietario, grupo y todos los demás) al mismo tiempo.

El NUMBER puede ser un número de 3 o 4 dígitos.

Cuando se utiliza un número de 3 dígitos, el primer dígito representa los permisos del propietario del archivo, el segundo el grupo del archivo y el último todos los demás usuarios.

Cada permiso de escritura, lectura y ejecución tiene el siguiente valor numérico:

  • r (leer) =4
  • w (escribir) =2
  • x (ejecutar) =1
  • sin permisos =0

El número de permisos de una clase de usuario específica está representado por la suma de los valores de los permisos para ese grupo.

Para averiguar los permisos del archivo en modo numérico, simplemente calcule los totales para todas las clases de usuarios. Por ejemplo, para otorgar permisos de lectura, escritura y ejecución al propietario del archivo, permisos de lectura y ejecución al grupo del archivo y permisos de solo lectura a todos los demás usuarios, debe hacer lo siguiente:

  • Propietario:rwx=4+2+1=7
  • Grupo:r-x=4+0+1=5
  • Otros:r-x=4+0+0=4

Usando el método anterior llegamos al número 754 , que representa los permisos deseados.

Para configurar el setuid , setgid y sticky bit las banderas usan un número de cuatro dígitos.

Cuando se utiliza el número de 4 dígitos, el primer dígito tiene el siguiente significado:

  • setuid=4
  • setgid=2
  • pegajoso=1
  • sin cambios =0

Los siguientes tres dígitos tienen el mismo significado que cuando se usa un número de 3 dígitos.

Si el primer dígito es 0 se puede omitir y la moda se puede representar con 3 dígitos. El modo numérico 0755 es lo mismo que 755 .

Para calcular el modo numérico también puedes usar otro método (método binario), pero es un poco más complicado. Saber cómo calcular el modo numérico usando 4, 2 y 1 es suficiente para la mayoría de los usuarios.

Puede verificar los permisos del archivo en la notación numérica usando el stat comando:

stat -c "%a" filename
644

Aquí hay algunos ejemplos de cómo usar el chmod comando en modo numérico:

  • Otorgue permisos de lectura y escritura al propietario del archivo y solo permisos de lectura a los miembros del grupo y a todos los demás usuarios:

    chmod 644 dirname
  • Otorgue al propietario del archivo permisos de lectura, escritura y ejecución, permisos de lectura y ejecución a los miembros del grupo y ningún permiso a todos los demás usuarios:

    chmod 750 dirname
  • Otorgue permisos de lectura, escritura y ejecución, y un bit adhesivo a un directorio determinado:

    chmod 1777 dirname
  • Establezca recursivamente permisos de lectura, escritura y ejecución para el propietario del archivo y ningún permiso para todos los demás usuarios en un directorio determinado:

    chmod -R 700 dirname

Usando un archivo de referencia #

El --reference=ref_file La opción le permite configurar los permisos del archivo para que sean los mismos que los del archivo de referencia especificado (ref_file ).

chmod --reference=REF_FILE FILE

Por ejemplo, el siguiente comando asignará los permisos del file1 a file2

chmod --reference=file1 file2

Cambia recursivamente el número de permisos del archivo

Para operar recursivamente en todos los archivos y directorios bajo el directorio dado, use -R (--recursive ) opción:

chmod -R MODE DIRECTORY

Por ejemplo, para cambiar los permisos de todos los archivos y subdirectorios bajo /var/www directorio a 755 usarías:

chmod -R 755 /var/www

Operando en Enlaces Simbólicos #

Los enlaces simbólicos siempre tienen 777 permisos.

De forma predeterminada, al cambiar los permisos del enlace simbólico, chmod cambiará los permisos en el archivo al que apunta el enlace.

chmod 755 symlink

Lo más probable es que, en lugar de cambiar la propiedad del objetivo, obtenga el mensaje de error "no se puede acceder a 'enlace simbólico':Permiso denegado".

El error ocurre porque, de manera predeterminada, en la mayoría de las distribuciones de Linux, los enlaces simbólicos están protegidos y no puede operar en los archivos de destino. Esta opción se especifica en /proc/sys/fs/protected_symlinks . 1 significa habilitado y 0 desactivado. Se recomienda no deshabilitar la protección de enlaces simbólicos.

Cambio de permisos de archivo en lote #

A veces, hay situaciones en las que necesitaría cambiar de forma masiva los permisos de archivos y directorios.

El escenario más común es cambiar recursivamente los permisos del archivo del sitio web a 644 y permisos de directorio a 755 .

Usando el método numérico:

find /var/www/my_website -type d -exec chmod 755 {} \;find /var/www/my_website -type f -exec chmod 644 {} \;

Usando el método simbólico:

find /var/www/my_website -type d -exec chmod u=rwx,go=rx {} \;find /var/www/my_website -type f -exec chmod u=rw,go=r {} \;

El find El comando buscará archivos y directorios en /var/www/my_website y pase cada archivo y directorio encontrado al chmod comando para establecer los permisos.

Conclusión #

El chmod El comando cambia los permisos del archivo. Los permisos se pueden configurar usando el modo simbólico o numérico.

Para obtener más información sobre chmod visite la página de manual de chmod.

Si tiene alguna pregunta o comentario, no dude en dejar un comentario.


Linux
  1. Conceptos básicos de los permisos de archivos de Linux

  2. Permisos de Linux:una introducción a chmod

  3. Comando wc de linux

  4. Comando grep de Linux

  5. Comando chmod de Linux

Comando Gzip en Linux

Comando Gunzip en Linux

Comando Stat en Linux

Comando Chmod en Linux

Comando Chmod:cómo cambiar los permisos de archivo en Linux

Ejemplos de comandos chmod de Linux

    Permiso Personaje Significado en el directorio
    Leer - No se puede mostrar el contenido del directorio.
    r Se puede mostrar el contenido del directorio.
    (p. ej., puede enumerar archivos dentro del directorio con ls .)
    Escribir - El contenido del directorio no se puede modificar.
    w El contenido del directorio se puede modificar.
    (p. ej., puede crear archivos nuevos, eliminar archivos, etc.)
    Ejecutar - No se puede cambiar el directorio.
    x El directorio se puede navegar usando cd .
    s Si se encuentra en el user triplete, establece el setuid poco. Si se encuentra en el group triplete establece el setgid poco. También significa que x se establece la bandera. Cuando el setgid se establece en un directorio, los nuevos archivos creados en él heredan el ID de grupo de directorio (GID), en lugar del ID de grupo principal del usuario que creó el archivo.
    setuid no tiene efecto en los directorios.
    S Igual que s pero el x la bandera no está configurada. Esta bandera es inútil en los directorios.
    t Si se encuentra en los others triplete establece el sticky bit.
    También significa que x se establece la bandera. Cuando el sticky bit se establece en un directorio, solo el propietario del archivo, el propietario del directorio o el usuario administrativo puede eliminar o cambiar el nombre de los archivos dentro del directorio.
    T Igual que t pero el x la bandera no está configurada. Esta bandera es inútil en los directorios.