si quiere vincular su servidor al puerto 80, debe hacerlo como root y luego soltar los privilegios.
bind(sockfd, addr, addrlen);
/* process is running as root, drop privileges after bind*/
if (setgid(groupid) != 0)
errx(1, "setgid: Unable to drop group privileges: %s", strerror(errno));
if (setuid(userid) != 0)
errx(1, "setuid: Unable to drop user privileges: %S", strerror(errno));
¿Cómo puedo enlazar al puerto 80 sin ser root para que la seguridad no está en peligro (desbordamientos de buffer etc.)
no se ejecutan como root hace no hacer su sistema más seguro solo agrega otra capa para explotar. Así que en lugar de pensar acerca de cómo no se debe ejecutar como root, asegúrese de que no se utiliza ninguna función conocida como insegura strcpy()
, sprintf()
, etc, pero en lugar de utilizar strncpy()
, snprintf()
, etc.
+1 para capacidades, aunque no son portátiles para ningún otro Unix. – dwalter
La mayoría de las personas usa Linux de todos modos. Y creo que * BSD tiene algo similar. – ThiefMaster