[pyar] python y sudo
Ezequiel Brizuela [aka EHB or qlixed]
qlixed en gmail.com
Lun Jul 4 12:48:03 ART 2016
Podes usar:
os.setgid
os.setgroups
os.setuid
Ejemplo rapido de dropeo de privilegios:
#!/bin/env python
import os
import sys
if os.getuid() != 0:
print 'Ejecutar como root o con sudo'
sys.exit(-1)
with open('/etc/sudoers','r') as f:
print f.readline()
#Drop a usuario con uid 1000
os.setgid(1000)
os.setgroups([1000])
os.setuid(1000)
try:
with open('/etc/sudoers','r') as f:
print f.readline()
except IOError as e:
print 'Ups, no priv!'
try:
os.setgid(0)
os.setgroups([0])
os.setuid(0)
except OSError as e:
print 'Ups, Si hice drop no puedo subir!, hay q usar subprocess!'
Creo que tambien para subir privilegios nuevamente podrias usar
capabilities, con CAP_SETUID/CAP_SETUID, pero no lo probe.
Saludos.
~ QliXeD [ aka EHB ] ~
El 2 de julio de 2016, 17:51, Javier Marcon<javiermarcon en gmail.com>
escribió:
> Hola, estoy haciendo un programa que dentro de las cosas que hace,
> necesito que haga todo con los permisos del usuario que lo corre excepto
> un par de cosas (fopen/fclose, subprocess.Popen, etc.) con permisos de
> root, osea que la misma clase hace algunas acciones con permisos de un
> usuario y otras acciones con permisos de otro usuario. Con sudo puedo
> hacer que un programa corra con permisos de un usuario y otro con
> permisos de otro usuario, pero no veo como integrarlo sin separar las
> acciones en distintos archivos .py La idea sería hacer algo simple que
> corra, no integrar algo complicado como celery.
>
> Uds que opinan, cual les parece la mejor solución?
>
> Gracias,
>
> Javier.
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160704/9d3486cb/attachment.html>
Más información sobre la lista de distribución pyar