Saya perlu setara dengan gksu di 18.04

23

Saya telah membaca banyak utas tentang gksu yang dihapus dari banyak rasa Linux, termasuk Ubuntu 18.04. Banyak yang menyatakan bahwa gksu adalah kekejian dan tidak ada pengguna yang perlu menggunakan hal seperti itu. Saya punya 2 contoh di mana, sejauh yang saya tahu, saya harus memiliki sesuatu yang memungkinkan saya untuk menjalankan sebagai root (bukan hanya untuk mengedit file).

Pertama, saya harus memulai mysql hanya setelah folder terenkripsi dibuka pada (GUI) perintah. Ini berarti memiliki skrip dijalankan oleh sistem enkripsi yang memulai layanan mysql. Itu harus dilakukan sebagai root, jadi saya menggunakan gksu di skrip startup yang meminta saya kata sandi. Bagaimana lagi saya bisa memulai layanan dari sistem GUI?

Saya juga menjalankan backup sistem Ubuntu sebagai root, jika tidak banyak file sistem tidak dapat didukung. Jadi file desktop menggunakan gksu untuk memulai cadangan.

pkexec terlihat rumit, membutuhkan file kebijakan. Apakah itu satu-satunya alternatif, dan jika demikian, mengapa lebih aman?

Jawaban lain untuk pertanyaan serupa tampaknya tidak membahas masalah individu yang orang miliki sekarang karena gksu tidak lebih (atau lebih sulit ditemukan ...). Saya pikir pertanyaan seperti itu dari pengguna non-ahli akan mendapat manfaat dari jawaban yang lebih rinci. Saya sekarang memiliki beberapa, dan ingin menjawab pertanyaan saya sendiri.

pastim
sumber
Apakah ini cocok pkexecuntuk Anda gksu?
Thomas Ward
@karel setuju, meskipun posting itu tidak dengan jelas menyatakan 'penggantian' itu pkexec. (Anda harus berburu untuk itu)
Thomas Ward
2
Anda juga dapat mencoba menggunakan sudo -H GUI-programdan jika Wayland ada tautan ini, yang mungkin berguna, ... ada solusi, jika Anda memiliki alat GUI, yang berfungsi dengan baik untuk Anda dan membutuhkan izin yang lebih tinggi.
sudodus
3
Ini adalah topik yang kontroversial tetapi, secara singkat, menjalankan aplikasi grafis sebagai root adalah risiko keamanan. Meskipun Anda, dan banyak lainnya, mungkin tidak setuju dengan ini, menjalankan aplikasi grafis karena root tidak disarankan oleh Ubuntu dan banyak distro. Ubuntu sedang dalam proses menulis solusi alternatif, pkexec dan kebijakan lainnya. Anda dapat mengajukan laporan bug dan pengembang akan bekerja pada solusi untuk program yang menurut mereka harus dilakukan seperti manajer paket. Ini rumit karena melibatkan X dan Wayland. Bergantian gunakan aplikasi non-grafis atau tulis sendiri. Enkripsi tidak memerlukan gui
Panther
Saya menggunakan gnome-encfs-manager, yang menyediakan gui untuk me-mount folder terenkripsi. Ini menyediakan untuk skrip untuk dijalankan ketika drive dipasang. Dalam skrip itu saya perlu memulai mysql. Bagaimana lagi yang bisa saya lakukan ini? Adapun wayland, tidak mengizinkan guaptic synaptic atau gparted konyol dari sudut pandang pengguna desktop rumah biasa. Mereka sangat berharga. Sistem bisa sangat aman sehingga tidak ada yang mau menggunakannya - ada keseimbangan, dan dalam hal ini (wayland) pengguna harus benar.
Pastim

Jawaban:

8

Saya tahu ada jawaban untuk hal ini di tempat lain, tetapi saya belum menemukan satu pun dari mereka yang cukup jelas dan sederhana untuk menyelesaikan masalah ini. Jadi saya menggali di banyak tempat dan menemukan ini. Saya masih tidak mengerti mengapa komunitas Linux telah memutuskan untuk membuat hidup sangat sulit bagi kami pengguna desktop yang sederhana (dan saya telah mencoba memahami banyak penjelasan), tetapi itulah kehidupan. Saya menggunakan GUI untuk hampir semuanya, hanya menggunakan jendela terminal bila perlu. Sejauh yang saya tahu solusi menggunakan opsi sudo tidak membantu dengan ini. Jadi saya punya .desktopfile dan skrip yang melakukan semua pekerjaan yang saya gunakan secara teratur.

Ada dua solusi dasar.

1. Instal ulang gksu

Solusi ini mungkin bertahan atau tidak. Teknisi anti-gksu dapat menemukan cara untuk menghentikannya. Tetapi sementara itu, unduh 2 .debfile dari libgksu (x64) dan gksu (x64) . Instal libgksu2 dan kemudian gksu menggunakan gdebi atau alat instalasi mana pun yang Anda suka gunakan. Ini berhasil untuk saya.

2. Gunakan pkexec

Sebagai solusi jangka panjang (semoga), saya berhasil membuat pkexec bekerja untuk alat yang saya butuhkan.

  1. Untuk memulai layanan dari skrip. Ternyata tidak diperlukan gksu atau pkexec. Hanya start service xyzdan itu akan meminta kata sandi Anda.

  2. Untuk mengedit file root, atau untuk membuka nautilus sebagai root, lihat Cara Menjalankan Gedit Dan Nautilus Sebagai Root Dengan pkexec Sebagai ganti gksu - Web Upd8 . Ini menyediakan dua file 'polkit' untuk pkexec, yang memungkinkan Anda untuk menggunakan skrip yang berisi pkexec gedituntuk mengedit file root, dan juga untuk nautilus. Instruksi semuanya ada di halaman web itu. Saya sekarang menggunakan 'filemanager-action' untuk memberikan tindakan klik kanan untuk menjalankan gedit atau nautilus sebagai root.

  3. Saya menjalankan deja-dup sebagai root untuk cadangan dari sistem inti. Saya melakukan ini jarang, tidak termasuk /home(karena /homesaya sering melakukan backup yang tidak memerlukan akses root). Agar ini berfungsi, saya mengambil salinan file yang digunakan pada langkah 2 untuk gedit dan mengeditnya untuk deja-dup. Saya tidak benar-benar memahami isinya, tetapi itu berfungsi, baik untuk cadangan maupun untuk memulihkan file, menggunakan pkexec backupskrip yang dimulai dari file .desktop. Saya menambahkan file baru ini ke /usr/share/polkit-1/actionsmengandung:

    <?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>
    

    Perhatikan bahwa ada file deja-dup lain di direktori ini, yang mengklaim dapat membantu memulihkan file, tetapi saya tidak bisa membuatnya berfungsi. File baru ini harus memiliki nama yang unik, seperti org.gnome.DejaDupNew.policy.

Saya, untuk saat ini, berlari tanpa gksu. Saya akan mencoba untuk melanjutkan ...

pastim
sumber
Perintah untuk memulai pencadangan adalah pkexec deja-dupuntuk saya, setelah menambahkan file seperti yang Anda jelaskan. Dialog tidak membiarkan saya memilih pengaturan terlebih dahulu, yang bagus.
wbloos
Memasukkan file kebijakan /usr/share/polkit-1/actionsmemang merupakan cara untuk membuat peluncur desktop dengan pkexecizin yang lebih tinggi . Ini adalah contoh lain .
Serge Stroobandt
4

Nautilus Admin ( nautilus-admin ) adalah ekstensi Python sederhana untuk pengelola file Nautilus yang menambahkan beberapa tindakan administratif ke menu klik kanan:

  • Buka sebagai Administrator: membuka folder di jendela Nautilus baru yang berjalan dengan hak administrator (root).
  • Edit sebagai Administrator: membuka file di jendela Gedit yang berjalan dengan hak administrator (root).

Untuk menginstal Nautilus Admin di semua versi Ubuntu yang saat ini didukung buka terminal dan ketik:

sudo apt install nautilus-admin

Saya telah menguji semua alternatif untuk gksu pada 18.04 untuk aplikasi lain selain Files dan Gedit, dan yang tampaknya paling berhasil adalah:

sudo -H appname &> / dev / null

pkexecadalah pengganti terbaik untuk gksu ketika berfungsi karena memberikan keamanan yang lebih tinggi, tetapi sangat tidak konsisten di berbagai aplikasi (misalnya tidak bekerja dengan Gedit) dan dapat menyebabkan crash pada beberapa aplikasi. sudo -itidak perlu sulit untuk dikelola karena itu meningkatkan hak istimewa Anda untuk melakukan root untuk jangka waktu yang lama ketika Anda hanya perlu menjadi root untuk menjalankan satu perintah.

karel
sumber
3

Saya menggunakan skrip bernama sgedityang mewarisi preferensi pengguna untuk font, tab, dan ekstensi. Itu menggunakan sudo -H geditbukangksu gedit untuk stabilitas di lingkungan GUI. Itu meminta kata sandi.

Sudah sudomewarisi geditpengaturan akun pengguna Anda

sgedit 80 kolom slider kanan.gif

Dalam contoh ini pengaturan pengguna untuk nama font, ukuran font, penghentian tab, konversi tab menjadi spasi, 80 kolom highlight, dan bilah geser thumbnail sisi kanan telah diwarisi oleh sudo.

Dengan teratur sudo -H geditAnda tidak dapat membuat atau menyimpan pengaturan konfigurasi ini. Dengan skrip di bawah ini sgedit, pengaturan diwarisi dari akun pengguna Anda.

Skrip ini juga membahas masalah " gksuburuk dan tidak diinstal secara default" dan " pkexecsulit diatur".


Latar Belakang

Saya sudah terganggu oleh masalah yang sama selama bertahun-tahun. Proyek akhir pekan ini adalah menulis sgeditskrip:

  • Panggilan menggunakan sgedit filename1 filename2...
  • Mendapat pengaturan gedit pengguna untuk penghentian tab, font, pembungkus baris, dll.
  • Tinggikan ke sudo -Huntuk mempertahankan kepemilikan file sementara mendapatkan kekuatan root.
  • Meminta kata sandi jika sudo terakhir telah kehabisan waktu.
  • Mendapat pengaturan gedit sudo
  • Membandingkan perbedaan antara pengaturan pengguna dan sudo gedit
  • Berjalan hanya gsettings setpada perbedaan (mengurangi 174 setperintah menjadi selusin atau kurang. Lain kali dijalankan mungkin hanya satu atau dua perubahan tetapi sering kali tidak ada.
  • Memanggil gedit sebagai tugas latar belakang sehingga terminal prompt muncul kembali dengan segera.

Skrip bash 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 $*;"

Pembenahan

Salin skrip bash di atas ke file baru bernama sgedit. Saya sarankan menempatkannya di $HOME/bindirektori Anda , yaitu/home/YOURNAME/bin . Anda mungkin harus membuat direktori terlebih dahulu.

Tandai file sebagai executable menggunakan:

chmod a+x ~/sgedit

Catatan ~adalah jalan pintas untuk /home/YOURNAME.

WinEunuuchs2Unix
sumber
0

Ubuntu 18.04: Beberapa program instalasi dan lainnya memang membutuhkan gksudo atau gksu agar tersedia dengan nama yang sama. Untuk membuatnya bekerja:

Instal versi gnome dari ssh-askpass. Tanpa ini, dialog kata sandi dapat disembunyikan di balik jendela lain:

sudo apt-get install ssh-askpass-gnome

Buat file baru my-gksudo.sh:

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

konten file:

export SUDO_ASKPASS=/usr/bin/ssh-askpass

Buat file baru gksudo dan gksu dengan konten yang identik:

sudo -H gedit /usr/bin/gksudo

dan

sudo -H gedit /usr/bin/gksu

isi file untuk keduanya:

sudo -A $@

Jadikan gksudo dan gksu dapat dieksekusi:

sudo chmod +x /usr/bin/gksudo

Dan

sudo chmod +x /usr/bin/gksu

Nyalakan kembali komputer.

Pekka Lehtikoski
sumber