Yanıtlar:
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
... gksudo
ile 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 $0
Bourne 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 gksu
sayfa:
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
/ -w
ve --sudo-mode
/ -S
arguments ile geçersiz kılabilirsiniz (böylece gksudo
sembolik 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 gksu
o 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 su
mod.
bash
, çağrıldığında POSIX katı modunu açar sh
. Ve gksu
bir de çağırma adının farkında.
Ubuntu'da (!) Fark yoktur.
gksu
normalde 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 .
gksudo
grafiksel eşdeğeridir sudo
(ve Oli'nun işaret ettiği gibi, gksu’ya sembolik bir bağlantı)
Gksu'nun gconf girişinden:
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 )
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.
touch abc
touch abc.tmp
touch abctmp
Aşağıdaki altı komutu çalıştırın. İlk beşi aynı (beklenen) sonucu (yani sadece abc.tmp
) verirken, altıncı sırada abctmp
olması 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 -print
ile -delete
de find
komuta (bazı sistem dosyalarının silinecek neden bana tam olarak ne olduğu).
Yani, lütfen gksudo
yerine kullanın gksu
.
gksudo
yazmaya eşdeğer olduğunu gösteriyorgksu --sudo-mode