“su”, “sudo -s”, “sudo -i”, “sudo su” arasındaki farklar nelerdir?

130

Zaten manuel olarak okudum ama fark göremiyorum ..

su - kullanıcı kimliğini değiştirin veya süper kullanıcı olun

sudo -s [command]

-s (shell) seçeneği, ayarlanmışsa SHELL ortam değişkeni tarafından belirtilen kabuğu veya passwd (5) 'de belirtildiği gibi kabuğu çalıştırır. Eğer bir                    komut belirtilir, yürütme için kabuğuna geçirilir. Aksi takdirde etkileşimli bir kabuk yürütülür.

sudo -i el kitabındaki açıklama yok

    
sordu Smile.Hunter 22.10.2011 08:11

5 cevap

107

Bu komutlar arasındaki ana fark, işlevlerine erişimi kısıtlama biçimindedir.

su ("kullanıcı değiştir" veya "kullanıcı değiştir" anlamına gelir) - tam olarak bunu yapar, hedef kullanıcının ayrıcalıklarına sahip başka bir kabuk örneğini başlatır. Bunu yapma haklarına sahip olduğunuzdan emin olmak için, sizden hedef kullanıcının şifresini girmenizi ister. Yani kök olmak için kök şifresini bilmeniz gerekir. Makinenizde root olarak komutları çalıştırması gereken birkaç kullanıcı varsa, bunların hepsi root şifresini bilmelidir - aynı şifrenin olacağını unutmayın. Kullanıcılardan birinin yönetici izinlerini iptal etmeniz gerekirse, root şifresini değiştirmeniz ve yalnızca erişimi engellemeye ihtiyacı olan kişilere söylemeniz gerekir - dağınık.

sudo (hmm ... mnemonik nedir? Süper Kullanıcı DO?) tamamen farklı. Hangi kullanıcıların belirli eylemlerde haklarına sahip olduklarını listeleyen bir yapılandırma dosyası (/ etc / sudoers) kullanır (root, vb. Komutları çalıştırır). Çağrıldığında, onu başlatan kullanıcının parolasını sorar. - Terminaldeki kişinin gerçekten /etc/sudoers listelenen aynı "joe" olduğundan emin olmak için. Bir kişiden yönetici ayrıcalıklarını iptal etmek için, sadece yapılandırma dosyasını düzenlemeniz (veya kullanıcıyı bu yapılandırmada listelenen bir gruptan kaldırmanız) gerekir. Bu, ayrıcalıkların daha temiz bir yönetimiyle sonuçlanır.

Bunun sonucu olarak, birçok Debian tabanlı sistemde root kullanıcının şifre ayarlaması yoktur - yani doğrudan root olarak giriş yapmak mümkün değildir.

Ayrıca, /etc/sudoers , bazı ek seçenekler belirtilmesine izin verir - yani, kullanıcı X, yalnızca Y programını çalıştırabilir.

Sıklıkla kullanılan sudo su kombinasyonu aşağıdaki gibi çalışır: ilk sudo sizden sizin parolanızı ister ve eğer buna izin verilirse, sonraki komutu çağırır (% co_de Süper kullanıcı olarak%) % Co_de%, su tarafından çağrıldığından, hedef kullanıcının şifresini girmenizi gerektirmez. Bu nedenle, su , root dosyası tarafından süper kullanıcı erişimine izin verilirse başka bir kullanıcı (root dahil) olarak bir kabuk açmanıza izin verir.

    
verilen cevap Sergey 22.10.2011 09:21
48

sudo , kendi kullanıcı hesabınızda komutları root ayrıcalıklarıyla çalıştırmanıza izin verir. su kullanıcı değiştirmenize izin verir, böylece kök olarak oturum açmış olursunuz.

sudo -s , root ayrıcalıklarına sahip bir kabuk çalıştırıyor. sudo -i ayrıca kök kullanıcının ortamını da edinir.

su ve sudo -s arasındaki farkı görmek için, her birinin ardından cd ~ ve sonra pwd yapın. İlk durumda, root'un ana dizininde olacaksınız, çünkü siz kökensiniz. İkinci durumda, kendi ana dizininizde olacaksınız, çünkü root yetkisiyle kendinizsiniz.

Bu tam soru hakkında daha fazla tartışma var buradaki .

    
verilen cevap Mike Scott 22.10.2011 08:28
6

su , kullanıcının "root" şifresini istiyor.

sudo kendi parolanızı sorar (ve ayrıca, /etc/sudoers yoluyla yapılandırılan root olarak komutları çalıştırmaya izin verilip verilmediğini kontrol eder - varsayılan olarak "admin" grubuna ait tüm kullanıcı hesaplarına izin verilir sudo kullanımı.)

sudo -s bir kabuğu root olarak başlatır, ancak çalışma dizini değiştirmez. sudo -i root hesabına giriş yapılmasını taklit eder: çalışma dizininiz /root , root .profile vb. girişte olduğu gibi olacaktır.

    
verilen cevap Marius Gedminas 22.10.2011 21:38
2

Ubuntu'da veya ilgili bir sistemde, geleneksel, süper kullanıcı anlamında su için fazla kullanmıyorum. sudo bu durumu daha iyi ele alır. Bununla birlikte, su , sudoerların yapılandırılmasının aptalca olacağı tek seferlik durumlarda başka bir kullanıcı olmak için mükemmeldir.

Örneğin, sistemimi canlı bir CD / USB'den tamir ediyorsam, genellikle sabit sürücümü ve diğer gerekli şeyleri ve chroot 'i sisteme yüklerim. Böyle bir durumda, ilk komutum genellikle:

su - myuser  # Note the '-'. It means to act as if that user had just logged in.

Bu şekilde, root olarak değil, normal kullanıcım olarak çalışıyorum ve sonra sudo 'ı uygun şekilde kullanıyorum.

    
verilen cevap Scott Severance 26.10.2011 09:23

Etiketlerdeki diğer soruları oku