Respuesta original
Usted podría considerar el interruptor setuid en el propio ejecutable. Wikipedia tiene un article en él, que incluso le muestra la diferencia entre geteuid()
y getuid()
con bastante eficacia, siendo el primero para averiguar quién está "emulando" y el segundo para que usted "". El proceso de sudo, por ejemplo, geteuid debe devolver 0 (root) y getuid tu ID de usuario, sin embargo, sus sub-procesos no realmente ejecutados como root (se puede verificar esto con sudo id -u -r
).
No creo que hay una manera de obtener fácilmente mediante programación acceso de root - después de todo, aplicar el principio de privilegio mínimo, ¿por qué se necesita? La práctica común es ejecutar solo partes limitadas de código con privilegios elevados. Muchos daemons, etc., también se configuran en sistemas modernos para que se ejecuten como sus propios usuarios con la mayoría de los privilegios que necesitan. Es solo para operaciones muy específicas (montaje, etc.) que los privilegios de root son realmente necesarios.
2013 actualización
Mi respuesta original se encuentra (aunque mi 2013 sí podría hacer un mejor trabajo de lo que mi 2010 uno), pero si está diseñando una aplicación que requiere acceso de root, es posible que desee considere exactamente qué tipo de acceso raíz se necesita y considere el uso de POSIX Capabilities(man page). Estos son diferentes a capability-based security como se implementa en L4 y col. Las capacidades de POSIX permiten que su aplicación tenga un subconjunto de poderes de raíz. Por ejemplo, CAP_SYS_MODULE
le permitirá insertar módulos de kernel, pero no le dará ningún otro poder de raíz. Esto está en uso en distribuciones, p. Fedora has a feature to completely remove setuid binaries con acceso raíz indiscriminado.
Esto es importante porque como programador, ¡su código es obviamente perfecto! Pero, las bibliotecas de las que dependes (suspira, ¡si tan solo las hubieras escrito!) Podrían tener vulnerabilidades en ellas. Mediante el uso de capacidades, puede limitar el uso de este exploit y salvarse a sí mismo y a su empresa del escrutinio relacionado con la seguridad. Esto hace que todos sean más felices.
Sí, mi enfoque no era el correcto. Configurar el bit adhesivo es la mejor forma de hacerlo. Muchas gracias. – ereOn
¡Funciona como un encanto! Gracias;) – ereOn
Al hacer esto, debe ser * muy * cuidadoso con la seguridad, ya que su aplicación ahora es un objetivo para los exploits de Escalation of Privilege –