Seguridad en los ficheros: protecciones
En este apartado vamos a ver los siguientes puntos: Permisos de ficheros Permisos de ficherosEn 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:
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 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) 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.
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. "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":
"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":
"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:
(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 proteccionesEl 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:
Los operadores admitidos son: + para añadir un permiso.
Existe otra forma de cambiar las protecciones a los ficheros, con el mismo comando chmod, pero distinto formato:
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.
ahora sería:
obteniendo como resultado:
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 Protecciones por defecto: umaskEn 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:
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 Es conveniente la inclusión de esta máscara de protección en el fichero de inicialización .login. |

