Çözümler
Wayland'da GUI uygulama programlarını yükseltilmiş (sudo -H, gksu ...) izinleriyle çalıştırmak zordur. Bu tür görevleri komut satırı araçlarıyla yapmak iyi bir fikirdir.
Ancak, bir GUI aracınız varsa, sizin için iyi çalışan ve daha yüksek izinler gerektiren geçici çözümler vardır. (Böyle iki standart araç kullanıyorum: Synaptic Paket Yöneticisi synaptic
ve gparted
Gparted bölümleme aracı . USB önyükleme sürücüleri oluşturmak için MakeUSB kullanıyorum mkusb
, ancak grafikler olmadan yüksek izinlere sahip parçaları çalıştırabilir.)
xhost
ve sudo -H
Wayland’da oturum açmış kullanıcıdan başka kullanıcıların sahip olduğu grafik uygulama programlarına izin vermek için bir geçici çözüm vardır.
xhost +si:localuser:root
gksu
ve gksudo
standart Ubuntu ile birlikte verilmez ve burada çalışmıyorum, ama Xorg çalışır.
Bunun yerine kullanabilirsiniz
sudo -H
Daha sonra giriş yapan kullanıcılardan başkalarının sahip olduğu grafik uygulama programlarını önlemek iyi bir fikirdir,
xhost -si:localuser:root
gvfs admin arka uç
Ubuntu 17.10 (gvfs> = 1.29.4) 'te gvfs admin arka ucunu kullanabilirsiniz. Tam yola ihtiyacınız olduğuna dikkat edin,
gedit admin:///path/to/file
Teoride, kullandığınız UI ne olursa olsun , gvfs admin backend yöntemi (polkit kullanan) daha iyi ve daha güvenlidir ( xhost
ve ve xudo -H
).
Tüm uygulamayı root olarak çalıştırmazsınız. Ayrıcalık yükseltme, yalnızca kesinlikle gerekli olduğunda gerçekleşir. Aşağıdaki linke ve linke bakınız,
Nautilus-admin
nautilus-admin
Yükseltilmiş izinlerle dosya işlemlerinde kullanmak gedit
ve yükseltilmiş izinlerle kullanmak da mümkündür . Bu, aşağıdaki AskUbuntu cevabında açıklanmıştır,
İşlev yoluyla Wayland masaüstüne kök için geçici erişim gks
Lütfen kaçının sudo GUI-program
. Sistemin, düzenli kullanıcı kimliğinizin yapılandırma dosyalarının yapılandırmasıyla üzerine yazmasına ve düzenli kullanıcı kimliğinize root
uyması root
ve kilitlenmesi için sahiplik ve izinleri ayarlamasına neden olabilir . sudo -H
Konfigürasyon dosyalarını root
ana dizine yazan GUI uygulamalarını çalıştırmalısınız /root
. Örnek:
sudo -H gedit myfile.txt
Ama unuttuğun bir risk var -H
. Bunun yerine, örneğin bir işlev oluşturabilirsiniz.gks
gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
ve ~/.bashrc
takma adların yakınında saklayın . Sonra koşabilirsin
gks gedit myfile.txt
daha gksudo
önce kullandığın gibi .
Test yapmak
Sen nasıl kontrol edebilirsiniz sudo
, sudo -H
ve gks
işi aşağıdaki komutlarla
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 ~ $
ve tabi ki
gks gedit myfile.txt
önceki bölümdeki örneğe göre.
Alt-F2 ve Gnome Shell menüsü ile çalışan yöntem
Tek satırlı basit bir işlev eklemek yerine, ~/.bashrc
bash olmadan da çalışan bir sistem oluşturabilirsiniz. Kullanımı uygun olabilir, ancak kurulması daha karmaşıktır. Lütfen alternatiflerden yalnızca birini kurmanız gerektiğine dikkat edin, çünkü tek satırlık işlev bu daha karmaşık sistemi kullanmaktan rahatsız olacaktır.
Üç dosya
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;
Masaüstü dosyası 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
Simge dosyası gks.svg
şöyle görünür:
Bu dosyadan üç dosyayı içeren simge dosyasını veya bir tarball'ı indirebilirsiniz.
wiki.ubuntu.com/Wayland/gks
[Ayıklanmış veya kopyalanmış ve yapıştırılmış] dosyaları aşağıdaki konumlara kopyalayın,
sudo cp gks /usr/bin
sudo cp gks.desktop /usr/share/applications/
sudo cp gks.svg /usr/share/icons
Oturumu kapat / oturum aç veya yeniden başlat ve çalışan bir masaüstü simgesi olması gerekir. Fonksiyonla basit bir çözüm gibi bir terminal penceresinden çalışacak.
Alt F2 Kutu:
GNOME Shell menüsü:
gks konsolu ve gparted:
Özel komut dosyası ve masaüstü dosyası
Yalnızca yüksek sayıda izin gerektiren birkaç GUI uygulamanız varsa, onlar için özel komut dosyaları ve masaüstü dosyaları oluşturabilir ve komutu girmekten kaçınabilirsiniz (uygulama adı). Sadece Ubuntu'nun önceki sürümlerine kıyasla daha zor olmayan şifreyi girecektiniz (yine de şifreyi girmelisiniz).
xlogo
Program paketiyle birlikte verilen basit GUI programına örnek x11-apps
:
Shellscript gkslogo
(ile karşılaştırıldığında basitleştirilmiş 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;
Masaüstü dosyası 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
Tembeldim ve aynı simge dosyasını kullandım gks.svg
[Kopyalandı & yapıştırılan] dosyaları aşağıdaki konumlara kopyalayın,
sudo cp gkslogo /usr/bin
sudo cp gkslogo.desktop /usr/share/applications/
gks [logo] konsolu ve xlogo:
gksudo
Bir işe yaramaz Wayland oturumunda , belgeyi bir Xorg oturumuna geçmek ve deneyin.