Neden gksu / gksudo ya da sudo ile grafiksel bir uygulama başlatmıyor?


44

Ubuntu 17.10'u yükledim. Şimdi sorun yaşıyorum gksu:

$ gksu -dg synaptic
No ask_pass set, using default!
xauth: /tmp/libgksu-HgUjgQ/.Xauthority
STARTUP_ID: gksu/synaptic/8760-0-alex-XPS-15-9530_TIME4974977
cmd[0]: /usr/bin/sudo
cmd[1]: -H
cmd[2]: -S
cmd[3]: -p
cmd[4]: GNOME_SUDO_PASS
cmd[5]: -u
cmd[6]: root
cmd[7]: --
cmd[8]: synaptic
buffer: -GNOME_SUDO_PASS-
brute force GNOME_SUDO_PASS ended...
Yeah, we're in...
Unable to init server: Could not connect: Connection refused
(synaptic:8767): Gtk-WARNING **: cannot open display: :1
xauth: /tmp/libgksu-HgUjgQ/.Xauthority
xauth_env: (null)
dir: /tmp/libgksu-HgUjgQ

Kullanmazsam -g, şifre iletişim kutusu devre dışı bırakılır. Bu yüzden kök için bir tty oluşturma ile ilgili bir sorun gibi görünüyor.

Herhangi bir tavsiye?


1
gksudoBir işe yaramaz Wayland oturumunda , belgeyi bir Xorg oturumuna geçmek ve deneyin.
pomsky

2
Eğer bir X hatası "ekranı açamıyorsa: 1" hatası. Wayland bu şekilde tasarlanmıştır ve geliştiricilerin görüşüne göre, komut satırından root olarak grafik uygulamaları çalıştırmamalısınız. Xhost ile çalışabilirsin.
Panter

1
gksu -dg synaptic Bunu asla yapmamalısın.
Rinzwind

3
@ N0rbert, 17.10'u söyleyen sorulara 17.10 eklemeyi bıraktı . Soru etiketleri bu yayına özgü ise sürüm etiketleri kullanılacaktır. Bu soruların çoğu genellikle Wayland, GNOME Shell, vb. Mevcut olduğunda ve geçmiş ve gelecekteki sürümleri içeren yerlerde uygulanabilir.
muru

@maru. LTS akımıdır 16.04, 17.04 17.10 vasıta Wayland ve GNOME Shell varsayılan o kadar normal, yakın EOL, yani 17.10 etiketi yararlıdır diye düşünüyorum. Öyle kullanıcıların 17.10 ile ilgili sorunlar soruları bulmak, ama burada hiç cevap ve yorumlarınız zor . Cevapları gerekiyor, ancak istendiğinde 17.10 etiketi eklemeyi unuttular. Etiket eklemeyi bırakabilirim. İyi niyetti.
N0rbert

Yanıtlar:


55

Bu cevabın Wayland kullanan Ubuntu sürümlerine özgü olduğunu, 17.10'un varsayılan olarak Wayland'ı kullanan ilk sürüm olduğunu unutmayın.

Bu bir hata değil bir özellik! Grafik uygulamaları terminalden root olarak başlatamayacağınız Wayland'ın bir tasarım özelliğidir.

Ana tartışmalar elbette Fedora sitelerinde. Bkz Fedora hata # 1274451 ve Grafik uygulamaları Fedora Ask üzerinde (örneğin gedit, beesu Gparted'tan, Nautilus) wayland içinde kök olarak çalıştırılamaz . Fakat Ubuntu sitelerinde de bazı tartışmalar var ( Ubuntu Devs, 17.10 - OMG! Ubuntu .

Ubuntu hata raporu: pkexec'lenmiş uygulamalar Wayland oturumunda başlatılamıyor

Etrafında Potansiyel iş - (örneğin gedit gibi) bir grafik editörü ile sistem dosyalarını düzenleme yapıyorsanız gibi bir komut satırı aracını kullanın nanoya vimya emacs. nanogenellikle yeni kullanıcılar için daha kolay vim, daha güçlü ve daha fazla özelliğe sahip, bu Vim Eğitimi veya benzerlerine bakın.

Her halükarda, grafik uygulamaları gerçekten root olarak çalıştırmak istiyorsanız veya çalıştırmanız gerekiyorsa , xhostilk önce Xserver'a geri dönmeyi zorlayacak şekilde ayarlayın.

Çalıştırma izinlerini ayarlamak için:

xhost si:localuser:root 

İşiniz bittiğinde izinleri kaldırmak için

xhost -si:localuser:root 

Bu sinaptik hata raporuna göre bunu yapmak için bir grafiksel / masaüstü seçeneği ekleyebilirsiniz

pkexec'in uygulamaları, xhost +si:localuser:rootXDG autostart'a yerleştirilerek aşağıdaki şekilde iyileştirilebilir (N0rbert'in fikri):

cat <<EOF | sudo tee /etc/xdg/autostart/xhost.desktop
[Desktop Entry]
Name=xhost
Comment=Fix graphical root applications
Exec="xhost +si:localuser:root"
Terminal=false
Type=Application
EOF

Bu xhost komutunu .bashrc dosyasına ekleyebilirsiniz, ancak bir çift diğer ad öneririm.

alias gsuon='xhost si:localuser:root'

alias gsuoff='xhost -si:localuser:root'

Takma adı istediğiniz şekilde adlandırabilirsiniz.

Detaylar için bakınız:


Xorg'a geri dön

Herhangi bir nedenden ötürü Xorg'u tercih ediyorsanız, Xorg’da oturum açmayı seçebilirsiniz.

Bkz . Ubuntu 17.10'da Wayland'dan Xorg'a nasıl geçiş yaparsınız?


Bu geçici çözüm Mir ile de çalışıyor mu?
Eliah Kagan

MIR hakkında bilmiyorum, olabilir.
Panter,

1
Ya da sadecexhost +local:
chaskes

18
"Bu bir hata değil bir özellik!" ... iç. Bu tür şeyler kesinlikle arkadaşımı ve meslektaşlarımı linux’a geçmeye ikna edemememin nedeni. VIM ve Nano kullanımı GEdit'in alternatifi değildir. Gedit not defteri gibi çalışır, buna karşın CRTL kodunu öğrenmeniz gerekir. Ve örneğin Nano'yu "Kaydet" yerine "Yazma" gibi terimleri kullanarak al ... Çok kullanıcı dostu.
JHBonarius

9
Bu da tamamen gparted'i kırıyor, bu da erişilmesi gereken önemli bir şey. "Aptal insanların aptalca şeyler yapmasını önlemeye çalışmayın; sadece akıllı insanların zeki şeyler yapmasını önlemede başarılı olursunuz."
Matthew Najmon

21

görüntü tanımını buraya girin Çö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 synapticve gpartedGparted 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

  1. 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
    
  2. gksuve gksudostandart Ubuntu ile birlikte verilmez ve burada çalışmıyorum, ama Xorg çalışır.

    Bunun yerine kullanabilirsiniz

    sudo -H
    
  3. 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 ( xhostve 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-adminYükseltilmiş izinlerle dosya işlemlerinde kullanmak geditve 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 rootuyması rootve kilitlenmesi için sahiplik ve izinleri ayarlamasına neden olabilir . sudo -HKonfigürasyon dosyalarını rootana 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 ~/.bashrctakma 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 -Hve gksiş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, ~/.bashrcbash 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:

görüntü tanımını buraya girin

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:

görüntü tanımını buraya girin

GNOME Shell menüsü:

görüntü tanımını buraya girin

gks konsolu ve gparted:

görüntü tanımını buraya girin

Ö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).

xlogoProgram 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:

görüntü tanımını buraya girin


"Wayland masaüstüne gks üzerinden root erişimi geçici işlevdir" daha güvenli bir yöntem /etc/xdg/autostart/xhost.destopmidir (örneğin, önerildiği gibi bir dosya eklemek yerine ) çünkü orijinal ortamı geri yükleyerek sona erer mi? Ve biz güvenle yerini alabilir sudo -Hile gksuvs. .desktop dosyaları içine böylece kullanım yazısına olarak takma içinde?
Sadi,

1
Evet, sadece gerekli olduğunda masaüstüne kök erişimine izin vermenin daha güvenli olduğunu düşünüyorum. Ve evet, işlevinde sudo -Hile değiştirebilirsiniz gksu, uygulamalarınız için daha iyi çalışabilir.
sudodus

1
Çok kapsamlı cevaplar için +1. Sizin için benzer gkskısaltması ben kurulum vardı gsupolitika kitleri (yeni gelecek kullanmak 16.04için) geditve nautilus. 18.04 çıkınca olsa ben sadece adını vereceğiz düşünüyorum xhost +si...sarıcı komut gksuben ile başlayan paketlerden yüklemek asla 18.04.
WinEunuuchs2Unix

2
"Wayland, GUI uygulama programlarında yükseltilmiş (sudo -H, gksu ...) izinlerine izin vermeyecek şekilde tasarlanmıştır." -- yanlış. Wayland, kök uygulamalarına çok iyi bir şekilde izin verir. Bunu çalıştırarak görebilirsiniz sudo -E gedit. gdmXwayland X11 uyumluluk sunucusunu, root olarak çalışan X11 uygulamaları için gerekli olan XAUTHORITY'yi desteklemeyecek şekilde yapılandırdığı bir hata var . Kök olarak çalışan yerel wayland uygulamaları gayet iyi çalışıyor.
psusi

1
@ psusi, Wayland’ın tasarımı ve niyetiyle ilgili ifadelerden kaçınmak için cevabı değiştirdim.
sudodus

6

Kök hakkını vermeden önce wayland'ın gerçekten çalışıp çalışmadığını kontrol edin

if [ $XDG_SESSION_TYPE = "wayland" ]; then
    xhost +si:localuser:root
fi

5

Eğer kullanıyorsanız Ubuntu 17.04 daha yüksek veya kullanılması önerilir GVFS yönetici arka uç . Metin Düzenleyicisi veya Dosyalar uygulamaları gibi bir uygulamada açmak istediğiniz tam dosya yolunun önüne admin: // ekleyin .

Örneğin, önyükleme ayarlarını değiştirmek için

admin:///etc/default/grub

Bu yöntem PolicyKit kullanıyor ve GUU uygulamaları için sudo ve gksu çalışmazken Ubuntu 17.10'un Wayland varsayılanı ile çalışmaya devam edecek.


1
Teşekkürler. Benim için bu en iyi gedit ile çalıştı (basitçe kullanıldığı zaman garip bir davranış hariç gedit admin:), çok garip bir şekilde nautilus ile (neredeyse işe yaramaz) ve tamamen sinaptikle başarısız oldu . Herhangi bir fikir?
Sadi

Sinaptik ile çalışmayacak. Nautilus da iyi çalışması gerekir, ancak bir dosya değil, bir dizin seçmeniz gerekiradmin:///etc/
Jeremy Bicha

Nautilus ile çalışır ama ne demek istediğimi görürsünüz ("çok garip", "neredeyse işe yaramaz"), bir dizini doğrudan açarken ve bunu yapmaya çalışmaya başladığınızda bile ;-)
Sadi

@Sadi "Bu ve bu" ne olduğu hakkında hiçbir fikrim yok. Doğru çalışmazsa bir hata yapabilirsin.
Jeremy Bicha

3

Bu kodu eklemek isteyebilirsiniz su-root-ve sizin pkexec kullanan uygulamalar için /etc/xdg/autostart(bkz fırlatma rampasında benim yorumunu kendi sorumluluğunuzdadır):

cat <<EOF | sudo tee /etc/xdg/autostart/xhost.desktop
[Desktop Entry]
Name=xhost
Comment=Fix graphical root applications
Exec="xhost +si:localuser:root"
Terminal=false
Type=Application
EOF

Diğer kök uygulamaları Wayland'da da bozulmuştur (bkz. Hata 1713313 ve hata 1713311 ).


Kalıcı bir çözüm istemiyorsanız, @ ravery yöntemini kullanabilirsiniz:

Sadece yazın xhost +si:localuser:rootayrıcalıklı uygulamayı başlatmadan önce terminalde


1

Bir uygulama Wayland API'sini destekliyorsa, sudo -EH applicationkomutu kullanarak root olarak çalıştırabilirsiniz .

-E anahtarı, sudo'ya, yol uygulamaları için gerekli olan ortam değişkenlerini (WAYLAND_SOCKET ve XDG_RUNTIME_DIR) korumasını söyler. Bu seçeneği başka yanıtlarda önerilen kötü xhost kesmek yerine kullanmak her zaman daha iyidir. xhost, uygulamanın Wayland (paylaşılan pano, keylogging vb.) kullanmaktan daha az güvenli olan X sargısının altından çalıştırılmasına izin verir. Sudo -EH numarası, örneğin gparted gibi, wayland için yeniden yazılmış olmayan, gedit vb. İle çalışacak bir uygulama ile çalışmayacak.


0

Aslında aşağıdaki kod neredeyse işe yarıyor:

#! /bin/bash
set -e 
if [ -z "$1" ] ; then
    echo "Application is not specified" ;  exit
fi 
if [ $XDG_SESSION_TYPE = "wayland" ]; then
    if [[ -t 1 ]]; then
       xhost +si:localuser:root
       sudo -u root "$@"
       xhost  -  
       exit 0
    fi 
fi
gksu "$@"

(lütfen saf bash kodlaması için özür dilerim - bu konuda bir tür yeni doğmuşum). Son seçim bir terminal olmasaydı, T Alt-F2'den kararlı çalışmaz; bu durumda odağı parola iletişim kutusuna ayarlayamıyoruz Gnome menüsünden çalışıyor gibi görünüyor. Yine de <1.% 100 bir çözüm değil. 2. Bana öyle geliyor ki, Ubuntu mimarları etrafta hiçbir iş aramamamız gerektiğini düşünüyor.


1
İstediğini düşünüyorum "$@"(yerine "$1" "$2" ...).
muru

Evet, elbette :-) Bunlar sadece deneylerimin
izleridir
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.