[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