Solusi
Di Wayland seringkali sulit untuk menjalankan program aplikasi GUI dengan izin tinggi (sudo -H, gksu ...). Adalah ide yang baik untuk melakukan tugas-tugas seperti itu dengan alat-alat baris perintah.
Tetapi ada solusi, jika Anda memiliki alat GUI, yang berfungsi dengan baik untuk Anda dan membutuhkan izin yang lebih tinggi. (Saya menggunakan dua alat standar seperti: Synaptic Package Manager, synaptic
dan alat partisi Gparted gparted
,. Saya menggunakan MakeUSB untuk membuat USB boot drive mkusb
, juga, tetapi dapat menjalankan bagian-bagian yang memerlukan izin yang ditinggikan tanpa gambar.)
xhost
dan sudo -H
Ada solusi untuk memungkinkan program aplikasi grafis yang dimiliki oleh pengguna lain daripada pengguna yang login di Wayland,
xhost +si:localuser:root
gksu
dan gksudo
tidak dibundel dengan Ubuntu standar dan tidak berfungsi di sini, tetapi mereka bekerja di Xorg.
Sebaliknya Anda bisa menggunakan
sudo -H
Ini adalah ide yang baik untuk mencegah program aplikasi grafis yang dimiliki oleh pengguna lain daripada pengguna yang masuk setelah itu,
xhost -si:localuser:root
admin backend gvfs
Di Ubuntu 17.10 (gvfs> = 1.29.4) Anda dapat menggunakan backend admin gvfs. Perhatikan bahwa Anda memerlukan path lengkap,
gedit admin:///path/to/file
Secara teori, metode backend admin gvfs (yang menggunakan polkit) lebih baik dan lebih aman (daripada xhost
dan xudo -H
), terlepas dari UI yang Anda gunakan.
Anda tidak menjalankan keseluruhan aplikasi sebagai root. Eskalasi hak istimewa hanya terjadi jika benar-benar diperlukan. Lihat tautan berikut dan tautannya,
nautilus-admin
Dimungkinkan juga untuk digunakan nautilus-admin
untuk operasi file dengan izin tinggi dan untuk digunakan gedit
dengan izin tinggi. Ini dijelaskan dalam jawaban AskUbuntu berikut,
Akses sementara untuk root ke desktop Wayland melalui fungsi gks
Tolong hindari sudo GUI-program
. Ini dapat menyebabkan sistem menimpa file konfigurasi untuk ID pengguna reguler Anda dengan root
konfigurasi dan mengatur kepemilikan dan izin agar sesuai root
dan mengunci ID pengguna biasa Anda. Anda harus menjalankan aplikasi GUI dengan sudo -H
, yang menulis file konfigurasi di root
direktori home /root
. Contoh:
sudo -H gedit myfile.txt
Namun ada risiko yang Anda lupakan -H
. Sebagai gantinya, Anda dapat membuat fungsi, misalnyagks
gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
dan simpan di ~/.bashrc
dekat Anda alias. Maka Anda bisa lari
gks gedit myfile.txt
dengan cara yang mirip dengan cara Anda menggunakan gksudo
sebelumnya.
Pengujian
Anda dapat memeriksa caranya sudo
, sudo -H
dan gks
bekerja dengan perintah berikut
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 ~ $
dan tentu saja
gks gedit myfile.txt
sesuai dengan contoh di bagian sebelumnya.
Metode yang bekerja melalui menu Alt-F2 dan Gnome Shell
Alih-alih menambahkan fungsi satu garis sederhana ~/.bashrc
, Anda dapat membuat sistem, yang berfungsi juga tanpa bash. Mungkin nyaman digunakan, tetapi lebih rumit untuk diatur. Harap perhatikan bahwa Anda harus menginstal hanya salah satu alternatif, karena fungsi satu jalur akan mengganggu penggunaan sistem yang lebih rumit ini.
Tiga file
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;
File desktop 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
File ikon gks.svg
terlihat seperti ini:
Anda dapat mengunduh file ikon atau tarball dengan ketiga file dari tautan ini,
wiki.ubuntu.com/Wayland/gks
Salin file [diekstraksi atau disalin & disisipkan] ke lokasi berikut,
sudo cp gks /usr/bin
sudo cp gks.desktop /usr/share/applications/
sudo cp gks.svg /usr/share/icons
Logout / login atau reboot, dan harus ada ikon desktop yang berfungsi. Ini akan bekerja dari jendela terminal seperti dengan solusi sederhana dengan fungsi.
Alt F2 kotak:
Menu Gnome Shell:
gks console dan gparted:
Script khusus dan file desktop
Jika Anda hanya memiliki beberapa aplikasi GUI, yang memerlukan izin tinggi, Anda dapat membuat skrip khusus dan file desktop untuk mereka dan menghindari memasukkan perintah (nama aplikasi). Anda hanya akan memasukkan kata sandi, yang tidak lebih sulit dibandingkan dengan versi Ubuntu sebelumnya (Anda tetap harus memasukkan kata sandi).
Contoh dengan program GUI sederhana xlogo
yang datang dengan paket program x11-apps
:
Shellscript gkslogo
(disederhanakan dibandingkan dengan 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;
File desktop 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
Saya malas dan menggunakan file ikon yang sama gks.svg
Salin file [disalin & tempel] ke lokasi berikut,
sudo cp gkslogo /usr/bin
sudo cp gkslogo.desktop /usr/share/applications/
gks [logo] console dan xlogo:
gksudo
tidak akan berfungsi dalam sesi Wayland , Anda dapat beralih ke sesi Xorg dan mencoba.