Yönetici olmayan bir kullanıcı oturumundan GUI ile bir uygulamayı yönetici olarak nasıl çalıştırabilirim?


33

2 kullanıcı hesabı tanımladım:

  • yönetici ayrıcalıklarına sahip bir tane ( sudosağda) => onu aramanızı sağlar adminuser.
  • a ayrıcalığı olmayan 2. kişi => onu çağırır ve ben bu 2. kullanıcı için otolog'u ayarlarım . normaluser
    normaluser

Bu yüzden bir normaluseroturum açtığımda ve yönetici ayrıcalığına sahip bir uygulamayı çalıştırmak istediğimde + + ve
bir terminal açıyorum :CtrlAltT

su adminuser
sudo anyapplication ...

normaluserOturumu kapatmak zorunda kalmadan (oturum açmaya gerek kalmadan) iyi çalışır adminuser.


Ancak, uygulamanın bir GUI (Grafik Kullanıcı Arayüzü) ile çalışması gerekiyorsa ne yapmam gerekir?
Bunun hakkında düşündüm:

su adminuser
gksu anyapplication ...

ama anladım

** (gksu:9122): WARNING **: the connexion is closed
No protocol specified
No protocol specified
(gksu:9122): Gtk-WARNING **: cannot open display: :0.0

Öyleyse soru şudur: sisteminizi neden bu şekilde yapılandırdınız? Sence güvenliği arttırır mı? Değil :) Bunun yerine, "admin" hesabınızda otomatik oturum açmayı yapılandırabilirsiniz, böylece oturum açtığınızda sizden şifre sormaz - yönetici görevlerini yerine getirirken hala bir şifre gerekir.
Sergey

5
@Sergey normaluserBazen komutları çalıştıramaması gereken biri tarafından kullanılıyorsa root, normaluseryönetici olmayan bir kişi olması kesinlikle güvenliği artırır . Birine bir kullanıcı hesabı vermenin, ancak kendi şifrelerini bilmelerine izin vermemenin tehlikesi, Boris'in sıkıntı ve karmaşıklık durumunun çok ötesine geçmesidir. Bunun neden sorunlu olduğunu tam olarak açıklamak istiyorsanız, yeni bir soru göndermenizi öneririm; ecryptfsverilerin şifresini çözmek .
Eliah Kagan

2
tam olarak, benim için ailemin bilgisayarını kullanmanın bir anlamı yok, herkesin ekran kilidini açmak için yönetici şifresini bilmesini sağlıyor. Bu normaluserve adminuserayar altın kuraldır.
Boris,

1
Yeterince adil, OP'nin normaluserhesabı günlük iş için kullandığı ve adminidari işleri yerine getirme hesabını kullandığı izlenimini edindim . Çok kullanıcılı bir makinede bu tamamen mantıklı.
Sergey,

Yanıtlar:


5

PAM onunla ilgilenebilir

Bu benim için Ubuntu 16.04'te (düzenleme: 18.04 LTS'de de çalışır):

satır koymak:

session optional pam_xauth.so

bir yerde:

/etc/pam.d/su

ve / veya

/etc/pam.d/sudo

ve sonra "su -" veya "sudo su -" yaparak grafiksel uygulamaları root olarak kullanabilirim.


Bunun Kubuntu 16.04 üzerinde de çalıştığını onaylayın. Teşekkürler!
akhmed

Teşekkürler, 18.04'te benim için de çalışıyor! artık en iyi alternatif olarak görünüyor suxve gksubu mevcut değil.
Boris

29

terminoloji

Bu cevapta:

  • normaluseryönetici olmayan ve aynı komutları koşamam normal kullanıcı rootile sudo.
  • adminolarak komutları çalıştırabilirsiniz bir yönetici rootile sudo. (Tabii ki, herhangi bir grafik komutunun doğrudan gibigksugksudo değil / gibi bir grafiksel ön uç kullanması gerekirsudo .)
  • anyapplicationGrafiksel uygulamanın adı normaluserolarak çalıştırmak istiyor root. şifresini normaluserbilir adminve (muhtemelen) bu amaçla kullanabileceği söylenir.

Sorun

Senin sorunun nedeni ve sebebi şu ana kadar (hariç işi yok başka cevapların çoğu Marty Fried 'in mükemmel cevabı vardır):

  • gksuya da kullanmak için yapılandırılabilir sudo ya su da arka uç. Varsayılan davranışı gksuUbuntu için bir önyüz olarak hareket etmek sudo, değil için su. Bu, varsayılan olarak, söylemek, etmektir gksuve gksudodavranırlar tam olarak aynı . Manpage sayfasına bakınız .
  • normaluseryönetici olmayan ve bu nedenle gibi komutları koşamam rootile sudo. olmak istediği kullanıcının şifresini değil, çalıştıran kullanıcınınsudo şifresini ister . Parolanızı, siz olmayan insanlar olarak işlem yapmak için kullanamamak, yönetici olmamak anlamına gelir .
  • normaluser,, Bir Misafir hesabı değil sağlanan edebilirsiniz başka bir kullanıcı olarak komutları çalıştırın ilesu de koyarak, başka bir kullanıcının parolasını . Ama gksubir önyüz gibi davranır sudodeğil, su.
  • normaluserolamaz doğrudan gibi herhangi komutu çalıştırmak rootçünkü normaluserkullanamaz sudove kimse olabilir rootile suçünkü orada hiçbir rootşifre .

Çözüm

Çözüm, iki kimlik doğrulama adımı gerçekleştiren bir komut yazmayı gerektirir:

  • normaluseradminBir grafik komut çalıştırmak için olmalı . Bunu yapmak için, normaluserçalıştırmalısınız gksuile -wbu çalışmasını yapmak için bayrak su-mod yerine varsayılan sudo-mod ve -ubayrak olarak komutu çalıştırmak için adminyerine root.
  • Olarak komut çalıştırmak admingerekir Invoke gksu olmadan-w bayrak kullanmaya sudoolmak root.

İşte komut (evet, test ettim ;-) ):

gksu -w -u admin gksu anyapplication

İki kez parola girmeniz istenir :

  1. Öncelikle, girmelisiniz adminbildirmek için şifresini normalusergibi bir komutu çalıştırmak adminile suarka uç.
  2. İkinci olarak , arka uçtaki gibi bir komutu çalıştırmak için adminparolanızı girmelisiniz .adminrootsudo

Doğru. adminİki kez şifreyi gir .

Çeşitli notlar:

  • İsterseniz, daha az kafa karıştırıcı hale getirmek için ikinci gksuile değiştirebilirsiniz gksudo. Ubuntu'da bunlar eşdeğerdir. (Ayrıca ilk yerini alabilir gksuile gksudo, ama bu son derece mantığa aykırı ve kafa karıştırıcı olabilir.)
  • -wkısa şeklidir --su-mode.
  • -Ssudo-mode varsayılan olduğu için kısa biçimdir --sudo-modeancak hiçbirinin kullanılması gerekmez .
  • İstediğinizi yaptığından emin olmak için önce bunu zararsız bir komutla test etmek isteyebilirsiniz. (Olacak, ama bu konuda bana güvenmene gerek yok.) Örneğin:
    gksu -w -u admin gksu xclock
    xclock güzel, basit bir saat penceresi uygulamasıdır.

1
MÜKEMMEL, bu akıllı ipucunu unutmamak için hemen .bashrc'uma bir takma ad ekliyorum
Boris

nedenini bilmiyorum ama şimdi (ubuntu 14.04 ile) sudoçalışabilmek için başlamalıyım . Örnek:sudo gksu -w -u thedude gksu xclock
Boris,

FYI: kdesudoEn azından KUbuntu'da daha temiz çalışıyor.
MDTech.us_MAN

ne yazık ki, gksuartık mevcut değil gibi görünüyor
Boris

11

Muhtemelen işe yarayacak bir yol, ilk yönetici kullanıcıya geçtiğinizde "su" yerine "sux" kullanmaktır. sux, x uygulamalarının sahte kullanıcı tarafından çalıştırılması sorununu düzeltir. Standart depoda bulunur ve sudo apt-get install suxbir komut satırına girerek kurulabilir .

Ardından, sadece "su" yerine "sux" kullanın ve beklediğiniz şekilde çalışması gerekir.

Uygulama örneğini yeniden kullanalım xclock:

sux admin
gksu xclock

3
suxUbuntu 14.04 64bits sürümünde başka sürüm yok;(
Boris


Bu bir kabuk senaryo @Boris, sadece tarihi bir repo indirebilirsiniz ve örneğin, yolunuza koydu packages.debian.org/source/wheezy/sux
Kimse

2

pkexec

Çok sayıda paket için gerekli pkexecolan paketten kdesudo ve gksu'ya her yerde bir alternatif var policykit-1.


Ben (yönetici olmayan ve kök olamaz normal bir kullanıcı nasıl açıklamak için bu cevabı genişleyen tavsiye sudobir yönetici (yani birinin şifresini bilen veya polkit), olabilir kök haline sudoveya polkit), kullanabilirsiniz pkexeciçin grafiksel bir programı root olarak çalıştırır. Buradaki soru soruyor. Bana hiç de net değil pkexec, özellikle de en azından yoğun yapılandırma dosyalarını düzenlemeden, bunu yapacak pkexecgenellikle (polkit profili olmayan) keyfi grafik programları çalıştırmak için kullanılamaz hiç . Bir yolu var mı?
Eliah Kagan,

@EliahKagan Bu Ubuntu'da varsayılan konfigürasyonla pkexec commandçalışır - sadece çalıştırın ve çalışır. Yapılandırma, /usr/share/polkit-1/actions/org.freedesktop.policykit.policyadlandırılmış paket tarafından yüklenen dosyadadır. Ve aslında yönetici şifresini sadece bir kere
yazmanı

0

Yerine

su admin
gksu uygulaması ...

Denemeyi öneririm gksu -u admin anyapplication, nerede gksukomutu kullanarak her şeyi yaparsın . Ayrıca lütfen komutta belirtilen kullanıcının şifresini de girmeniz gerektiğini unutmayın; bu durumda yönetici şifresini girmeniz gerekir.


1
Eğer varsayılan yapılandırılmış Ubuntu sisteminde, normaluserishal gksu -u admin anyapplicationbunun için istemde bulunur normaluserbireyin şifresi olmaya adminkullanarak sudoarka uç, tıpkı gksu anyapplicationiçin istemi olur normaluserolmayı lar parolası ' rootkullanarak sudoarka uç. Her ikisi de aynı sebepten dolayı başarısız olacak - normaluserkomutları çalıştıracak güce sahip değil sudo.
Eliah Kagan,

-1

İşte bunu başarmanın emri.

gksu app-name

Koştur olmadan çalışan suilk. Yukarıdaki komutu yalnızca normal bir kullanıcı oturumundan çalıştırmanız yeterlidir; uygulama root olarak çalıştırılacaktır.


1
işe yaramadı - ayrıcalığı olmayan bir kullanıcı oturumundan denediğime dikkat edin
Boris

hata mesajı nedir?
SirCharlo

normalkullanıcı şifremi giriyorum - "Kök kullanıcı olarak başlatılması imkansız" mesajını alıyorum
Boris

superuser/adminşifremi giriyorum - "yanlış şifre tekrar dene" mesajını alıyorum
Boris

-1

Kullanmalısın:

gksudo AppName

Bu, önce bir grafiksel şifre talebini getirir (kullanıcı şifreniz), ve sonra GUI-uygulamasını root olarak başlatır (yeni denedim, gerçekten işe yarar. Komik bir şey: gksu AppNamehemen sonra denedim ve bu iyi çalıştı - olduğu gibi) muhtemelen "gk" öneki'nin önerdiği gibi olması gerekiyordu, bu yüzden probleminizin nerede olabileceğinden tam olarak emin değilim).


1
Bu durumda çalışır, çünkü sudo hakkına sahip bir yönetici kullanıcı oturumundan denediniz. Sudo hakkı olmayan yönetici olmayan bir kullanıcı oturumundan ne haber?
Boris,

gksudo'yu normal bir terminal penceresinden, yönetici olmayan bir kullanıcıyla (kendi kullanıcım) kullandım. Ancak, ikinci denemede haklısınız, çünkü hala sudo izni var. Ancak Boris sorunu farklı bir sorun: onun uygulaması benim durumumda iki kere çalıştı, X, bağlanamaz. Asıl sorudan görebileceğiniz gibi, sudometin modunda onun için çalışıyor.
Izzy,

-1

Sadece bir süper kullanıcı var ve bu kök.

Kullanıcı 1 bir yöneticidir ve sudo haklarına sahiptir.
Kullanıcı 2 bir yönetici değildir ve sudo haklarına sahip değildir.

Kullanıcı 1 olarak giriş yapmayı ve ardından komutu kullanmayı deneyin.

gksudo app-name  

(uygulama adı uygulama adıyla değiştirilir)
Yardımcı olur umarım - bana bildirin. :O)

EDIT: istendiği gibi daha fazla bilgi

Bilgisayarda yalnızca sizseniz,
kullanıcı 1'i (sudo kullanma iznine sahip olan)
kullanmak, kullanıcı 2'yi (sudo kullanma iznine sahip olmayan ) kullanmaktan farklı değildir.
Kullanıcı 1, kullanıcı 2 ile aynı haklara sahiptir. Kullanıcı 1,
sudo ile önek eklenmiş bir komut vermedikçe ve / veya uygulamaların root privelages ile çalışmasına izin vermek için şifrelerini sağlar.
Tek fark kullanıcı 2'nin uygulamaları root olarak çalıştıramamasıdır.

Umarım bu sizin için biraz açıklar. :O)


süper kullanıcı ile yönetici arasındaki açıklığa kavuşturduğum için teşekkürler, sorumu düzenleyeceğim. "Kullanıcı 1 olarak oturum açma" => oturumu Kullanıcı 1 ile açarak ne demek istiyorsunuz? iyi, kaçınmak istediğim de bu.
Boris,

istendiği gibi cevaplamak için daha fazla bilgi ekledi: o)
Fernhill Linux Projesi

Karım ve çocuklarım user2'yi autologin ile kullanıyorlar, bu yüzden bu kullanıcı ile dolandırıcılıktan hoşlanmıyorum.
Boris,

İyi bir fikir gibi geliyor - Benim de çocuğum var; o). Henüz user1 olarak giriş yapmayı ve komutu çalıştırmayı denediniz mi?
Fernhill Linux Projesi

1
Evet yapabilirim ama kullanıcı oturumunu değiştirmek çok acı verici. Genelde birkaç kez yapmam gerekiyor: bazı ayarları tanımlamak için yönetici oturumuna gitmek, test etmek için normal kullanıcı oturumuna geçmek ve tekrar tekrar yapmak, normal oturumda kalmak için bunu yapmak çok güzel. GUI başvurusu haricinde çoğu zaman bunu su admin+ sudo ...örneği sudo vi fileile ele alırım
Boris
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.