Genel bilgiler
Linux işletim sistemleri kullanıcı ayrıcalıklarını farklılaştırma prensibini uygular, yani farklı hesaplar dizinlere, dosyalara ve programlara farklı miktarlarda erişim hakkına sahiptir. Maksimum haklar yerleşik kök hesaba verilir. Yeni oluşturulan kullanıcı hesapları genellikle sistem yapılandırma dosyalarına erişim, hizmetleri yönetme ve yazılım paketlerini yükleme ve silme konularında önemli ölçüde kısıtlanır. Ancak, işletim sisteminde root hesabı altında çalışmak, öncelikle güvenlik nedenleriyle kesinlikle önerilmez.Bu durumda, sudo komut satırı yardımcı programı kurtarmaya gelir.
sudo komutu, ayrıcalıksız bir hesap kullanarak artırılmış ayrıcalıklarla (varsayılan olarak root haklarıyla) bireysel komutların çalıştırılmasına izin verir. Bu yardımcı programın çalışması için nelerin gerekli olduğunu görelim.
Kurulum ve yapılandırma
Ubuntu işletim sisteminde sudo varsayılan olarak etkindir ve Debian'da, yükleme işlemi sırasında ilgili paket seçilmemişse, aşağıdaki resim büyük olasılıkla olacaktır:
root@debian10:~# sudo
-bash: sudo: command not found
Bu yüzden eksik paketi yüklemeniz gerekiyor. Depo bilgilerini güncelleyin ve sudo'yu yükleyin:
apt-get update
apt-get install sudo
Sürecin sona ermesini bekliyoruz:
Başarılı bir kurulumdan sonra, hangi kullanıcıların veya grupların ayrıcalık yükseltmeyi kullanabileceğini ve ne ölçüde kullanabileceğini belirlemek için sudo'yu yapılandırmanız gerekecektir. Tüm bu ayarlar /etc/sudoers yapılandırma dosyasında saklanır, ancak bu dosyada doğrudan değişiklik yapılması kesinlikle önerilmez. Bu amaçlar için özel bir komut kullanılır:
visudo
yapılandırma dosyası içeren bir metin düzenleyicisi başlatır:
Hakların verilmesinden iki hat sorumludur:
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL
İlk satır root hesabı için hakları ayarlar, ikinci satır ise paket yüklendiğinde oluşturulan sudo grubunun üyeleri için hakları ayarlar (ismin önündeki % işareti ismin bir kullanıcı grubuna ait olduğu anlamına gelir).
Buna göre, kullanıcı hesabına sudo kullanma hakkı vermenin iki ana yolu vardır:
- Sunucudaki sudo grubuna bir kullanıcı hesabı (örn. kullanıcı) ekleyin:
usermod –a –G sudo user
Grup üyeliğini değiştirdikten sonra, yeni yapılandırmayı uygulamak için bu hesapta yeniden oturum açmanız gerekecektir. Bu yöntem, kullanıcıya tam haklar verilmesi gereken durumlarda önerilir.
- Dosyada, örneğin kullanıcı hesabı için yeni bir girdi oluşturun. Root'a benzer bir satır ekliyoruz:
user ALL=(ALL:ALL) ALL
Ayrıcalıklar listesinin ayarlanacağı durumlarda yeni bir giriş eklenmesi önerilir (daha sonra anlatılacaktır). Dosyada değişiklik yaptıysak, Ctrl-O klavye kısayoluna basarak bunları kaydetmemiz ve düzenleyiciden çıkmamız gerekir - Ctrl-X.
Şimdi doğru çalışmayı kontrol edebilirsiniz:
user@debian10:~$ sudo cat /etc/sudoers
[sudo] password for user:
sudo komutu mevcut kullanıcının (bu durumda kullanıcı) parolasını sorar - girin ve her şey doğru yapılırsa, sistem yapılandırma dosyasının içeriğini göreceğiz.
İnce ayar
Böylece, sıradan bir kullanıcı parolasını bilmeden root hesabının haklarına sahip komutları çalıştırabilir. Bu çok kullanışlıdır, ancak güvenli olmayabilir - sudo kullanılarak çalıştırılabilecek komutların aralığını sınırlamak mümkün müdür? Evet ve aynı yapılandırma dosyası bu konuda bize yardımcı olacaktır. Visudo'yu tekrar başlatıyoruz ve daha fazlasını anlıyoruz. Kullanıcı adından sonra belirtilen parametrelerle ilgileniyoruz:
Bunları daha ayrıntılı olarak analiz edeceğiz:
- ALL= (ALL: ALL) ALL - ilk parametre yapılandırmanın hangi ana bilgisayara uygulanacağını belirler. Ayrılmış bir sunucu kullanırken, parametre değiştirilmeden bırakılabilir;
- ALL=(ALL: ALL)ALL - parantez içindeki parametreler komutun hangi kullanıcının (ilk parametre) ve/veya grubun (ikinci parametre) yetkisiyle çalıştırılacağını belirler. Varsayılan olarak sudo komutu root olarak çalıştırır, ancak -u anahtarı ile başlatırken farklı bir hesap belirtebilir ve -g anahtarı ile başlangıçta ayrıcalıkları kullanılacak başka bir grup belirtebilirsiniz;
- ALL=(ALL: ALL)ALL- üçüncü parametre bu ayarların hangi dosya ve komutlara ait olduğunu belirler.
Yukarıdakilere dayanarak, gerekirse, izin verilen komutların listesini belirleyin, son parametre ALL ile ihtiyacımız olanı değiştirin, komutları virgülle ayırarak listeleyin. Örneğin, satır:
user ALL=(ALL:ALL) /sbin/shutdown –r, /bin/cat
kullanıcıya sudo /sbin/shutdown -r ile sunucuyu yeniden başlatmak ve sudo /bin/cat kullanarak dosyaları görüntülemek için sudo kullanma hakkı verir. sudo aracılığıyla diğer komutlar çalıştırılmayacaktır. Örneğin sudo /sbin/shutdown -h komutu ile sunucuyu kapatmaya çalıştığınızda şu cevabı alırız:
Üzgünüz, debian10'da kullanıcının root olarak '/sbin/shutdown -h' komutunu çalıştırmasına izin verilmiyor.
Kullanışlı
Ayrıcalıkların listesini sudo -l (geçerli kullanıcı için liste görüntülenecektir) veya sudo -l -U user (kullanıcı ayrıcalıklarının listesi görüntülenecektir) komutunu çalıştırarak görebilirsiniz:
sudo'nun bileşimi, belirtilen dosya ile hemen yükseltilmiş ayrıcalıklarla, yani komut yerine bir metin düzenleyicisi başlatan sudoedit komutunu içerir:
sudo nano /etc/network/interfaces
koşabilir:
sudoedit /etc/network/interfaces
Uzun süre yükseltilmiş ayrıcalık kipinde çalışmanız gerekiyorsa ve her komut için sudo girmek uygun değilse, sudo aracılığıyla komut yorumlayıcısının bir örneğini çalıştırabilirsiniz:
sudo bash
ve içinde çalışmaya devam edin - tüm ekipler yükseltilmiş haklarla başlatılacaktır. Tamamlandığında, exit komutu ile yorumlayıcıdan çıkın.