El comando de Linux para cambiar los permisos en un archivo o directorio es chmod, que nos gusta leer como modo de cambio de archivo. chmod tiene dos modos de funcionamiento:
- modo simbólico
- modo numérico/octal
Para cambiar el permiso usando el comando chmod de Linux, debemos seguir algunas reglas y sintaxis. Como discutimos anteriormente, podemos cambiar el permiso de forma numérica y alfabética, aquí he explicado ambos métodos con todos los trucos.
Forma alfabética
Para usar este método, debe recordar las siguientes reglas y alfabetos para un uso adecuado. Para cambiar el permiso del usuario, debe usar el alfabeto "u “. Así para el Grupo “g ” y para otros es “o “.
Al igual que Usuario, Grupo y Otros, debemos recordar algunos alfabetos para otorgar permisos de Lectura, Escritura y Ejecución. Al igual que para el permiso de Lectura, debe usar el alfabeto "r “, para escribir “w ” y para Ejecutar es “x “.
Entonces, la fórmula para asignar permisos usando el comando chmod se muestra a continuación:
- u – Usuario
- g – Grupo
- o – Otros
- r – Leer
- w – Escribir
- x – Ejecutar
Por ejemplo, si desea otorgar permiso de lectura y escritura al usuario/propietario y permiso de lectura al grupo y otros utilizando la forma alfabética, el comando sería:
# chmod u+rw,g+r,o+r file_name
Forma Numérica
Para usar este método, debe recordar las siguientes reglas y números para un uso adecuado.
- 4 – Para dar permiso de lectura
- 2 – Para dar permiso de escritura
- 1 – Para dar permiso de ejecución
Por ejemplo, si desea otorgar permiso de lectura y escritura al usuario/propietario y permiso de lectura al grupo y otros de forma numérica, el cálculo del comando sería:
4+2 =6 :Esto agregará permiso de lectura y escritura al usuario/propietario.
4 :Esto agregará permiso de lectura al grupo.
4 :Esto agregará permiso de lectura a Otro.
Entonces el comando sería como:
# chmod 644 filename
Puede verificar el permiso de cualquier archivo usando el siguiente comando:
# ls -l file.txt -rw-rw-r-- 1 geeklab geeklab 0 Feb 20 06:16 file.txt
Y use el siguiente comando para verificar el permiso de un directorio:
# ls -ld data/ drwxrwxr-x 2 geeklab geeklab 4096 Feb 20 06:18 data/
Ahora aquí la pregunta es:cómo identificar qué permisos se han asignado a un archivo o directorio. Es bastante simple. Arriba he dado dos ejemplos. Ahora identifiquemos el permiso de file.txt. Si observa que las propiedades del archivo comienzan con "-rw-rw-r–". Aquí podemos identificar qué permiso se asignó a file.txt.
La sección de permisos se divide en 10 bits de los cuales
“– ”:El primer bit es responsable de identificar si se trata de un archivo, un directorio o un enlace simbólico. Consulte los siguientes símbolos:
Símbolos importantes:
- – :Permiso asignado a un Archivo
- d :Permiso asignado a un Directorio
- l :Permiso asignado a un enlace simbólico
- Los bits 2, 3 y 4 son para el permiso del propietario.
- Los bits 5, 6 y 7 son para el permiso del Grupo.
- Los bits 8, 9 y 10 tienen el permiso de Otros.
Para dar permiso a cualquier archivo/directorio, debe usar "+ " Símbolo. Para eliminar el permiso de cualquier archivo/directorio, debe usar “– ” Símbolo.
Ejemplos del uso del comando chmod
Asignar permiso a un archivo
Aquí tengo un archivo llamado file.txt. Démosle permiso de lectura y escritura al usuario/propietario mediante el comando chmod.
$ chmod u+rw file.txt
$ ls -l file.txt -rw------- 1 geeklab geeklab 0 Feb 20 06:16 file.txt
De forma numérica, use el siguiente comando:
$ chmod 600 file.txt
Asignar permiso a un directorio
El siguiente comando se puede usar para dar permiso a un directorio. Aquí tengo un directorio llamado datos. Entonces, demos permiso completo (lectura, escritura, ejecución) al usuario/propietario. Consulte el comando a continuación.
$ chmod u+rwx data/
$ ls -ld data/ drwx------ 2 geeklab geeklab 4096 Feb 20 06:18 data/
Forma Numérica:
$ chmod 700 data/
Eliminar permiso de un archivo/directorio
Elimine el permiso de un archivo/directorio usando el siguiente comando chmod de Linux. Aquí estoy eliminando el permiso de lectura y escritura del usuario/propietario.
$ chmod u-rw file.txt
$ ls -l file.txt ----rw-r-- 1 geeklab geeklab 0 Feb 20 07:18 file.txt
Dar permiso a todos
Puede usar el siguiente comando para dar permiso a todos. Aquí estoy asignando permiso completo a todos para acceder a file.txt. Hay dos métodos para hacer lo mismo.
Método 1
$ chmod a+rwx file.txt
$ ls -l file.txt -rwxrwxrwx 1 geeklab geeklab 0 Feb 20 06:44 file.txt
Método 2
También puede usar el siguiente comando chmod de Linux para hacer lo mismo.
$ chmod ugo+rwx file.txt
$ ls -l file.txt -rwxrwxrwx 1 geeklab geeklab 0 Feb 20 06:44 file.txt
Forma Numérica :
$ chmod 777 file.txt
Asigne diferentes permisos a Usuario, Grupo y Otros usando el comando chmod de Linux único
Aquí estoy quitando el permiso de ejecución del usuario/propietario y agregando el permiso de ejecución al grupo y otros usando un solo comando.
$ chmod u-x,g+x,o+x file.txt
$ ls -l file.txt -rw-rwxrwx 1 geeklab geeklab 0 Feb 20 09:40 file.txt
Asignar permiso a un archivo tomando como referencia cualquier otro archivo
Puede copiar el permiso de un archivo a otro. Aquí tengo un archivo llamado a1.txt cuyo permiso es algo así como “-rw-r–r– “.
$ ls -l a1.txt -rw-r--r-- 1 geeklab geeklab 0 Feb 20 07:21 a1.txt
Ahora quiero asignar el mismo permiso a mi otro archivo llamado a2.txt. Puede hacerlo usando el comando chmod de Linux con el argumento –referencia. Consulte el comando a continuación.
$ chmod --reference=a1.txt a2.txt
$ ls -l a2.txt -rw-r--r-- 1 geeklab geeklab 0 Feb 20 07:22 a2.txt
Asignar permiso recursivamente
Tengo un directorio llamado datos, en el que tengo tantos archivos y quiero darles permiso a todos a la vez en lugar de manualmente uno por uno. Para que pueda usar el comando chmod de Linux con el argumento -R. Esto te ayudará a dar permiso de forma recursiva.
$ chmod -R ugo+rwx data/
Forma Numérica :
$ chmod -R 777 data/
Asignar permiso con salida detallada
Puede obtener resultados después de asignar permisos a cualquier archivo/directorio utilizando el comando chmod de Linux con el argumento -v. Consulte el comando a continuación.
$ chmod -v 777 file.txt mode of 'file.txt' changed from 0664 (rw-rw-r--) to 0777 (rwxrwxrwx)
Asignar permiso con salida (Este comando dará salida solo si hay algún cambio)
El comando chmod con el argumento -c también hace lo mismo que la salida Verbose (es decir, -v). Pero mostrará la salida solo si hay algún cambio en el permiso. Si está asignando el mismo permiso, no mostrará ningún resultado.
$ chmod -c 755 file.txt mode of 'file.txt' changed from 0777 (rwxrwxrwx) to 0755 (rwxr-xr-x)
Asignación de permisos ignorando/resolviendo errores
Para evitar errores o rectificar errores durante la asignación de permisos, puede usar el comando chmod de Linux con el argumento -f. Consulte el comando a continuación.
$ chmod -f 755 file.txt
Para ayuda con el comando chmod
Para obtener más opciones y argumentos del comando chmod, puede usar el siguiente comando.
$ chmod --help Usage: chmod [OPTION]... MODE[,MODE]... FILE... or: chmod [OPTION]... OCTAL-MODE FILE... or: chmod [OPTION]... --reference=RFILE FILE... Change the mode of each FILE to MODE. With --reference, change the mode of each FILE to that of RFILE. -c, --changes like verbose but report only when a change is made -f, --silent, --quiet suppress most error messages -v, --verbose output a diagnostic for every file processed --no-preserve-root do not treat '/' specially (the default) --preserve-root fail to operate recursively on '/' --reference=RFILE use RFILE's mode instead of MODE values -R, --recursive change files and directories recursively --help display this help and exit --version output version information and exit Each MODE is of the form '[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+'. GNU coreutils online help: [http://www.gnu.org/software/coreutils/] Full documentation at: [http://www.gnu.org/software/coreutils/chmod] or available locally via: info '(coreutils) chmod invocation'
Comprobar la versión del comando chmod
Puede usar el comando chmod de Linux con el argumento –version para comprobar la versión del comando chmod instalado.
$ chmod --version chmod (GNU coreutils) 8.25 Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later [http://gnu.org/licenses/gpl.html]. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by David MacKenzie and Jim Meyering.