GNU/Linux >> Tutoriales Linux >  >> Linux

Creando un socket sin procesar en Python sin privilegios de root

No hay forma de que un proceso sin privilegios (Python u otro) eleve sus propios privilegios. Es una especie de piedra angular de tener todo este asunto de usuarios privilegiados/no privilegiados. Con respecto a los sockets sin formato, desde la página del manual raw(7):

Solo los procesos con una identificación de usuario efectiva de 0 o la capacidad CAP_NET_RAW pueden abrir sockets sin formato.

ID de usuario de 0 significa raíz. Consulte aquí para obtener información sobre sockets sin procesar en Linux.

Como se señaló en la respuesta / comentarios de Faust, no podrá configurar directamente la capacidad CAP_NET_RAW para su programa python, debido a que es un script que ejecuta el intérprete de Python, pero puede haber soluciones en la web que pueden superar esta limitación.


Como notó, los sockets sin procesar requieren privilegios más altos que los que tiene un usuario normal. Puede evitar este problema de dos maneras:

  1. Activar el bit SUID para el archivo con un comando como chmod +s file y establece su propietario en root con chown root.root file . Esto ejecutará su script como root, independientemente del usuario efectivo que lo ejecutó. Por supuesto, esto podría ser peligroso si su script tiene algún defecto.
  2. Configurar la capacidad CAP_NET_RAW en el archivo dado con un comando como setcap cap_net_raw+ep file . Esto le otorgará solo los privilegios necesarios para abrir un socket sin formato y nada más.

EDITAR:

Como señaló @Netch, las soluciones dadas no funcionarán con ningún lenguaje interpretado (como Python). Necesitarás algún "truco" para que funcione. Intenta buscar en Google para "Python SUID", debería encontrar algo.


Linux
  1. Linux:¿cómo se reinicia Gnome sin privilegios de raíz?

  2. ¿Cómo eliminar los privilegios de raíz en los scripts de Shell?

  3. ¿Cambiar la contraseña raíz por Sudo, sin Su?

  4. ¿Cómo ejecutar un comando sin propiedades raíz?

  5. cómo vincular un socket sin procesar a una interfaz específica

CÓMO:Ejecutar Linux en Android sin root

¿Depuración en pyCharm con privilegios de sudo?

Crear base de datos PostgreSQL sin privilegios de root

Cómo finalizar correctamente una sesión de KDE desde el shell sin privilegios de root

Ejecutar ifconfig sin sudo

Instalación de software en Linux sin privilegios de root