İ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 su
düş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 dump
ve tar
her 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 sudo
onları vermeden ayrıcalıkları sudo -s
veya sudo bash
yeteneklerini. Sadece işlerini yapmaları için gereken izinlere sahipler, oysa su
tüm sistemi yönetiyorlardı. Bununla birlikte, buna dikkat etmelisiniz: sudo vi
örneğin, birisine söyleme yeteneği verirseniz , kabukları ortadan kaldırabilir vi
ve etkili bir şekilde aynı güce sahip olabilirler sudo -s
.
Kök parola yerine sudoer parolasını aldığı için, sudo
birden 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 su
anlatılması gerektiğidir. sudo
sudoer şifrelerinin bağımsız olarak değişmesine izin verir. Aslında, sudo
tü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 bash
ve sudo -s
olmasıdır -s
kı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-command
Hangisinin some-command
kabuğ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 sudo
aramaya birkaç komut göndermek için kullanabilirsiniz , sudo
tekrar tekrar yazmaya gerek kalmaz .
Bu davranışların her ikisi de isteğe bağlıdır. Çok daha yaygın olarak, -s
yalnı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 bash
farklı 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 .bash
SHELL
/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 -i
etmektir sudo -s
olarak su -
etmektir su
birkaç 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-command
bu 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 -s
istenmeyen 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 PAGER
söyleyeceğiniz gibi .man foo
sudo -s
"Değiştirebilirlerse PAGER
değiştirebilirler PATH
ve sonra sadece kötü bir sudo
programı değiştirebilirler " diyebilirsiniz, ancak yeterince paranoyak biri /usr/bin/sudo /bin/bash
bu 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 -i
aynı zamanda kullanıcının ana dizinine çalışma dizini değiştirir, hala kullanmak isteyebilirsiniz sudo -s
sen 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 -i
ve cd
olsa geri olduğun yere.
sudo su -
Bu şekilde root şifresine ihtiyacınız yok-
ve giriş dizininin doğru ayarlandığından emin olursunuz .