İle su, sen olmak başka bir kullanıcı - varsayılan olarak kök, ancak potansiyel başka bir kullanıcı. Söylerseniz su -, ortamınız o kullanıcının oturum açma ortamıyla da değiştirilir, böylece gördüğünüz kullanıcının bu kullanıcı olarak giriş yapmasından ayırt edilemez. Sistemin ne yaptığını söyleyebilmesinin imkânı yoktur, ancak sudüştüğünde, bu kullanıcının yaptıkları eylemlerden başka bir kullanıcıya.
İşler çok farklı sudo:
Çalıştığınız komutlar hedef kullanıcı olarak sudo yürütülür - varsayılan olarak kök, ancak değişebilir -u- ancak bunun üzerinden geçtiğiniz komutları kaydeder, kullanıcı adınızla etiketleyerek böylece suçlamadan sonra atanabilir. :)
sudoçok esnektir. Örneğin, belirli bir kullanıcının veya kullanıcı grubunun çalışmasına izin verilen komutları sınırlayabilirsiniz. İle su, ya hep ya hiç.
Bu özellik genellikle rolleri tanımlamak için kullanılır. Örneğin, çalışmasına izin verilen dumpve tarher birinin sistem diskini düzgün bir şekilde yedeklemesi için kök erişimi gerektiren bir "yedekleme" grubu tanımlayabilirsiniz .
Eğer birisi verebilir demektir çünkü burada bu söz sudoonları vermeden ayrıcalıkları sudo -sveya sudo bashyeteneklerini. Sadece işlerini yapmaları için gereken izinlere sahipler, oysa sutüm sistemi yönetiyorlardı. Bununla birlikte, buna dikkat etmelisiniz: sudo viörneğin, birisine söyleme yeteneği verirseniz , kabukları ortadan kaldırabilir vive etkili bir şekilde aynı güce sahip olabilirler sudo -s.
Kök parola yerine sudoer parolasını aldığı için, sudobirden fazla sudoer arasındaki izni ayırır.
Bu, yönetici suşifresini çözer ; bu, root şifresi değiştiğinde, onu kullanmayı bilmek zorunda olan herkese suanlatılması gerektiğidir. sudosudoer şifrelerinin bağımsız olarak değişmesine izin verir. Aslında, sudotüm sysadmin görevlerini yerine getirmeye zorlamak için root kullanıcısının hesabını bir sistemde parola kilitlemek yaygındır sudo. Çok sayıda güvenilir sudocu içeren büyük bir organizasyonda, bu, sistem yöneticilerinden birinin ayrılması durumunda, kök parolayı değiştirmeniz ve kalan yöneticilere dağıtmanız gerekmediği anlamına gelir.
Arasındaki temel fark sudo bashve sudo -solmasıdır -skısadır ve birkaç yönden daki kullanıcının varsayılan kabuk yürütmek için komutları geçmesine olanak tanır:
sudo -s some-commandHangisinin some-commandkabuğunun altında çalıştığını söyleyebilirsiniz . Bunun için kısaca sudo $SHELL -c some-command.
Bunun yerine komutları kabuğun standart girişine, örneğin iletebilirsiniz sudo -s < my-shell-script. Bunu heredoc ile tek bir sudoaramaya birkaç komut göndermek için kullanabilirsiniz , sudotekrar tekrar yazmaya gerek kalmaz .
Bu davranışların her ikisi de isteğe bağlıdır. Çok daha yaygın olarak, -syalnız veriyorsunuz , bu yüzden sadece kullanıcı kabuğunuzu etkileşimli olarak çalıştırıyor. Bu modda, önce çevre değişkeninde göründüğünden sudo bashfarklı bir kabuk çalıştırabileceğinden ve daha sonra ayarlanmamışsa, genellikle kullanıcı adınızın giriş kabuğu ayarında farklıdır .bashSHELL/etc/passwd
Tarafından çalıştırılan kabuk sudo -s, geçerli kullanıcı ortamınızı devralır. Gerçekten istediğin şey temiz bir ortamsa, giriş yaptıktan hemen sonra aldığın gibi, yerine istediğin şey sudo -i, görece yeni bir ekleme sudo. Kabaca sudo -ietmektir sudo -solarak su -etmektir subirkaç anahtar ortam değişkenleri ancak tüm sıfırlar ve kullanıcının ana dizinine geri gönderir. Ayrıca standart giriş yoluyla bu kabuğun altında çalışmasını da komutları vermezseniz veya sudo -i some-commandbu kabuğu etkileşimli bir giriş kabuğu olarak çalıştırır, böylece kullanıcı kabuk başlatma komut dosyaları (örn. .bash_profile) Yeniden çalıştırılır.
Bütün bunlar, sudo -içok daha güvenli hale getirir sudo -s. Neden? Çünkü birisi ortamınızı daha önce değiştirebilirse, sudo -sistenmeyen komutların yürütülmesine neden olabilir. En belirgin durum değişiyor SHELL, ancak aynı zamanda daha az doğrudan da olabilir, örneğin altındayken PAGERsöyleyeceğiniz gibi .man foosudo -s
"Değiştirebilirlerse PAGERdeğiştirebilirler PATHve sonra sadece kötü bir sudoprogramı değiştirebilirler " diyebilirsiniz, ancak yeterince paranoyak biri /usr/bin/sudo /bin/bashbu tuzağı önlemek için diyebilir . Muhtemelen o kadar paranoyak değilsindir, ayrıca diğer tüm duyarlı çevre değişkenlerindeki tuzaklardan da kaçınırsınız . EDITORÖrneğin, herhangi bir VCS komutunu çalıştırmadan önce kontrol etmeyi de hatırladınız mı? Böylece sudo -i.
Çünkü sudo -iaynı zamanda kullanıcının ana dizinine çalışma dizini değiştirir, hala kullanmak isteyebilirsiniz sudo -ssen edildi aynı dizinde kalmasını istediğini biliyorum bu durumlar için cd'sen çalıştırdığınızda içine d sudo. Bu hala daha güvenlidir sudo -ive cdolsa geri olduğun yere.
sudo su -Bu şekilde root şifresine ihtiyacınız yok-ve giriş dizininin doğru ayarlandığından emin olursunuz .