Yönetici özeti: "root" yönetici hesabının gerçek adıdır. "sudo" sıradan kullanıcıların yönetim görevlerini yerine getirmesine izin veren bir komuttur. "Sudo" bir kullanıcı değil.
Uzun cevap:
"root" (diğer adıyla "superuser") sistem yöneticisi hesabının adıdır. İsmin kökenleri biraz arkaiktir, ama bu önemli değil.
Kök kullanıcı 0 kullanıcı kimliğine sahiptir ve nominal olarak sınırsız ayrıcalıklara sahiptir. Kök herhangi bir dosyaya erişebilir, herhangi bir programı çalıştırabilir, herhangi bir sistem çağrısını yürütebilir ve herhangi bir ayarı değiştirebilir. (Ama aşağıya bakınız¹).
"Sudo" komutunun icadından önce, yönetimsel görevleri gerçekleştirmek istiyorsanız, bir şekilde oturum açma istemi² alarak veya su
komutla ("su" yedek kullanıcı için kısa olacak şekilde) root olarak oturum açmanız gerekiyordu .
Bu biraz güçlük çekiyor ve kullanıcılara kısmi idari güçler vermenize izin vermiyor. Böylece "sudo" komutu ("yedek kullanıcı do" ifadesinin kısaltması) icat edildi.
"Sudo" komutu, kullanıcı kimliğiniz sudoers dosyasında olduğu sürece süper kullanıcı ayrıcalıklarına sahip komutları çalıştırmanıza olanak tanır ve size gerekli yetkileri verir.
Örneğin sudo vi /etc/hosts
, hosts dosyasını root olarak çalışıyormuş gibi düzenlemenize izin verir. Kök şifresine bile ihtiyacınız yok, sadece kendi giriş şifreniz.
Ve elbette, sudo su
sadece kök olmanıza izin verir. Sonuç, root olarak giriş yapmış veya su
komutu yürütmüş olmanızla aynıdır, ancak root şifresini bilmeniz gerekmez, ancak sudoers dosyasında olmanız gerekir.
Sudoers dosyası, sudo komutunu kimlerin kullanabileceğini ve bu komutla neler yapabileceğini belirler.
Sudoers dosyası size birden çok yönetici⁴ verir. Etkili bir şekilde, yöneticileriniz köktür, ayrıca sudoers dosyasında listelenen herkes. Sudoers dosyası olmadan, tek yönetici köküdür.
Aslında, bir başkasının bilgisayarınızı sizin için yönettiği kuruluşlarda, kendi bilgisayarınızın kök şifresini bilmeniz oldukça yaygındır - sudoers dosyasında olduğunuz sürece önemli değildir.
Çalıştığım bir şirkette, devasa bir sunucu çiftliğiyle, çok az sayıda insan kök şifreleri biliyordu. Bunun yerine, kimin hangi sunucular üzerinde çalışmasına izin verildiğine dair bir veritabanı vardı. Otomatikleştirilmiş bir işlem sizi erişim yetkiniz olan sunucuların sudoers dosyalarına ekler ve yetkinizin süresi dolduğunda sizi kaldırır.
¹ Bir şey daha var: Modern Unix sürümleri artık kök kullanıcının yapabileceklerini bile kısıtlayabilir.
SELinux (Güvenliği Geliştirilmiş Linux) altında , hangi programın ne yapabileceğini ve hatta root'un bu kısıtlamaları aşamayacağını belirleyen bir erişim kontrol listesi etkili bir şekilde vardır.
Apple'ın Sistem Bütünlüğü Koruma (SIP) ("köksüz") sistemi altında, belirli dosyalar ve dizinler kilitlenir, böylece yalnızca uygun beyaz listedeki uygulamalar bunlara erişebilir.
Bu sistemler, bir sistemi kötü niyetli bir kullanıcının kök erişimi elde etmeyi başardığı durumdan korumak için vardır. (Veya bazı durumlarda, kullanıcıların yerleşik cihazlarını hapse atmasını önlemek için.) Açık nedenlerden dolayı, kök erişimiyle bile bu kısıtlamaları atlamak son derece zordur.
² "login:" istemi Unix tarihinin bir diğer arkaik parçası olup, pencere sistemleri yerine seri hatlarda ascii terminalleri kullandığımız zamana dayanır. Yine login
de herhangi bir terminal penceresini yazarak veya başka bir yerden bilgisayarınıza bir ssh (veya telnet veya rsh) bağlantısı açarak bir "login:" istemi alabilirsiniz . İsterseniz oradan başka bir kullanıcı olarak giriş yapabilirsiniz. (Bilgisayarınızda seri bağlantı noktaları varsa, yine de üzerlerinde oturum açmaya izin verecek şekilde yapılandırabilirsiniz.)
İndividual Bireysel programlara root erişimi verilmesi de mümkündür. Bu programlar, sıradan bir kullanıcı tarafından çalıştırıldığında bile root erişimi olan bir kullanıcının yapabileceği her şeyi yapabilir. Bunlar genellikle belirli görevlerle sınırlıdır. Örneğin, crontab programının, cron tablolarını düzenleyebilmesi için kök ayrıcalıkları vardır. Açıkçası, "sudo" kök ayrıcalıklarına sahiptir, böylece yaptığı şeyi yapabilir.
⁴ Daha önce parladığım bir noktayı daha ele alacağım. Ben "yönetici" ve "kök" dönüşümlü olarak kullanıyorum, ama başka tür yöneticiler var. Bunlara genellikle "rol hesapları" denir, yani bu hesaplar gerçek insanlara ait değildir, bunun yerine sistem üzerinde belirli bir rol oynamak için vardır. /etc/passwd
Sisteminizdeki dosyaya bakarsanız, onlarca ve onlarca hesap bulacaksınız.
Örneğin, sisteminize mysql yüklüyse, bir "mysql" kullanıcısı olur ve tüm veritabanı dosyaları, yapılandırma dosyaları vb. Bu kullanıcıya ait olur. Yalnızca bu kullanıcı dosyalara erişmek ve mysql sunucusunu çalıştırmak için gerekli izinlere sahip olacaktır. Bir anlamda, bu kullanıcı bir yönetici hesabı olurdu, ancak yalnızca mysql için.
Veritabanı yönetim görevlerini gerçekleştirmeniz gerekiyorsa, su mysql
komutla "mysql" olur veya sudo
sudoers dosyasının bu belirli komutlar için size mysql ayrıcalıkları vereceği yeri kullanırsınız.