18.04'te eşdeğer bir gksu'ya ihtiyacım var


23

Ubuntu 18.04 de dahil olmak üzere birçok Linux lezzetinden gksu kaldırılmasıyla ilgili birçok konu okudum. Pek çok kişi gksu'nun bir kötülük olduğunu ve hiçbir kullanıcının böyle bir şey kullanması gerekmediğini belirtiyor. Bildiğim kadarıyla, root olarak çalışmama izin veren bir şey olmalı (sadece dosyaları düzenlemek için değil) 2 örneğim var.

İlk önce (GUI) komutunda şifreli bir klasör açıldıktan sonra mysql'i başlatmaya ihtiyacım var. Bu, mysql hizmetini başlatan şifreleme sistemi tarafından çalıştırılan bir komut dosyasının olması anlamına gelir. Bu root olarak yapılmalı, bu yüzden betiği şifremi isteyen başlangıç ​​betiğinde gksu kullanıyorum. Bir GUI sisteminden başka bir servisi nasıl başlatabilirim?

Ayrıca Ubuntu sistem yedeklemelerini root olarak çalıştırıyorum, aksi halde birçok sistem dosyası yedeklenemiyor. Yani masaüstü dosyası yedeklemeyi başlatmak için gksu kullanır.

pkexec, politika dosyalarına ihtiyaç duyan karmaşık görünüyor. Tek alternatif bu mu ve eğer öyleyse, neden daha güvenli?

Benzer sorulara verilen diğer cevaplar, insanların şu anda sahip olduğu bireysel sorunları ele almıyor gibi görünüyor. (Veya bulması zor ...). Uzman olmayan kullanıcıların bu gibi sorularının daha ayrıntılı cevaplardan fayda sağlayacağını düşünüyorum. Şimdi biraz sahibim ve kendi soruma cevap vermek istiyorum.


pkexecBunun yerine sizin için çalışıyor mu gksu?
Thomas Ward

@ karel kabul etti, ancak bu yayın açıkça 'ikame' olduğunu belirtmiyor pkexec. (bunun için avlanmak zorunda)
Thomas Ward

2
Ayrıca kullanmayı deneyebilirsiniz sudo -H GUI-programve eğer Wayland bu bağlantı varsa, faydalı olabilir, ... bir GUI aracınız varsa, sizin için iyi çalışan ve yüksek izinler gerektiren geçici çözümler vardır.
sudodus

3
Bu tartışmalı bir konudur, ancak somun kabuğunda kök olarak grafiksel uygulamalar çalıştırmak bir güvenlik riskidir. Siz ve diğer birçokları, bu konuda hemfikir olmasanız da, grafiksel uygulamaları root olarak çalıştırmak Ubuntu ve birçok dağıtım tarafından tavsiye edilmez. Ubuntu alternatif çözümler, pkexec ve diğer politikalar yazıyor. Bir hata raporu oluşturabilirsiniz ve geliştiriciler, paket yöneticileri gibi yapmaları gerektiğini düşündükleri programların çözümü üzerinde çalışacaklardır. Bu, X ve Wayland'ı içerdiği için karmaşıktır. Alternatif olarak grafiksel olmayan uygulamaları kullanın veya kendinizinkini yazın. Şifreleme bir gui gerektirmez
Panter

Şifrelenmiş klasörleri yerleştirmek için bir GUI sağlayan gnome-encfs-manager programını kullanıyorum. Sürücü monte edildiğinde çalıştırılacak bir komut dosyası sağlar. Bu komut dosyasında mysql'yi başlatmam gerekiyor. Bunu başka nasıl yapabilirim? Wayland'a gelince, sinaptik veya gparted guis'e izin vermemek sıradan bir ev masaüstü kullanıcısı bakış açısından gülünçtür. Onlar paha biçilmezdir. Sistemler o kadar güvenli olabilir ki hiç kimse bunları kullanmak istemez - bir denge vardır ve bu özel durumda (wayland) kullanıcı haklı olmalıdır.
pastim

Yanıtlar:



8

Buna başka bir yerde cevap verildiğini biliyorum, ancak bunların hiçbirini bu sorunu çözecek kadar açık ve basit bulamadım. Bu yüzden birçok yerde etrafımı kazdım ve bununla karşılaştım. Linux topluluğunun neden basit masaüstü kullanıcıları için hayatı bu kadar zorlaştırmaya karar verdiğini hala anlamıyorum (ve birçok açıklamayı anlamaya çalıştım), ama bu hayat. GUI'yi hemen hemen her şey için kullanıyorum, sadece gerektiğinde terminal penceresini kullanıyorum. Sudo seçeneklerini kullanarak çözümler söyleyebildiğim kadarıyla bu konuda yardımcı olmuyor. Bu yüzden .desktopdüzenli kullandığım tüm işleri yapan dosyalarım ve komut dosyalarım var.

İki temel çözüm var.

1. Yeniden yükle gksu

Bu çözüm son olabilir veya olmayabilir. Anti-gksu uzmanları bunu durdurmanın bir yolunu bulabilirler. Ama bu arada, 2 indir .debdosyaları libgksu (x64) ve gksu (x64) . Libgksu2'yi ve ardından gdebi veya kullanmak istediğiniz kurulum aracını kullanarak gksu'yu kurun. Bu benim için çalıştı.

2. kullanımı pkexec

(Umarım) daha uzun vadeli bir çözüm olarak, pkexec'in ihtiyaç duyduğum araçlar için çalışmasını sağladım.

  1. Bir komut dosyasından hizmet başlatmak için. Ne gksu ne de pkexec'in gerekli olmadığı ortaya çıktı. Sadece start service xyzve şifrenizi soracak.

  2. Kök dosyaları düzenlemek veya nautilus'u kök olarak açmak için, bkz . Geks Ve Nautilus'un Kök Gibi Nasıl Çalıştırılacağına Bakın gksu - pkexec ile - Web Upd8 . Bu, pkexec geditbir kök dosyasını düzenlemek için içeren bir komut dosyası kullanmanıza izin veren ve benzer şekilde nautilus için pkexec için iki 'polkit' dosyası sunar . Talimatların hepsi bu web sayfasında. Şimdi "filemanager-actions" ı kullanarak gedit veya nautilus'u root olarak çalıştırmak için sağ tıklatma eylemleri sağlıyorum.

  3. Çekirdek sistemin yedekleri için deja-dup'i root olarak çalıştırıyorum. Bunu dışında nadiren yapıyorum /home(çünkü /homeroot erişimi gerektirmeyen sık yedekleme yapıyorum). Bunun işe yaraması için 2. adımda gedit için kullanılan dosyanın bir kopyasını aldım ve deja-dup için düzenledim. İçeriği gerçekten anlamıyorum, ancak pkexec backupbir .desktop dosyasından başlatılan bir betiği kullanarak hem yedekleme hem de dosyaları geri yükleme için işe yarıyor . Bu dosyayı aşağıdakilere ekledim /usr/share/polkit-1/actions:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD polkit Policy Configuration 1.0//EN" "http://www.freedesktop.org/software/polkit/policyconfig-1.dtd">
    
    <policyconfig>
      <icon_name>deja-dup</icon_name>
    
      <action id="org.gnome.DejaDup">
        <description gettext-domain="deja-dup">Backup</description>
        <message gettext-domain="deja-dup">Privileges are required to backup system files</message>
        <defaults>
        <allow_any>no</allow_any>
        <allow_inactive>auth_admin</allow_inactive>
        <allow_active>auth_admin</allow_active>
         </defaults>
        <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/deja-dup</annotate>
        <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
      </action>
    
    </policyconfig>
    

    Bu dizinde, dosyaları geri yükleme konusunda yardımcı olduğunu iddia eden başka bir deja-dup dosyası olduğunu unutmayın, ancak çalışmasını sağlayamadım. Bu yeni dosya gibi benzersiz bir adın olması gerekir org.gnome.DejaDupNew.policy.

Şimdilik gksu olmadan koşuyorum. Devam etmeye çalışacağım…


Yedeklemeyi başlatma komutu pkexec deja-dupbenim için tanımladı. İletişim kutusu önce ayarları seçmeme izin veriyor, bu harika.
wbloos

Bir ilke dosyasını koymak /usr/share/polkit-1/actionsgerçekten de yüksek pkexecizinlere sahip bir masaüstü başlatıcısı oluşturmanın yoluydu . İşte başka bir örnek .
Serge Stroobandt

4

Nautilus Admin ( nautilus-admin ), Nautilus dosya yöneticisi için sağ tıklama menüsüne bazı idari işlemler ekleyen basit bir Python eklentisidir:

  • Yönetici olarak aç: Yönetici (root) yetkileriyle çalışan yeni bir Nautilus penceresinde bir klasör açar.
  • Yönetici Olarak Düzenle: Yönetici (root) yetkileriyle çalışan bir Gedit penceresinde bir dosya açar.

Nautilus Admin'i şu anda desteklenen tüm Ubuntu sürümlerine kurmak için terminali açın ve şunu yazın:

sudo apt install nautilus-admin

Dosya ve Gedit dışındaki diğer uygulamalar için 18.04'te gksu'nun tüm alternatiflerini test ettim ve en tutarlı şekilde çalışan görünüyor:

Sudo -H appname ve> / dev / null

pkexecÇalışırken gksu için en iyi alternatif, çünkü daha yüksek güvenlik sağlar, ancak farklı uygulamalar arasında çok tutarsızdır (örneğin, Gedit ile çalışmaz) ve bazı uygulamalarla çökmesine neden olabilir. sudo -iGereksiz yere yönetmek zordur, çünkü yalnızca tek bir komut çalıştırmak için root olmanız gerektiğinde uzun süre kök salma ayrıcalıklarınızı yükseltir.


3

sgeditYazı tipi, sekmeler ve uzantılar için kullanıcı tercihlerini miras alan bir komut dosyası kullanıyorum . GUI ortamında kararlılık sudo -H gedityerine kullanır gksu gedit. Bir şifre ister.

Var sudokullanıcı hesabınızın devralır geditayarları

sgedit 80 sütun sağ slider.gif

Bu örnekte, yazı tipi adı, yazı tipi boyutu, sekme durakları, sekmeleri boşluklara dönüştürmek, 80 sütun vurgusu ve sağ taraftaki küçük resim kaydırıcı çubuğunun kullanıcı ayarları tarafından miras alınmıştır sudo.

Düzenli olarak sudo -H geditbu yapılandırma ayarlarını yapamaz veya kaydedemezsiniz. Aşağıdaki komut dosyasıyla sgeditayarlar kullanıcı hesabınızdan devralınır.

Bu komut dosyası ayrıca " gksuhatalı ve varsayılan olarak yüklenmez" ve " pkexeckurulumu zordur" sorunlarını da giderir .


Arka fon

Yıllarca aynı konudan rahatsız oldum. Bu haftasonunun projesi sgeditsenaryoyu yazmaktı :

  • Kullanarak çağrı sgedit filename1 filename2...
  • Sekme durakları, yazı tipleri, satır sarma vb. İçin kullanıcının gedit ayarlarını alır.
  • sudo -HKök yetkilerini alırken dosya sahipliğini korumak için yükseltir .
  • Son sudo zaman aşımına uğradıysa şifre ister.
  • Sudo'nun gedit ayarlarını alır
  • Kullanıcı ve sudo gedit ayarları arasındaki farkları karşılaştırır
  • gsettings setSadece farklılıklar üzerinde çalışır (174 setkomutu bir düzine veya daha azına indirger . Bir dahaki sefere belki bir veya iki değişiklik yapılır, ancak çoğu zaman hiçbiri olmaz.
  • Gedit'i arka plan görevi olarak adlandırır, böylece terminal istemi hemen tekrar görünür.

Bash betiği sgedit

#!/bin/bash

# NAME: sgedit
# PATH: /mnt/e/bin
# DESC: Run gedit as sudo using $USER preferences
# DATE: June 17, 2018.

# Must not prefix with sudo when calling script
if [[ $(id -u) == 0 ]]; then
    zenity --error --text "You cannot call this script using sudo. Aborting."
    exit 99
fi

# Get user preferences before elevating to sudo
gsettings list-recursively | grep -i gedit | grep -v history |
    grep -v docinfo |
    grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings

sudoFunc () {
    # Must be running as sudo
    if [[ $(id -u) != 0 ]]; then
        zenity --error --text "Sudo password authentication failed. Aborting."
        exit 99
    fi

    # Get sudo's gedit preferences
    gsettings list-recursively | grep -i gedit | grep -v history |
        grep -v docinfo |
        grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings.root
    diff /tmp/gedit.gsettings.root /tmp/gedit.gsettings | grep '>' > /tmp/gedit.gsettings.diff
    sed -i 's/>/gsettings set/g; s/uint32 //g' /tmp/gedit.gsettings.diff
    chmod +x /tmp/gedit.gsettings.diff
    bash -x /tmp/gedit.gsettings.diff  # Display override setting to terminal
    nohup gedit $@ &>/dev/null &
}

FUNC=$(declare -f sudoFunc)
sudo -H bash -c "$FUNC; sudoFunc $*;"

ev idaresi

Yukarıdaki bash betiğini adı verilen yeni bir dosyaya kopyalayın sgedit. $HOME/binÖrneğin , dizininize yerleştirmenizi öneririm /home/YOURNAME/bin. İlk önce dizini oluşturmanız gerekebilir.

Dosyayı aşağıdakileri kullanarak çalıştırılabilir olarak işaretleyin:

chmod a+x ~/sgedit

Not ~için bir kısayol /home/YOURNAME.


0

Ubuntu 18.04: Bazı kurulum programları ve diğerlerinin aynı isimde olması için gksudo veya gksu'ya ihtiyacı var. Bu işleri yapmak için:

GNOME sürümünü yükleyin ssh-askpass. Bu olmadan, şifre iletişim kutusu başka bir pencerenin arkasına gizlenebilir:

sudo apt-get install ssh-askpass-gnome

Yeni dosya oluştur my-gksudo.sh:

sudo -H gedit /etc/profile.d/my-gksudo.sh

dosya içeriği:

export SUDO_ASKPASS=/usr/bin/ssh-askpass

Gksudo ve gksu ile aynı içeriğe sahip yeni dosyalar oluşturun:

sudo -H gedit /usr/bin/gksudo

ve

sudo -H gedit /usr/bin/gksu

her ikisi için de dosya içeriği:

sudo -A $@

Gksudo ve Gksu çalıştırılabilir olun:

sudo chmod +x /usr/bin/gksudo

Ve

sudo chmod +x /usr/bin/gksu

Bilgisayarı yeniden başlat.

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.