En éste artículo mostramos algunos ejemplos explicados de permisos en Linux, veremos cómo mostrar los permisos, cómo crear directorios con permisos por default, cómo cambiar los permisos en Linux, y cómo utilizar el comando umask
Los permisos en Linux permiten compartir o restringir información y acceso a los recursos de nuestro sistema. Un mal manejo de permisos puede hacer que algo no funcione como debiera.
Mostrar los permisos de un recurso
Utilice el comando ls -l para ver los permisos de un archivo o directorio
Observe el caracter señalado con la etiqueta “Tipo de archivo”. Aquí pueden aparecer cualquiera de las siguientes opciones:
d | Directorio |
l | Enlace simbólico |
c | Dispositivo de carácter |
b | Dispositivo de bloques |
s | Conexiones locales |
p | Conexiones |
Enseguida aparecen los permisos marcados por las letras “rwx”. Cada letra tiene el siguiente significado y valor:
Código | Permiso | Valor octal |
r | Lectura | 4 |
w | Escritura | 2 |
x | Ejecución | 1 |
Además, aparecen repetidos para cada una de las siguientes opciones: el usuario, el grupo y el resto de los usuarios.
El valor octal se puede utilizar para representar combinaciones de permisos, por el ejemplo, si el usuario tiene permisos de lectura escritura y ejecución, el valor correspondiente es 7 (4+2+1).
Cuando se crea un directorio usando el comando mkdir, éste asigna permisos por default.
En el ejemplo anterior se utiliza mkdir test para crear un directorio llamado test. Después usamos ls -l para mostrar los permisos. Vemos que el directorio test tiene los permisos rwxrwxr-x, lo que representa lectura, escritura y ejecución para el usuario y el grupo, y de lectura y ejecución para el resto de usuario. En el sistema octal, sería el permiso 775.
Al crear un directorio, podemos especificar los permisos que necesitemos realmente.
En el ejemplo anterior, vemos cómo se crea un directorio con la opción -m (para especificar permisos) y el valor 700 que representa: lectura, escritura, ejecución para el usuario (4+2+1), y no le da permisos ni al grupo, ni a los otros usuarios: rwx——
Luego creamos otro directorio especificando permisos, pero utilizando otro método, y es indicando uno por uno los permisos necesarios. Al directorio test3 se le crea con los siguientes permisos: u=rwx,g=rx,o= (tenga en cuenta la falta de espacios entre los valores). Es decir, le estamos diciendo que el usuario tiene los tres permisos, lectura, escritura y ejecución, pero el grupo solo tiene el permiso de lectura y ejecución, mientras que los otros usuarios no tienen ningún permiso.
Se utiliza el comando chmod. Hay dos maneras de utilizar chmod: especificando el valor octal, o indicando uno por uno los permisos a modificar.
En el ejemplo de arriba, creamos el directorio test2 con los siguientes permisos:
rwx——
Vimos que en octal, eso es el valor 700
Si deseáramos los siguientes permisos: rw-r–r– el valor octal sería 644
Teniendo eso en cuenta, aplicaríamos el comando chmod:
Observamos que se escribe chmod 644 test2, y el resultado sería el deseado.
También pudimos haber especificado los permisos uno por uno, es decir escribir:
chmod u=rw,g=r,o=r test2 y el resultado sería el mismo.
Si solo necesitamos cambiar un permiso y que el resto de permisos permanezcan ingual, lo más conveniente es indicar solo el permiso que necesitamos cambiar.
Por ejemplo, si deseamos quitar el permiso de ejecución al grupo en el directorio test3:
Lo que se hizo fue ejecutar el comando:
chmod -c g-x test3
Ésto quita (-) el permiso de ejecución (x) al grupo (g) al directorio test3.
Te mencioné que cuando se crea un archivo o directorio, por default se le asignan ciertos permisos. Podemos cambiar ese comportamiento, modificando la máscara de permisos.
Para ver la máscara actual se utiliza umask
En el caso de los directorios, al valor inicial de 777 se le “resta” la máscara y ese es el permiso por default para los directorios. Para los archivos el valor inicial es de 666.
Para cambiar el valor de la máscara utilizamos umask e indicamos el nuevo valor de la máscara. Por ejemplo, si realizamos umask 027, de ese momento en adelante los directorios al crearse tendrán permisos 750, y los archivos tendrán permisos 640.
En el ejemplo anterior vemos que la máscara era 0002. La cambiamos a 027. Luego usamos touch para crear un archivo vacío, y mkdir para crear un nuevo directorio. Notamos que los permisos con lo que se creó el archivo fueron rw-r—– (640) y los permisos con los que se creó el directorio fueron rwxr-x— (750).
El comando stat nos muestra información variada sobre un archivo o directorio, como puede ser su tamaño, dónde está aloja, y lo que nos interesa en éste momento: sus permisos.
En ésta imagen vemos los permisos (0740/drwxr—–). También nos muestra los permisos Uid y Gid.
Éstos permisos permiten a un usuario normal, ejecutar archivos con privilegios como administrador, por ejemplo, el archivo passwd tiene el permiso uid activado, para que los usuarios normales puedan guardar y modificar sus contraseñas, sin tener permisos de administrador, y sin tener que abrir el permiso de escritura al archivo.
Si utilizamos el comando ls -l, el permiso Uid se observa porque en vez de la x aparece una s.
Cabe mencionar que al activar el permiso uid se debe tener cuidado. Muchos atacantes analizan los sistemas para detectar archivos con estos bits activados y utilizarlos para tener acceso al sistema.
Para cambiar los permisos Uid se utilizan los comandos
chmod u+s archivo
y para eliminarlo utilizamos:
chmod u-s archivo
Tabla de permisos
Te dejo la siguiente tabla de permisos que nos ofrece una vista de los valores en binario y octal de los diferentes permisos que se pueden aplicar a un recurso en Linux.
Binarior w x | Valor octal | Permiso |
0 0 1 | 1 | Ejecución |
0 1 0 | 2 | Escritura |
0 1 1 | 3 | Escritura y Ejecución |
1 0 0 | 4 | Lectura |
1 0 1 | 5 | Lectura y ejecución |
1 1 0 | 6 | Lectura y escritura |
1 1 1 | 7 | Lectura, escritura y ejecución |