Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
LABORATORIOS 1
writeit.c
1 /*
2 @*/
3 #include <stdio.h>
4 #include <unistd.h>
5 #include <fcntl.h>
6 #include <stdlib.h>
7 #include <string.h>
8 #include <stdlib.h>
9 #include <sys/stat.h>
10
Si está tomando la versión de autoaprendizaje de este curso, el código fuente está disponible para su descarga desde la
pantalla Laboratorio.
$ make writeit
o de forma equivalente:
Si intenta ejecutar este programa como un usuario normal sobre un archivo del cual root es el dueño, obtendrá lo siguiente:
wrote -1 bytes
$ sudo ./writeit
wrote 15 bytes
Por lo tanto, el usuario root fue capaz de sobreescribir el archivo del cual es dueño, pero un usuario normal no podrı́a.
LFS201: V 2019-04-26 © Copyright Linux Foundation 2019. Todos los derechos reservados.
2 CAPÍTULO 42. SEGURIDAD DEL SISTEMA LOCAL
wrote -1 bytes
Al configurar el bit setuid usted puede habilitar a cualquier usuario normal para que lo haga:
wrote 15 bytes
Tenga en cuenta
Usted se podrı́a preguntar por qué simplemente no escribimos un script que realice la operación, en vez de escribir y
compilar un programa ejecutable.
Bajo Linux, si se cambia el setuid en un script ejecutable, no hará nada a menos que usted cambie el bit setuid en la
shell (tal como bash), lo cual serı́a un gran error; cualquier cosa que se corra desde ahı́ podrı́a escalar privilegios.
LFS201: V 2019-04-26 © Copyright Linux Foundation 2019. Todos los derechos reservados.