Bagaimana cara menjalankan Dolphin sebagai root?

14

Saat ini saya menggunakan dolphin 17.04.3dan setiap kali saya menjalankannya sebagai sudo, ia memberikan kesalahan berikut Executing Dolphin as root is not possible.tanpa menjelaskan mengapa atau memberikan alternatif. Jadi bagaimana saya bisa menjalankan dolphin sebagai root untuk menyalin atau menghapus file?

Ankur S
sumber
Apa versi Ubuntu yang Anda gunakan?
George Udosen
1
apakah kamu menggunakan wayland? secara default wayland tidak mengizinkan program GUI berjalan sebagai root.
ravery
tidak bekerja opsi untuk membuat atau memindahkan file hanya diklik dalam menu konteks. Silakan periksa versi Anda
Ankur S
Saya menggunakan ubuntu 17.10 dan x11 dengan kde terinstal
Ankur S
2
"Jadi bagaimana saya bisa menjalankan dolphin sebagai root untuk menyalin atau menghapus file?" Harap evaluasi kembali pertanyaan ini. Gunakan baris perintah untuk tugas admin. Itu ada khusus untuk tugas admin. Alat grafis tidak boleh digunakan untuk tugas admin. Menjalankan alat grafis karena admin memiliki efek samping yang tidak terlihat terkait izin dan hingga akhir-akhir ini dianggap sedemikian rupa sehingga pengembang secara aktif memblokirnya. Apakah Anda benar-benar berpikir itu adalah ide yang baik untuk melawan orang-orang yang tahu (atau seharusnya tahu;)) persis apa yang dapat dan tidak dilakukan alat manipulasi file grafis?
Rinzwind

Jawaban:

11

Pendek:

Dolphin 17.04

Dolphin 17.04 atau lebih baru memiliki cek:

if uid == 0 then show the "Executing Dolphin as root is not possible." and exit.

Solusi

Anda dapat mengedit sumber dan menonaktifkan centang. Maka Dolphin akan bekerja seperti sebelumnya.

Dolphin 18.08

Beberapa permintaan ulasan

Dolphin 18.08.0 menggunakan perubahan ini dan Dolphin dapat diluncurkan dengan perintah pkexec sebagai pengguna super administratif.

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true dolphin

More: KDE Foruns - Bagaimana menjalankan Dolphin 18.08 sebagai root dengan Kubuntu atau neon KDE? - https://forum.kde.org/viewtopic.php?f=224&t=153655

masukkan deskripsi gambar di sini

Latar Belakang:

Sebelumnya - Forum KDE - Bagaimana menjalankan Dolphin sebagai root ?: https://forum.kde.org/viewtopic.php?f=224&t=141836

Demi alasan keamanan: Larang mengeksekusi Dolphin sebagai root di Linux - https://cgit.kde.org/dolphin.git/commit/?id=0bdd8e0b0516555c6233fdc7901e9b417cf89

Larang mengeksekusi Dolphin sebagai root di Linux Pada dasarnya salinan commit kate / 9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e yang ditulis oleh Martin Grässlin

Larang mengeksekusi kate dan kwrite sebagai root di Linux: https://phabricator.kde.org/R40:9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e

Lebih banyak tips

KDE Reddit - Root Dolphin pada Aplikasi KDE 17.04: https://www.reddit.com/r/kde/comments/6785b1/dolphin_root_on_kde_app_1704/

Bypass "Menjalankan Dolphin sebagai root tidak mungkin" dan Dapatkan Kembali KDE Dolphin Root Privileges: https://www.reddit.com/r/kde/comments/6xs3mp/bypass_executing_dolphin_as_root_is_not_possible/

Masa depan

Dukungan Polkit di KIO: https://phabricator.kde.org/T6561

Ketika sudah siap, Dolphin akan menampilkan permintaan kata sandi jika diperlukan. Sekarang, dengan Dolphin & KIO yang ditambal:

masukkan deskripsi gambar di sini

pengguna26687
sumber
1
Bisakah Anda menguraikan sedikit lebih banyak pada "Untuk alasan keamanan"?
Jim McAdams
Apakah Anda membaca phabricator.kde.org/… . Sama / lebih banyak: Martin Grässlin - Mengedit file sebagai root: blog.martin-graesslin.com/blog/2017/02/editing-files-as-root
user26687
jadi, jawaban sederhananya adalah "Anda tidak dapat menjalankan Dolphin sebagai root, kecuali Anda menginstal versi yang ditambal"?
@ user47206: Mengapa tidak menambalnya sendiri? ;) Lihat jawaban saya di bawah ini!
WitchCraft
10

Bukan jawaban, hanya solusi untuk tujuan yang disebutkan oleh OP ( copying or deleting files).

Idenya adalah untuk

  1. instal file manager lain yang tidak memiliki batasan itu dan yang tidak membawa banyak dependensi

  2. buat menu konteks "Open as root" di Dolphin untuk pengelola file ini.

Manajer file utama dari desktop lain dapat digunakan (Nautilus, Nemo, Caja, Thunar) tetapi mereka membawa beberapa dependensi. Bahkan PCManFM dan PCManFM-Qt melakukan itu. Jika Anda memerlukan salah satu dari itu untuk beberapa tujuan lain, tambahkan itu bisa menjadi solusi yang baik.

Saya telah menemukan bahwa Krusader (yang saya pikir di masa lalu dulu diinstal secara default di beberapa sistem KDE) dapat dengan mudah diinstal, tidak membawa dependensi di Kubuntu 18.04, dan dapat digunakan sebagai root.

sudo apt install krusader

Di bawah Tools-nya, ia memiliki opsi "Root".

masukkan deskripsi gambar di sini

yang meminta kata sandi dalam gui.

Untuk menambahkan menu konteks dalam lumba-lumba, buat folder ~/.local/share/kservices5/ServiceMenusdan kemudian lakukan

kate ~/.local/share/kservices5/ServiceMenus/filemanager_root.desktop

dan tambahkan

[Desktop Action root]
Exec=/usr/lib/kde4/libexec/kdesu krusader
Icon=dolphin
Name=Open in Krusader file manger as administrator

[Desktop Entry]
Actions=root
Icon=krusader_root
MimeType=inode/directory
ServiceTypes=KonqPopupMenu/Plugin
Type=Service
X-KDE-Priority=TopLevel
X-KDE-StartupNotify=false

Untuk beberapa alasan kdesu krusadertidak berfungsi, dan saya telah menggunakan solusinya dari sini .. Yang juga berfungsi adalah konsole -e sudo krusader, tetapi itu menunjukkan terminal bukan gui untuk kata sandi prompt.

Kemudian, Anda akan melihat di Dolphin:

masukkan deskripsi gambar di sini

membawa dialog

masukkan deskripsi gambar di sini

yang merupakan salah satu yang berfungsi ..


sumber
4

Saya telah membuat versi saya sendiri berdasarkan balasan di atas. Jadi, untuk menambahkan menu konteks untuk membuka Dolphin sebagai root ikuti langkah-langkah ini:

  • Buat file yang dipanggil misalnya DolphinAsRoot.desktoppada direktori~/.local/share/kservices5/ServiceMenus/
  • Dengan editor teks, letakkan konten berikut di atasnya:
[Desktop Entry]
Actions=root
Icon=system-file-manager-root
MimeType=inode/directory
ServiceTypes=KonqPopupMenu/Plugin
Type=Service
X-KDE-Priority=TopLevel
X-KDE-StartupNotify=false

[Desktop Action root]
Exec=/usr/bin/pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true dolphin
Icon=system-file-manager-root
Name=Open as administrator
  • Jika masih belum muncul pada menu konteks di Dolphin, buka "Pengaturan -> Konfigurasikan Dolphin ...-> Layanan" dan aktifkan opsi yang baru Anda tambahkan. Itu harus ada di sana. Jika tidak, tutup Dolphin atau bahkan logout dan masuk di sesi Anda.

Itu saja, saya harap ini membantu Anda semua seperti itu membantu saya;)

Juan Gómez Carrillo
sumber
0

Yang saya lakukan hanyalah menambahkan Terminal ke bilah alat (meskipun pintasan keyboard terikat ke F4) dan menggunakan baris perintah untuk melakukan operasi seperti sudo seperti yang diperlukan.

Seperti itu

Ya itu mungkin tidak nyaman tetapi memaksa Anda untuk mulai belajar baris perintah sementara memberi Anda representasi visual tentang bagaimana sebenarnya perintah itu bekerja.

Ini ada di Arch tetapi fungsinya harus sama di Ubuntu. Harapan itu membantu.

anak pedang
sumber
0

ini dia solusi untuk Dolphin 17.x:

export XDG_CURRENT_DESKTOP=KDE; LD_PRELOAD=/home/roger/Downloads/dolphin/usr/lib64/libkdeinit5_dolphin.so /usr/bin/dolphin

dapatkan libkdeinit5_dolphin.sodari sini

Diuji oleh saya, itu berfungsi dengan baik di Ubuntu bionic.

sumber

eadmaster
sumber
0

Itu sepele!

Lihat saja kode sumber kate dan kwrite:

diff --git a/kate/main.cpp b/kwrite/main.cpp

Di baris pertama kode langsung pada awal fungsi "utama", Anda akan menemukan:

/**
 * Check whether we are running as root
 **/
if (getuid() == 0) // uid = user id = 0 ==> means if you are user 0 (aka root)
{
    std::cout << "Executing Kate as root is not possible. To edit files as root use:" << std::endl;
    std::cout << "SUDO_EDITOR=kate sudoedit <file>" << std::endl;
    return 0;
}

Lumba-lumba tidak berbeda, kecuali ini terjadi di libkdeinit5_dolphin.so.

Jadi menjalankan sebagai root adalah sepele, yang perlu kita lakukan adalah melewatkan if uid = 0 check.

Cara kita melakukan ini, adalah dengan memperbaiki kate, kwrite dan lumba-lumba.
Jadi, hal pertama yang kami lakukan, adalah membuang konten biner ke file teks:

objdump -Crd /usr/bin/kate >> ~/kate.txt
objdump -Crd /usr/bin/kwrite >> ~/kwrite.txt

Sekarang Anda dapat melihat file dengan gedit ~/kate.txt, dan jika Anda mencari getuid, Anda akan menemukan sesuatu seperti:

   2a985:   31 c0                   xor    %eax,%eax
   2a987:   89 bc 24 dc 00 00 00    mov    %edi,0xdc(%rsp)
   2a98e:   e8 ed ce ff ff          callq  27880 <getuid@plt>
   2a993:   85 c0                   test   %eax,%eax
   2a995:   0f 84 e9 1e 00 00       je     2c884 <__cxa_finalize@plt+0x1f5c>

Sekarang, di sisi kiri, Anda menemukan alamat memori, setelah titik dua (:) Anda akan melihat kode instruksi biner (hex) dan di sebelah kanan itu, Anda melihat pembongkaran kode itu (alias apa artinya) .

Sekarang, Anda lihat, ada yang memanggil getuid, menguji apakah itu nol dan melompat ke pernyataan if, artinya jika nilai pengembalian sama dengan nol (je: jump if equal).

Sekarang kami tidak ingin melompat ke if, jadi kami hanya menghapus omong kosong itu di sana. Tetapi hanya menghapus omong kosong itu akan mengubah alamat dengan 6 byte, membuang semua lompatan relatif dalam program dalam proses, dan sebagai konsekuensinya, program. Jadi alih-alih, Anda hanya mengganti seluruh panjang pernyataan lompatan dengan instruksi NOP (kependekan dari N o Op eration), alias 0x90 dalam kode instruksi / hex.

Jadi, Anda perlu mengganti setiap byte melompat di sana dengan 0x90 jadi di mana sebelumnya Anda miliki

0f 84 e9 1e 00 00

Anda akan memiliki

90 90 90 90 90 90

Ini bisa dilakukan hanya dengan hex-editor.
Jadi kami memasang satu:

sudo apt-get install wxhexeditor

Sekarang di hex editor, Anda mencari 0f 84 e9 1e 00 00, dan menggantinya dengan 90 90 90 90 90 90. Jika hanya ada satu kejadian 0f 84 e9 1e 00 00, dan ada, maka ini adalah hal yang sederhana. Ubah saja byte dalam hex menjadi 90 90 90 90 90 90 dan simpan. Jadi. Kate atau kwrite sekarang akan terbuka, apakah Anda root atau tidak.

jika Anda melakukan hal yang sama dengan lumba-lumba, Anda akan menyadari objdump -Crd /usr/bin/dolhinmenghasilkan pembongkaran yang sangat singkat.

jika Anda menjalankan ldd /usr/bin/dolphin, Anda akan melihat lumba-lumba memuat perpustakaan bersama libkdeinit5_dolphin.so

linux-vdso.so.1 (0x00007ffc2fdf0000) libkdeinit5_dolphin.so => ​​/usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.so (0x00007fb54e76c000)

Jadi, Anda melakukan objdump di libkdeinit5_dolphin.so:

objdump -Crd /usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.so >> ~/libkdeinit5_dolphin.txt

Sekarang buka objdump: gedit ~/libkdeinit5_dolphin.txt

Cari getuid, dan Anda akan melihat bahwa salah satu hasil pencarian adalah:

   41f95:   31 c0                   xor    %eax,%eax
   41f97:   89 7c 24 5c             mov    %edi,0x5c(%rsp)
   41f9b:   e8 50 b6 ff ff          callq  3d5f0 <getuid@plt>
   41fa0:   85 c0                   test   %eax,%eax
   41fa2:   0f 84 58 1a 00 00       je     43a00 <kdemain@@Base+0x1a90>
   41fa8:   48 8d 84 24 a0 00 00    lea    0xa0(%rsp),%rax

Ini bagus, Anda tahu, lebih banyak omong kosong seperti di kate dan kwrite.
Sekarang buka /usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.sodi hex-editor Anda, cari 0f 84 58 1a 00 00dan ganti dengan 90 90 90 90 90 90.
Hit save, dan selesai.

Dolphin sekarang berjalan sebagai root.

Catatan: Ide bagus untuk membuat salinan cadangan dari file yang Anda modifikasi, kalau-kalau Anda gagal.

Juga, Anda bisa mengunduh sumber kate, kwrite, dan lumba-lumba, menghapus omong kosong itu dari kode sumber, kompilasi dan instal. Tapi karena sistem cmake bodoh kehilangan beberapa template crap crap untuk beberapa omong kosong bodoh seperti ikon, mungkin karena cmake repo yang disediakan terlalu lama, ini tidak berfungsi. Sayang sekali, akan terlalu sederhana jika itu hanya berhasil, bukan.

Tapi hanya menambal executable seperti yang saya jelaskan lebih cepat, jadi siapa yang peduli.

Anda tahu, ini tidak langsung, tetapi sepele.

PS:
Sekarang, kapan pun kate, kwrite atau lumba-lumba diperbarui melalui apt, perubahan Anda akan ditimpa. Anda harus mendaftar ulang. Saya akan meninggalkan otomatisasi proses tambalan di tangan Anda yang lebih dari cukup, dan bahasa pemrograman Anda untuk joice;)

Bisakah ini dilakukan di bash murni?

Juga, jika Anda ingin menambal vlc untuk omong kosong yang sama, Anda dapat melakukannya dengan sed:

sed -i 's/geteuid/getppid/' /usr/bin/vlc

Cukup masukkan pernyataan sed itu ke dalam skrip, sehingga Anda dapat mendaftar ulang, jika perlu jika Anda sedang luring dan tidak memiliki akses internet.

Selamat melakukan peretasan - dengan kate, kwrite dan lumba-lumba - sebagai root - sambil menonton / mendengarkan sesuatu di vlc.

PS2:
Pemeriksaan root jelek berjalan seperti Dodo di KDE v19.04.
Siapa bilang n evolusi adalah hal yang buruk.
Untuk maju - Ceria!

Sihir
sumber
0

Bukan solusi, tetapi saran .... Mengubah Dolphin dan file agak berisiko. Double Commander adalah alternatif yang sangat baik, dan ditemukan di tempat penyimpanan. Ini akan menginstal tanpa root proviledges. Untuk mendapatkan root, cukup masukkan 'sudo doublecmd' di terminal. Ini memiliki banyak keuntungan ketika bekerja dengan jutaan file.

merampok grune
sumber