Gksudo ve gksu arasındaki fark nedir?


58

Davranış gksu foove arasında bir fark var mı gksudo foo?
Değiştirilebilir olarak kullanılabilirler mi?

Yanıtlar:


39

Her iki dosya da aynı yere işaret eder:

$ ls -l /usr/bin/gksudo 
lrwxrwxrwx 1 root root 4 2010-09-27 18:23 /usr/bin/gksudo -> gksu

... gksudoile bağlantılı gksu. Ama bu onların anlamına gelmez do münasebet, aynı şeyleri.

Uygulamalar çalıştırmak için kullanılan komutu algılayabilir. Bu, genellikle argv[0]C tarzı dillerde veya $0Bourne tarzı kabuk komut dosyalarında bulunur. Uygulama buna bakabilir ve bu durumda, aslında çalışma şeklini değiştirir. Bunun ilk göstergesi man gksusayfa:

gksu  is  a  frontend  to  su  and gksudo is a frontend to sudo.

Kaynağına ( apt-get source gksu) bakarsanız run_mode, bunu nasıl algıladığını göreceksiniz:

  { /* support gksu_sudo_run */
    gchar *myname = g_path_get_basename (argv[0]);
    if (!strcmp(myname, "gksudo"))
      run_mode = SUDO_MODE;
    g_free (myname);
  }

Bunu --su-mode/ -wve --sudo-mode/ -Sarguments ile geçersiz kılabilirsiniz (böylece gksudosembolik bağlantıya ihtiyaç duymadan eşdeğer komutları çalıştırabilirsiniz ... Ama bu size kalmış.

Bu "modların" gerçekten nasıl değiştiğini bilmek istiyorsanız, sadece bir miktar kaçış var gksu. Bunu takip etmen gerek libgksu. Bu sisteme teslim etmeden önce gerçekten izinleri kontrol eden kütüphanedir.

Hiçbir mod belirtilmemişse (örneğin aramak gksuo ulaştığında değişkenler olmadan) libgksu, bu Gconf kontrol edecek (Stefano işaret ettiği gibi) ve hala karar veremez, eğer varsayılan edeceğiz sumod.


1
Oli'nin yorumuna eklemek için; Gksudo, gksu ile ilişkilendirilse de, Ubuntu'da, varsayılan olarak / apps / gksu / sudo-mode etkin olduğundan , yalnızca gksudo kullanacağız . Bu nedenle, birisi --su modu seçeneğini gksu kullanmazsa zorlamaz.
Vish

5
@Oli: Hemen bir fark olmadığı, çünkü bunun bir sembolik bağlantı olduğu sonucuna varmam. Meşgul kutusuna bak, bağlantı bağlantısının adına bağlı olarak, farklı eylemler gerçekleştirilir. Bu durumda doğru mu değil mi bilmiyorum, ama AFAIK gerçekten de böyle.
Lekensteyn

1
-1, çok yanıltıcı: yazılım onları adlandırmak için hangi adın kullanıldığına bağlı olarak farklı davranabilir. Örneğin bash, çağrıldığında POSIX katı modunu açar sh. Ve gksu bir de çağırma adının farkında.
MestreLion

Cep telefonumda interneti çok küçük bir ekran ve çok büyük parmaklar ile kullanırken istemeden aşağıya düşürülmüş olmalıyım. Telafi etmek için can atmıştım :)
Jacob Vlijm

37

Ubuntu'da (!) Fark yoktur.

  • gksunormalde root kullanıcısına giriş yapar ve bu oturumda bir uygulama çalıştırır. Bununla birlikte, Ubuntu'da, çalışan eşdeğer olan "sudo modunu" kullanmak varsayılandır gksudo. Bunun nedeni ubuntu'da varsayılan olarak root olarak giriş yapamamanızdır .

  • gksudografiksel eşdeğeridir sudo(ve Oli'nun işaret ettiği gibi, gksu’ya sembolik bir bağlantı)

Gksu'nun gconf girişinden:

alt metin

Ayrıca, sudo ve gksudo arasındaki fark üzerine:

Grafiksel uygulamaları root olarak başlatmak için asla normal sudo kullanmamalısınız. Bu tür programları çalıştırmak için gksudo (Kubuntu'daki kdesudo) kullanmalısınız. gksudo, HOME = ~ kök dizinini ayarlar ve .Xauthority dosyasını bir tmp dizinine kopyalar. Bu, ana dizininizdeki dosyaların kök tarafından sahiplenilmesini önler. (AFAICT, gksudo ve sudo ile başlatılan sürecin ortamı için özel olan budur).
 - ( Chris Wilson aracılığıyla topluluğun dokümantasyonundan )


14

Bunun eski bir iş parçacığı olduğunu biliyorum, ancak sizdengksu ve arasındaki ince ama önemli bir farkı söylemem istendigksudo .

Uzun ve zor görünmeme rağmen, hiçbir yerde belgelenmiş bir fark bulamıyorum ve henüz var. Ayrıca neden bir fark olduğunu da bulamadım. Yanlışlıkla kesin çünkü (a tartışılan bu farkın bazı sistem dosyaları silinmiş zaman bu zor yoldan bulundu Ubuntu Forumlarında iplik kullandığım olmuştu -) gksu, ama o zamandan beri kullanmaya özen hep yaptık gksudo.

Özetlemek için şunu deneyin.

  1. Bazı klasörlerde üç dosya oluşturun:
    touch abc
    touch abc.tmp
    touch abctmp
  2. Aşağıdaki altı komutu çalıştırın. İlk beşi aynı (beklenen) sonucu (yani sadece abc.tmp) verirken, altıncı sırada abctmpolması gereken ekstra bir dosya ( ) içerir.

    find . -regextype posix-egrep -regex '.*\.tmp' -print
    sudo find . -regextype posix-egrep -regex '.*\.tmp' -print
    gksudo -- find . -regextype posix-egrep -regex '.*\.tmp' -print
    gksudo --su-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
    gksu --sudo-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
    gksu -- find . -regextype posix-egrep -regex '.*\.tmp' -print
    

Değiştirmeye sorunlara Imagine -printile -deletede findkomuta (bazı sistem dosyalarının silinecek neden bana tam olarak ne olduğu).

Yani, lütfen gksudoyerine kullanın gksu.


Bunu 12.04LTS'de denedim. Nedenini tam olarak anlamadın ama bir fark var. Gksu kaynak kodu gksudoyazmaya eşdeğer olduğunu gösteriyorgksu --sudo-mode
Warren Hill

@WarrenHill - evet, teoride! Fakat pratikte değil. Sebebini bilmiyorum.
Paddy Landau

2
İlginç ve 13.04 tarihinde doğrulandı. Kesinlikle bir alıntı işleme hatası gibi görünüyor.
l0b0

4
Bir hata yaptım .
l0b0

1
@ l0b0 - teşekkürler, oyuma böcek ekledim.
Paddy Landau
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.