De las siguientes preguntas
vemos que gksu ya no será compatible a largo plazo, y no se instalará de manera predeterminada desde> = 13.04. En cambio, deberíamos usar pkexec, que hace su trabajo bien para aplicaciones no gráficas, pero no para aplicaciones en la GUI:
pkexec gedit
al reemplazar gksu en un archivo .desktop
EXEC=pkexec /usr/bin/gedit
o cuando ejecuto un script de Python para ejecutar una aplicación gráfica con permisos de root, aparece el siguiente error:
>>>subprocess.Popen(['pkexec','gedit'])
** (gedit:3203): WARNING **: Could not open X display
¿Cómo tendría que volver a escribir mis scripts o mis archivos .desktop para admitir un diálogo de autenticación y ejecutar una aplicación como root si no tuviera que depender de gksu?
sudo
que vi dijo algo sobre la integración del soporte para gksu en sudo. Otra cosa a tener en cuenta essudo -A
que, según la página de manual, inicia un (posiblemente) inicio de sesión gráfico.Respuestas:
Primero cree un
.policy
archivo de acción en/usr/share/polkit-1/actions/
. Es convencional nombrar archivos de acción de forma "jerárquica de proveedores", comocom.ubuntu.pkexec.gparted.policy
oorg.debian.apt.policy
Luego pegue el siguiente contenido:
Reemplace
[Short/Full Program Name/Path]
con valores apropiados, por ejemplogedit
,gedit Text Editor
y/usr/bin/gedit
.<action id>
el valor no necesita coincidir con el nombre de archivo elegido (y un solo archivo puede contener múltiples acciones), pero convencionalmente el nombre de archivo es el prefijo para todas sus acciones.Después de guardar el archivo, el programa específico se ejecutará con X y GUI y demás.
Parece que hay otra solución: agregue la siguiente línea en /etc/pam.d/polkit-1:
fuente
Otra solución para los scripts de usuario: determine las variables de entorno apropiadas dentro de su script.
Puede usar un fragmento como el siguiente para hacer esto:
(basado en la
getXuser
función ACPI )Si encuentra que su
.desktop
archivo aún no funciona, puede intentar envolverlopkexec commandline
en unsh
fragmento, por ejemplo:El último problema es un error conocido, aparentemente:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690339
https://bugzilla.xfce.org/show_bug.cgi?id=9373
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=650038
https://bugzilla.gnome.org/show_bug.cgi?id=686059
fuente