Seguridad en los ficheros: protecciones

Servicios - Seguridad

En este apartado vamos a ver los siguientes puntos:

Permisos de ficheros
Cambio de protecciones
Protecciones por defecto: umask

Permisos de ficheros

En cada fichero, además de la información almacenada, hay cierta información adicional sobre las protecciones y tipos de accesos permitidos al mismo, configurable por el usuario. Por ejemplo:


csh> ls -l fichero
-rwxr-xr-- 1 pepe 1499 Jun 6 10:17 fichero

El primer campo de la línea consta de 10 caracteres, y es el que hace referencia al tipo y a las protecciones del fichero. En concreto:

El primer carácter corresponde al tipo de fichero, clasificándose en:

"-" ----> fichero ordinario
"d" ----> fichero directorio
"c" ----> fichero especial tipo carácter
"b" ----> fichero especial tipo bloque
(Aparte y dependiendo del tipo de UNIX hay otras opciones como "l", "s", e "=" que son de menor interés para el usuario).

El resto de los caracteres, y agrupados en bloques de tres, especifican qué tipo de usuario puede realizar qué tipo de operación.

Los distintos tipos de usuarios son:

Propietario: user (u)
Usuario que esté en el mismo grupo del propietario: group (g)
Usuario que no pertenece al grupo del usuario: other (o)
Las operaciones que un usuario puede realizar sobre un fichero son:

Lectura, que es el modo "r"; en el caso de un directorio, permite al usuario ver el contenido del directorio, pero no acceder al mismo.

Escritura, modo "w"; permite modificar el fichero o directorio. En el caso de este último, implica la posibilidad de crear, borrar y renombrar ficheros. Observar que el borrado de un fichero depende, no sólo de los permisos del fichero, sino también del propio directorio en el que esté incluido.

Ejecución, modo "x"; permite ejecutar el fichero. En el caso de que el fichero sea un directorio, da permiso de paso para acceder a los ficheros contenidos en el mismo.
Así, en el ejemplo anterior:


csh> ls -l fichero
-rwxr-xr-- 1 pepe 1499 Jun 6 10:17 fichero

tenemos un fichero de texto, cuyas protecciones permiten:

[rwx] ---> Al usuario "u", leer, escribir y ejecutar el fichero pepe.

[r-x] ---> Al usuario "g", leer y ejecutar el fichero.

[r--] ---> Al usuario "o", leer el fichero.
Aparte de los anteriores "bits" de permisos, hay un cuarto tipo más especial, en el que se engloban:

"Setuid", modo "s". Significa que, la identidad efectiva de usuario con la que se ejecuta el programa es la del propietario del mismo. Este permiso no tiene sentido en ficheros que no sean ejecutables.

Por ejemplo, el siguiente programa es "setuid pepe":


csh> ls -l file
-rwsr-x--- 1 pepe 1499 Jun 6 10:17 file

"Setgid", modo "s". El comportamiento es igual que el anterior pero afectando al grupo. Tampoco tiene sentido en ficheros no ejecutables.

Por ejemplo, tenemos el programa prueba, que es "setgid grupo":


csh> ls -lg prueba
-r-xr-sr-x 1 pepe grupo 9984 Jul 16 1994 prueba

"Sticky bit", modo "t". Los ficheros que tienen el "sticky bit", nunca son eliminados del área de "swapping". Suele ser útil para aquellos programas que se ejecutan a menudo y por diferentes usuarios. Sobre un directorio el comportamiento es distinto, permitiendo que sólo el propietario del fichero, el propietario del directorio o el superusuario "root", puedan renombrar o borrar los ficheros contenidos en él. Suele ser muy útil para áreas de sistema compartidas por todos los usuarios. Por ejemplo, el directorio /tmp:


csh> cd /tmp
csh> ls -ald
drwxrwxrwt 5 root 309 Jun 7 11:41 ./

(Los modos "setuid", "setgid" y "sticky bit", los estudiaremos con profundidad más adelante, dada su relevancia en gran parte de los problemas de seguridad en los sistemas UNIX).

Cambio de protecciones

El propietario del fichero es el que determina quién puede acceder a él y qué operaciones se pueden realizar sobre el mismo. El comando para ello es chmod, y su formato es:


csh> chmod usuario(operador)modo fichero

Los operadores admitidos son:

+ para añadir un permiso.
- para quitarlo.
= para asignarlo.
Ejemplo:


csh> ls -l fichero
-rwxr-x--- 1 pepe 1499 Jun 6 10:17 fichero
csh> chmod u-x fichero
csh> ls -l fichero-rw-r-x--- 1 pepe 1499 Jun 6 18:20 fichero

Existe otra forma de cambiar las protecciones a los ficheros, con el mismo comando chmod, pero distinto formato:


csh>chmod(número octal) fichero

El argumento en este caso es un número octal de tres dígitos, cada uno de los cuales puede tomar uno de los valores 0, 4, 5, 6 ó 7, resultado de la suma de tres posibles números:

4 Acceso de lectura.
2 Acceso de escritura.
1 Acceso de ejecución.
El primer dígito del número octal determina los accesos del propietario (u), el segundo los del grupo (g), y el tercero el de los usuarios que no pertenecen al grupo (o). Retomando el ejemplo anterior, si cambiamos las protecciones con el nuevo formato del comando chmod, lo que antes se hacía de la siguiente forma:


csh> ls -l fichero
-rw-r-x--- 1 pepe 1499 Jun 6 18:20 fichero
csh> chmod u+x,g-x,o=r fichero

ahora sería:


csh> chmod 744 fichero

obteniendo como resultado:


csh> ls -l fichero
-rwxr--r-- 1 pepe 1499 Jun 6 18:26 fichero

Los bits especiales "setuid", "setgid" y "sticky" también pueden cambiarse con un número octal, en este caso de cuatro cifras, según se especifica en la siguiente tabla:

Número Octal Permiso
4000 "Setuid"
2000 "Setgid"
1000 "Sticky bit"

Protecciones por defecto: umask

En Unix, es posible establecer unos valores por defecto para las protecciones de los ficheros de nueva creación. Para ello se utiliza el comando umask:


csh> umask xxx

donde xxx es un número octal de tres dígitos cuyos valores van de 0 a 7, e indican:

Valor Permisos para fichero Permisos para directorio
0 rw- rwx
1 rw- rw-
2 r-- r-x
3 r-- r--
4 -w- -wx
5 -w- -w-
6 --- --x
7 --- ---

Es conveniente la inclusión de esta máscara de protección en el fichero de inicialización .login.

 

 

 

Centro Informático Científico de Andalucía | Aviso legal | Accesibilidad

XHTML válido CSS válido