Androide

Comando Chmod en Linux (permisos de archivo)

Cambiar Permisos por Comandos en Linux con chmod

Cambiar Permisos por Comandos en Linux con chmod

Tabla de contenido:

Anonim

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

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

Permisos de archivos 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 permiso 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 utilizando los comandos chown y chgrp .

Hay tres tipos de permisos de archivo 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 con el comando ls :

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 ( - ), un directorio ( d ), un enlace simbólico ( l ) o cualquier otro tipo especial de archivo.

Los siguientes nueve caracteres representan los permisos del archivo, tres trillizos de tres caracteres cada uno. El primer triplete muestra los permisos del propietario, el segundo grupo de 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 otros 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 están configurados en un archivo o en un directorio:

Efecto de permisos en archivos

Permiso Personaje Significado en el archivo
Leer - El archivo no es legible. No puede ver el contenido del archivo.
r El archivo es legible.
Escribir - El archivo no se puede cambiar ni modificar.
w El archivo puede ser cambiado o modificado.
Ejecutar - El archivo no se puede ejecutar.
x El archivo puede ser ejecutado.
s Si se encuentra en el triplete del user , establece el bit setuid . Si se encuentra en el triplete de group , establece el bit setgid . También significa que se establece la bandera x .

Cuando los indicadores setuid o setgid se establecen en un archivo ejecutable, el archivo se ejecuta con los privilegios de propietario y / o grupo del archivo.

S Igual que s pero la bandera x no está establecida. Esta bandera rara vez se usa en archivos.
t Si se encuentra en el triplete de others , establece el bit sticky .

También significa que se establece la bandera x . Esta bandera es inútil en los archivos.

T Igual que t pero la bandera x no está establecida. Esta bandera es inútil en los archivos.

Efecto de permisos en directorios (carpetas)

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

Permiso Personaje Significado en el directorio
Leer - El contenido del directorio no se puede mostrar.
r Se puede mostrar el contenido del directorio.

(por ejemplo, puede enumerar archivos dentro del directorio con ls .)

Escribir - El contenido del directorio no puede modificarse.
w Los contenidos del directorio pueden ser alterados.

(por ejemplo, no puede crear archivos nuevos, eliminar archivos, etc.)

Ejecutar - El directorio no se puede cambiar a.
x El directorio se puede navegar usando cd .
s Si se encuentra en el triplete del user , establece el bit setuid . Si se encuentra en el triplete de group , establece el bit setgid . También significa que se establece la bandera x . Cuando el indicador setgid se establece en un directorio, los nuevos archivos creados dentro de él heredan la ID de grupo de directorio (GID), en lugar de la ID de grupo principal del usuario que creó el archivo.

setuid no tiene efecto en los directorios.

S Igual que s pero la bandera x no está establecida. Esta bandera es inútil en los directorios.
t Si se encuentra en el triplete de others , establece el bit sticky .

También significa que se establece la bandera x . Cuando el bit fijo se establece en un directorio, solo el propietario del archivo, el propietario del directorio o el usuario administrativo pueden eliminar o cambiar el nombre de los archivos dentro del directorio.

T Igual que t pero la bandera x no está establecida. Esta bandera es inútil en los directorios.

Usando chmod

El comando chmod toma la siguiente forma general:

chmod MODE FILE…

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

Solo root, el propietario del archivo o el usuario con privilegios de sudo pueden cambiar los permisos de un archivo. Tenga mucho cuidado cuando use chmod , especialmente cuando cambie los permisos de forma recursiva.

Método simbólico (texto)

La sintaxis del comando chmod cuando se utiliza el modo simbólico tiene el siguiente formato:

chmod perms… FILE…

El primer conjunto de banderas ( ), flags de usuarios, define qué clases de usuarios cambian 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 que establece umask no se ven afectados.

El segundo conjunto de banderas ( ), los indicadores de operación, definen si los permisos deben eliminarse, agregarse o establecerse:

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

Los permisos ( perms… ) se pueden establecer explícitamente utilizando cero o una o más de las siguientes letras: r , w , x , X , s t . Use una sola letra del conjunto u , g y o cuando copie 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 comando chmod 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

    Elimine el permiso de ejecución para todos los usuarios:

    chmod ax filename

    Elimine repulsivamente el permiso de escritura para otros usuarios:

    chmod -R ow 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 para el grupo del archivo y ningún permiso para 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 fijo a un directorio dado:

    chmod o+t dirname

Método numérico

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

chmod NUMBER FILE…

Al usar el modo numérico, puede establecer los permisos para las tres clases de usuario (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 usa un número de 3 dígitos, el primer dígito representa los permisos del propietario del archivo, el segundo del 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 (lectura) = 4 w (escritura) = 2 x (ejecución) = 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, lea y ejecute permisos para el grupo del archivo y solo lea permisos para todos los demás usuarios, haría lo siguiente:

  • Propietario: rwx = 4 + 2 + 1 = 7 Grupo: rx = 4 + 0 + 1 = 5 Otros: rx = 4 + 0 + 0 = 4

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

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

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

  • setuid = 4setgid = 2sticky = 1no 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, puede omitirse y el modo puede representarse con 3 dígitos. El modo numérico 0755 es el mismo que 755 .

Para calcular el modo numérico también puede usar otro método (método binario), pero es un poco más complicado. Saber cómo calcular el modo numérico con 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 comando stat :

stat -c "%a" filename

644

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

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

    chmod 644 dirname

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

    chmod 750 dirname

    Otorgue permisos de lectura, escritura y ejecución, y un bit fijo a un directorio dado:

    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 dado:

    chmod -R 700 dirname

Usando un archivo de referencia

La opción --reference=ref_file 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 al file2

chmod --reference=file1 file2

Cambia recursivamente los permisos del archivo

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

chmod -R MODE DIRECTORY

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

chmod -R 755 /var/www

Operando en enlaces simbólicos

Los enlaces simbólicos siempre tienen permisos 777 .

Por defecto, 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 un error "no se puede acceder al 'enlace simbólico': permiso denegado".

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

Cambio de permisos de archivos en masa

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 los permisos del 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 comando find buscará archivos y directorios en /var/www/my_website y pasará cada archivo y directorio encontrado al comando chmod para establecer los permisos.

Conclusión

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

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

terminal chmod