chmod
En GNU/Linux todos los archivos y directorios cuentan un usuario y un grupo y permisos asignados a ellos. En este articulo veremos como editar los permisos tanto de directorios como de archivos.
Tipos de permisos
Permisos de lectura
Lectura (R) por reading en Inglés.
Los usuario que posean permisos de lectura sobre un archivo puede visualizar su contenido.
Asi mismo, si el usuario goza de permisos de lectura sobre un directorio será capaz ver la lista de los ficheros en ese directorio.
Permiso de escritura
Escritura (W) por writing en Inglés.
cuando un usuario posee permisos de escritura sobre un archivo puede editar su contenido.
Del mismo modo, si el usuario dispone de permisos de escritura sobre un directorio será capaz de crear ficheros y carpetas en ese directorio.
Permisos de ejecución
Ejecución (X) por execution en Inglés.
Los permisos de ejecución se utilizan en aplicaciones y scripts. Si dispones de permisos puedes ejecutar la aplicación/script.
Como consultar los permisos
Los permisos los puedes consultar usando el comando "ls -l". Dejo el link del articulo donde se explica como utilizar este comando más en detalle.
Estos son los de la primera columna que se se observan en la siguiente imagen.
Los permisos se muestran con 10 caracteres, el primer carácter nos muestra un guión (-) si es un archivo o una “d” si es un directorio, para luego leer con los permisos que se le han asignado a este bajo los 9 caracteres restantes. Estos se agrupan de tres dándonos como resultado tres grupos de tres caracteres, estos son: 3 para el usuario, 3 para el grupo y 3 para otros.
¿Cómo cambiar los permisos?
Los permisos se modifican usando el comando "chmod". Este comando nos va a permitir trabajar sobre los permisos tanto de directorios como de archivos.
Sintaxis
Chmod, responde a la siguiente sintaxis...
#chmod [permisos] [elemento] [modificadores]
Para lo que seria
-Permisos: son los nuevos permisos que vamos a aplicar sobre un elemento, estos pueden ser en octal o en notación simbólica.
-Elemento: es la carpeta o el archivo sobre el que se van a aplicar los nuevos permisos.
-Modificadores: son la forma en que se van a llevar a cabo los cambios de permisos. Para que quede un poquito mas claro; si queremos modificar permisos de a una carpeta, pero también los queremos aplicar a su contenido, el modificador -R permite ejecutar este cambio remisivamente.
Cambio de permisos
Los permisos pueden modificar de forma octal o en notación simbólica. A continuación analizaremos ambos casos.
Notación simbólica
Esta notación se caracteriza por permitirnos cambiar o asignar permisos de forma individual, sin tener que trabajar sobre el resto de los permisos, especificando a quien va dirigido ya sea usuario (u), grupo (g), otros (o), seguido del signo mas o un menos según se quiera agregar o quitar, y por ultimo los permisos (rwx) según se quiera administrar.
Por ejemplo, el comando “chmod u+x archivo.txt” agrega permisos de ejecución al usuario. Veamos el procedimiento paso a paso.
Visualicemos los permisos de archivo.txt antes de modificar.
Como pedimos ver, los permisos de archivo son "-rw- r-- r--". Si los leemos no dice que: es un archivo debido al "-" con el que empieza, que el usuario tiene permisos de lectura y escritura "rw-" que el grupo solo de escritura "r--" y que otros también solo de escritura "r--"
Ejecutamos chmod, según el ejemplo establecido previamente para cambiar los permisos “sudo chmod u+x archivo.txt", en este caso lo ejecutamos con permisos de superusuario debido a que el propietario de "archivo.txt" es el usuario "root".
Luego de la ejecución de “sudo chmod u+x archivo.txt”, vemos que se han modificado añadiendo permisos de ejecución para el usuario "-rwx r-- r--"
También es posible establecer varios permisos a la vez separando por comas los diferentes permisos que queramos asignar.
Ejecutamos para este ejemplo "sudo chmod u-x,g+wx,o+wx archivo.txt"
Pero ojo, que no estamos limitados a modificar solo un grupo de caracteres por ejecución, podemos hacer varias modificaciones sobre los permisos a la vez en la misma linea de ejecucion.
Simplifiquemos en el siguiente ejemplo "sudo chmod g-r,g-w,g-x archivo.txt"
Bajo esta ejecución, solo modificamos los permisos de el grupo de caracteres que pertenecen a "grupo" (g) uno a uno en la misma linea.
De esta forma podemos entender que la coma no separa los grupos de caracteres, sino que separan el grupo de caracteres y el permiso que vamos a modificar.
Notación octal
La asignación de permisos en octal, nos obliga a modificar todos los permisos simultáneamente. Para asignar permisos frecuentemente se utilizan 3 números del sistema octal (de 0 a 7) que se obtienen representacion de su equivalente en binario. Veamos la siguiente tabla.
Siendo interpretado del sistema binario el "0" como la quita de un permiso y el "1" como la asignación de tal.
Es decir que si elijo el 4 en octal que en binario seria "1-0-0" estoy diciendo que le estoy agrando permisos de lectura pero le estoy quitando los permisos de escritura y los de ejecución. De donde, pues de pende de la posición dentro de los 3 números con los que esta sintaxis trabaja. Pero es fácil de interpretar que el primer numero corresponde al del usuario, el segundo al de grupo y el tercero al de otros
Vemos el siguiente ejemplo: "sudo chmod 740 archivo.txt", pero antes analicemos los permisos del archivo con el vamos a trabajar.
Observamos que tiene permisos de lectura y escritura para usuario, no tiene permisos habilitados para grupo y tiene permisos de lectura, escritura y ejecución para otros.
Si ejecutamos "sudo chmod 740 archivo.txt" le estamos diciendo que:
7 en octal, primera posición (usuario): 1-1-1 en binario habilita todos los permisos para el usuario
4 en octal, segunda posición (grupo): 1-0-0 en binario, habilita permisos de lectura únicamente.
0 en octal, tercera posición (otros): 0-0-0 en binario, deshabilita todos los permisos.
Dejándonos como resultados a "archivo.txt" con los siguientes permisos:
Espero sea de utilidad.
Saludos, Cristian.