Saya mendefinisikan 2 akun pengguna:
- satu dengan hak istimewa admin (dengan
sudo
kanan) => sebut sajaadminuser
. - yang ke-2 tanpa privilege => sebut saja
dan saya mengkonfigurasi autologin pada pengguna kedua ini .
normaluser
normaluser
Jadi ketika saya membuka normaluser
sesi dan ingin menjalankan aplikasi dengan hak istimewa admin,
saya membuka terminal Ctrl+ Alt+ Tdan:
su adminuser
sudo anyapplication ...
Ini berfungsi dengan baik, tanpa harus keluar dari normaluser
sesi (tidak perlu membuka adminuser
sesi).
Tetapi apa yang harus saya lakukan jika aplikasi perlu dijalankan dengan GUI (Graphic User Interface)?
Saya berpikir tentang itu:
su adminuser
gksu anyapplication ...
tapi saya mengerti
** (gksu:9122): WARNING **: the connexion is closed
No protocol specified
No protocol specified
(gksu:9122): Gtk-WARNING **: cannot open display: :0.0
normaluser
kadang-kadang digunakan oleh seseorang yang seharusnya tidak dapat menjalankan perintahroot
, maka membuatnormaluser
non-administrator pasti meningkatkan keamanan . Bahaya memberi seseorang akun pengguna tetapi tidak memberi tahu mereka kata sandi mereka sendiri jauh melampaui situasi Boris dalam kerumitan dan kompleksitas. Jika Anda ingin penjelasan lengkap mengapa itu bermasalah, saya sarankan memposting pertanyaan baru, tetapi 3 alasannya adalah bahwa pengguna harus dapat mengunci dan membuka kunci layar, logout dan kembali dengan jenis sesi yang berbeda, dan mendekripsiecryptfs
data.normaluser
danadminuser
pengaturan adalah aturan emas.normaluser
akun untuk pekerjaan sehari-hari danadmin
akun untuk melakukan tugas administrasi, yang tidak benar-benar meningkatkan apa pun. Pada mesin multi-pengguna ini benar-benar masuk akal.Jawaban:
PAM dapat mengatasinya
Ini berfungsi untuk saya di Ubuntu 16.04 (edit: berfungsi juga di 18.04 LTS):
cantumkan:
di suatu tempat di:
dan / atau
dan kemudian melakukan "su -" atau "sudo su -" Saya dapat menggunakan aplikasi grafis sebagai root.
sumber
sux
dangksu
yang tidak tersedia lagi.Terminologi
Dalam jawaban ini:
normaluser
adalah user biasa yang bukan administrator dan tidak dapat menjalankan perintah sebagairoot
dengansudo
.admin
adalah administrator yang dapat menjalankan perintahroot
dengansudo
. (Tentu saja, perintah grafis apa pun harus menggunakan antarmuka grafis sepertigksu
/gksudo
, dan tidaksudo
secara langsung.)anyapplication
adalah nama aplikasi grafis yangnormaluser
ingin dijalankan sebagairoot
.normaluser
tahuadmin
password 's dan telah (mungkin) telah diberitahu s / ia dapat menggunakannya untuk tujuan ini.Masalah
Penyebab masalah Anda, dan alasan sebagian besar jawaban yang lain sejauh tidak bekerja (dengan pengecualian Marty Fried 's jawaban yang sangat baik ), adalah:
gksu
dapat dikonfigurasi untuk menggunakan salah satusudo
atausu
sebagai backendnya. Perilaku defaultgksu
di Ubuntu adalah bertindak sebagai frontend untuksudo
, bukan untuksu
. Artinya, secara default,gksu
dangksudo
berperilaku persis sama . Lihat halaman manual .normaluser
bukan seorang administrator dan karenanya tidak dapat menjalankan perintahroot
dengansudo
.sudo
meminta kata sandi pengguna yang menjalankannya , bukan kata sandi pengguna yang diinginkan . Tidak dapat menggunakan kata sandi Anda untuk melakukan tindakan sebagai orang yang bukan Anda adalah apa artinya tidak menjadi administrator .normaluser
, asalkan itu bukan akun Tamu, dapat menjalankan perintah sebagai pengguna lain , dengansu
memasukkan kata sandi pengguna lain . Tapigksu
bertindak sebagai ujung tombaksudo
, bukansu
.normaluser
tidak dapat secara langsung menjalankan perintah apa punroot
, karenanormaluser
tidak dapat digunakansudo
, dan tidak ada yang dapatroot
melakukannyasu
karena tidak adaroot
kata sandi .Solusinya
Solusinya memerlukan penulisan perintah yang melakukan dua langkah otentikasi:
normaluser
harus menjadiadmin
untuk menjalankan perintah grafis. Untuk melakukan ini,normaluser
harus dijalankangksu
dengan-w
flag untuk membuatnya berjalan dalam mode su, bukan mode sudo default , dan-u
flag untuk menjalankan perintah sebagaiadmin
gantiroot
.admin
must invokegksu
tanpa menggunakan-w
flagsudo
menjadiroot
.Inilah perintahnya (ya, saya telah mengujinya ;-) ):
Anda akan diminta kata sandi dua kali :
admin
kata sandi, untuknormaluser
menjalankan perintah sepertiadmin
padasu
backend.admin
kata sandi, untukadmin
menjalankan perintah sepertiroot
padasudo
backend.Betul sekali. Anda memasukkan
admin
kata sandi dua kali.Catatan lain-lain:
gksu
dengan yanggksudo
membuatnya kurang membingungkan. Di Ubuntu, mereka setara. (Anda juga dapat mengganti yang pertamagksu
dengangksudo
, tetapi itu akan sangat berlawanan dengan intuisi dan membingungkan.)-w
adalah bentuk pendek dari--su-mode
.-S
adalah bentuk pendek dari--sudo-mode
tetapi tidak harus digunakan karena sudo-mode adalah default.xclock
adalah aplikasi jam-jendela sederhana yang bagus.sumber
sudo
untuk membuatnya bekerja. Contoh:sudo gksu -w -u thedude gksu xclock
kdesudo
terlihat bekerja lebih bersih, setidaknya di KUbuntu.gksu
tidak tersedia lagiSalah satu cara yang mungkin akan berhasil adalah menggunakan "sux" daripada "su" saat Anda pertama kali beralih ke pengguna admin. sux memperbaiki masalah menjalankan aplikasi x dari pengguna palsu. Itu dalam repo standar, dan dapat diinstal dengan memasukkan
sudo apt-get install sux
pada commandline.Kemudian, gunakan saja "sux" daripada "su" dan itu akan bekerja seperti yang Anda harapkan.
Mari kita gunakan kembali contoh aplikasi
xclock
:sumber
sux
di Ubuntu 14.04 64bits;(
pkexec
Ada alternatif di mana-mana untuk kdesudo dan gksu -
pkexec
yang berasal daripolicykit-1
paket yang dibutuhkan oleh banyak paket.sumber
sudo
atau polkit), yang mengetahui kata sandi administrator (yaitu, seseorang yang dapat menjadi root dengansudo
atau polkit), dapat digunakanpkexec
untuk jalankan program grafis sebagai root. Itulah pertanyaan yang diajukan di sini. Tidak jelas bagi saya yangpkexec
akan melakukan ini, setidaknya tanpa mengedit file konfigurasi secara luas, terutama karenapkexec
umumnya tidak dapat digunakan untuk menjalankan program grafis sewenang-wenang (tanpa profil polkit) sama sekali . Apakah ada cara?pkexec command
dan berfungsi. Konfigurasi ada di file/usr/share/polkit-1/actions/org.freedesktop.policykit.policy
yang diinstal oleh paket bernama. Dan itu sebenarnya mengharuskan Anda untuk menulis kata sandi admin hanya sekaliDari pada
Saya sarankan Anda untuk mencoba
gksu -u admin anyapplication
, di mana Anda melakukan semuanya menggunakangksu
perintah itu sendiri. Juga harap dicatat bahwa Anda harus memasukkan kata sandi pengguna yang disebutkan dalam perintah, yaitu, dalam hal ini Anda harus memasukkan kata sandi admin .sumber
normaluser
dijalankangksu -u admin anyapplication
akan memintanormaluser
kata sandi untukadmin
menggunakansudo
backend, seperti halnyagksu anyapplication
akan memintanormaluser
kata sandi untukroot
menggunakansudo
backend. Keduanya akan gagal karena alasan yang sama -normaluser
tidak memiliki kekuatan untuk menjalankan perintahsudo
.Inilah perintah untuk mencapai ini.
Jalankan tanpa berlari
su
terlebih dahulu. Anda hanya perlu menjalankan perintah di atas dari sesi pengguna normal dan aplikasi akan dijalankan sebagai root.sumber
normal
kata sandi pengguna saya - saya mendapat pesan "Tidak mungkin diluncurkan sebagai pengguna root"superuser/admin
kata sandi saya - saya mendapat pesan "kata sandi salah, coba lagi"Kamu harus menggunakan:
Ini memunculkan permintaan kata sandi grafis terlebih dahulu (kata sandi pengguna Anda), dan kemudian memulai aplikasi GUI sebagai root (saya baru saja mencoba, itu benar-benar lucu. Hal yang lucu: Saya mencoba
gksu AppName
segera setelahnya, dan itu berhasil juga - sebagaimana adanya mungkin seharusnya, seperti yang disarankan awalan "gk. Jadi saya tidak sepenuhnya yakin di mana masalah Anda berada).sumber
sudo
dalam mode teks berfungsi untuknya.Hanya ada satu pengguna super dan itu adalah root.
Pengguna 1 adalah admin dan memiliki hak sudo.
Pengguna 2 bukan admin dan tidak memiliki hak sudo.
Coba masuk sebagai pengguna 1 lalu gunakan perintah
(mengganti nama aplikasi dengan nama aplikasi)
Harapan yang membantu - beri tahu saya. :Hai)
Sunting: Info lebih lanjut seperti yang diminta
Jika hanya Anda yang menggunakan komputer,
maka menggunakan pengguna 1 (yang memiliki izin untuk menggunakan sudo)
tidak berbeda dengan menggunakan pengguna 2 (yang tidak memiliki izin untuk menggunakan sudo).
Pengguna 1 memiliki hak yang sama dengan pengguna 2.
Kecuali jika pengguna 1 mengeluarkan perintah yang diawali dengan sudo dan / atau memberikan kata sandi mereka untuk memungkinkan aplikasi dijalankan dengan root privelage.
Satu-satunya perbedaan adalah pengguna 2 tidak dapat menjalankan aplikasi sebagai root.
Semoga itu bisa membantu menjelaskannya sedikit untuk Anda. :Hai)
sumber
su admin
+sudo ...
contohsudo vi file
, kecuali untuk aplikasi dengan GUI