Soluciones
En Wayland a menudo es difícil ejecutar programas de aplicación GUI con permisos elevados (sudo -H, gksu ...). Es una buena idea hacer tales tareas con herramientas de línea de comandos.
Pero existen soluciones alternativas, si tiene una herramienta GUI, que funcione bien para usted y necesite permisos elevados. (Uso dos de estas herramientas estándar: Synaptic Package Manager synaptic
y la herramienta de particionamiento Gparted gparted
. También uso MakeUSB para crear unidades de arranque USB mkusb
, pero puede ejecutar las partes que necesitan permisos elevados sin gráficos).
xhost
y sudo -H
Existe una solución alternativa para permitir programas de aplicaciones gráficas propiedad de otros usuarios que no sean el usuario registrado en Wayland,
xhost +si:localuser:root
gksu
y gksudo
no están incluidos en Ubuntu estándar y no funcionan aquí, pero funcionan en Xorg.
En cambio, puedes usar
sudo -H
Es una buena idea evitar los programas de aplicaciones gráficas propiedad de otros usuarios que no sean el usuario que inició sesión posteriormente,
xhost -si:localuser:root
backend de administración de gvfs
En Ubuntu 17.10 (gvfs> = 1.29.4) puede usar el backend de administración de gvfs. Tenga en cuenta que necesita la ruta completa,
gedit admin:///path/to/file
En teoría, el método de back-end de administración de gvfs (que usa polkit) es mejor y más seguro (que xhost
y xudo -H
), independientemente de la interfaz de usuario que use.
No ejecuta toda la aplicación como root. La escalada de privilegios ocurre solo cuando es estrictamente necesario. Vea el siguiente enlace y enlaces desde él,
nautilus-admin
También es posible usarlo nautilus-admin
para operaciones de archivo con permisos elevados y usar gedit
con permisos elevados. Esto se describe en la siguiente respuesta de AskUbuntu:
Acceso temporal para root al escritorio de Wayland a través de la función gks
Por favor, evite sudo GUI-program
. Puede hacer que el sistema sobrescriba los archivos de configuración para su ID de usuario normal con root
la configuración y establezca la propiedad y los permisos para ajustar root
y bloquear su ID de usuario normal. Debe ejecutar aplicaciones GUI con sudo -H
, que escribe los archivos de configuración en root
el directorio de inicio de ' /root
. Ejemplo:
sudo -H gedit myfile.txt
Pero existe el riesgo de que lo olvides -H
. En su lugar, puede crear una función, por ejemplogks
gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
y guárdalo ~/.bashrc
cerca de los alias. Entonces puedes correr
gks gedit myfile.txt
de una manera similar a la que usabas gksudo
antes.
Pruebas
Puede comprobar cómo sudo
, sudo -H
y gks
el trabajo con los siguientes comandos
sudodus@xenial32 ~ $ sudo bash -c "echo ~"
/home/sudodus
sudodus@xenial32 ~ $ sudo -H bash -c "echo ~"
/root
sudodus@xenial32 ~ $ gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
sudodus@xenial32 ~ $ gks bash -c "echo ~"
localuser:root being added to access control list
/root
localuser:root being removed from access control list
sudodus@xenial32 ~ $
y por supuesto
gks gedit myfile.txt
según el ejemplo de la sección anterior.
Método que funciona a través de Alt-F2 y el menú Gnome Shell
En lugar de agregar una función simple de una línea ~/.bashrc
, puede crear un sistema que funcione también sin bash. Puede ser conveniente de usar, pero es más complicado de configurar. Tenga en cuenta que debe instalar solo una de las alternativas, ya que la función de una línea alterará el uso de este sistema más complicado.
Tres archivos
El shellscript gks
:
#!/bin/bash
xhost +si:localuser:root
if [ $# -eq 0 ]
then
xterm -T "gks console - enter command and password" \
-fa default -fs 14 -geometry 60x4 \
-e bash -c 'echo "gks lets you run command lines with GUI programs
with temporary elevated permissions in Wayland."; \
read -p "Enter command: " cmd; \
cmdfile=$(mktemp); echo "$cmd" > "$cmdfile"; \
sudo -H bash "$cmdfile"; rm "$cmdfile"'
else
xterm -T "gks console - enter password" -fa default -fs 14 -geometry 60x4 -e sudo -H "$@"
fi
xhost -si:localuser:root;
El archivo de escritorio gks.desktop
:
[Desktop Entry]
Version=1.0
Categories=Application;System;
Type=Application
Name=gks
Description=Run program with temporary elevated permissions in Wayland
Comment=Run program with temporary elevated permissions in Wayland
Exec=gks %f
Icon=/usr/share/icons/gks.svg
Terminal=false
StartupNotify=false
GenericName[en_US.UTF-8]=Run program with temporary elevated permissions in Wayland
El archivo de icono se gks.svg
ve así:
Puede descargar el archivo de icono o un tarball con los tres archivos desde este enlace,
wiki.ubuntu.com/Wayland/gks
Copie los archivos [extraídos, copiados y pegados] en las siguientes ubicaciones,
sudo cp gks /usr/bin
sudo cp gks.desktop /usr/share/applications/
sudo cp gks.svg /usr/share/icons
Cerrar sesión / iniciar sesión o reiniciar, y debería haber un icono de escritorio que funcione. Funcionará desde una ventana de terminal como con la solución simple con la función.
Alt F2 caja:
Menú de Shell de Gnome:
consola gks y gparted:
Script personalizado y archivo de escritorio
Si solo tiene unas pocas aplicaciones GUI, que necesitan permisos elevados, puede crear scripts personalizados y archivos de escritorio para ellos y evitar ingresar el comando (nombre de la aplicación). Solo ingresaría la contraseña, que no es más difícil en comparación con las versiones anteriores de Ubuntu (de todos modos, debe ingresar la contraseña).
Ejemplo con el programa GUI simple xlogo
que viene con el paquete del programa x11-apps
:
El shellscript gkslogo
(simplificado en comparación con gks
),
#!/bin/bash
xhost +si:localuser:root
xterm -T "gks console - enter password" -fa default -fs 14 -geometry 60x4 -e sudo -H xlogo
xhost -si:localuser:root;
El archivo de escritorio gkslogo.desktop
:
[Desktop Entry]
Version=1.0
Categories=Application;System;
Type=Application
Name=gkslogo
Description=Run program with temporary elevated permissions in Wayland
Comment=Run program with temporary elevated permissions in Wayland
Exec=gkslogo
Icon=/usr/share/icons/gks.svg
Terminal=false
StartupNotify=false
GenericName[en_US.UTF-8]=Run program with temporary elevated permissions in Wayland
Era flojo y usaba el mismo archivo de ícono gks.svg
Copie los archivos [copiados y pegados] en las siguientes ubicaciones,
sudo cp gkslogo /usr/bin
sudo cp gkslogo.desktop /usr/share/applications/
Consola gks [logo] y xlogo:
gksudo
no funcionará en una sesión de Wayland , puede cambiar a una sesión de Xorg e intentarlo.