Linux Sudo Komutu ve Sudoers Dosyası Kullanımı
Bu yazımızda size Linux Sudo Komutu ve Sudoers Dosyası Kullanımı konusundan bahsedeceğiz.
Linux sudo komutu root olmayan kullanıcılar için süper kullanıcı izinleri gerektiren komutları çalıştırmasına izin vermektedir. Sudoers dosyası, sistemin sudo komutunu nasıl işlenmesi gerektiğini gösterir.
Normal kullanıcıların işletim sistemlerinde bazı zamanlar yönetici yetkisi gerektiren işlemler yapmaları gerekir. Sudo normal kullanıcıların sistemde yönetici yetkisi gerektiren işlemleri yapabilmesi için kullanılan bir programdır.
Kullanıcılar için ayrı bir yönetici hesabı açılmadan ve root parolasına ihtiyaç duyulmadan işlemler yapılmaktadır. Kullanıcı yapacağı işlemler için kendi adını kullanacağından dolayı yaptığı işlemler sınırlandırılabilir. Aslında en güvenilir olan yöntem sudo listesine eklenen kullanıcılara yalnızca yapacakları işlemler için yetki vermektir.
Linux Sudo Komutu – Kavram
Sudo’nun nasıl çalıştığını görmeniz için ilk önce SSH üzerinden sunucunuza erişmeniz gerekmektedir.
Varsayılan olarak kök kullanıcının sudo ekini kullanması gerekmiyor. Bunun nedeni gerekli izinlere sahip olmalarıdır. Kök olmayan bir kullanıcı farklı bir kullanıcı ekleyecekse eğer useradd komutunun yanına sudo ekini eklemesi gerekmektedir. Aşağıda belirttiğimiz şekilde yapabilirsiniz.
sudo useradd kullanıcıadi
Kullanıcı eğer sudo ekini kullanmazsa Permission denied (İzin verilmedi) mesajı ile karşılaşacaktır.
Sudoers Dosyası
Sudo komutu /etc/ dizininde yer alan sudoers dosyası üzerinden yapılmaktadır.
Sudo komutu sayesinde normal kullanıcılar için yönetici seviyesinde izinler verilmektedir. Normalde Ubuntu’yu yüklerken oluşturduğunuz ilk kullanıcının sudo izni bulunur. Bir sunucu ortamında ise varsayılan kök kullanıcı olmaktadır. Diğer kullanıcıların da sudo komutunu çalıştırması için ayarlar yapması mümkün olur. Bu işlem sudoers dosyasının düzenlenmesi ile yapılabilir.
DİKKAT! Sudoers dosyasını hatalı ya da kötü sözdizimi ile editlemek tüm kullanıcıların kilitlenmesine neden olabilir.
Sudoers Dosyası Sözdizimi
Sudoers dosyasını tercih ettiğiniz metin editörü ile açmanız mümkündür. Biz vi’ yi tercih ettik:
vi /etc/sudoers
Bizim sunucumuzdaki dosya bu şekilde görünmektedir:
Yukarıda bulunan formatlar ve kuralların birkaçını inceleyelim:
- # ile başlayan tüm satırlar yorumlardır.
- root ALL=(ALL:ALL) ALL – bu ise satır kök kullanıcının sınırsız izni olduğunu ve sistemde bulunan tüm komutları çalıştırabileceğini söyler.
- %admin ALL=(ALL) ALL – % işareti bir grubun belirlenmesini sağlar. Yönetici grubunda bulunan herkes kök kullanıcı ile aynı izinlere sahiptir
- %sudo ALL=(ALL:ALL) ALL – sudo grubunda bulunan tüm kullanıcıların bütün komutları çalıştırma izninin olduğunu söyler.
Sudoers Dosyasını Düzenlemek
/etc/sudoers dosyasını düzenleme işlemi için aşağıda belirttiğimiz komutu kullanmalısınız.
sudo visudo -f /etc/sudoers
Sudoers dosyasını düzenlemek için visudo kullanmanızı öneririz. Visudo sudoers dosyası yalnızca bir kullanıcı tarafından düzenlendiğinden emin olarak gerekli sözdizimi kontrollerini yerine getirir.
Sudo grubunda hangi kullanıcıların yer aldığını görmek için bir grep komutu kullanmalısınız.
grep ‘sudo’ /etc/group
Bu komut size kullanıcıların listesini gösterecektir.
Örnek verecek olursak eğer sudo grubuna ali adında bir kullanıcının eklenmesi için komut satırında adduser komutunu kullanmalısınız.
adduser bill sudo
Grupta kimin olup olmadığını görmek için eğer grep komutunu kullanırsanız ali adında kullanıcı adını görürsünüz.
Herhangi bir kullanıcıya kök izinlerini vermek isterseniz eğer yapmanız gereken tek şey onları sudo’ya eklemek olacaktır.
Sudo’dan bir kullanıcı silmek için aşağıda belirttiğimiz komutu kullanmalısınız.
deluser ali sudo
Deluser komutu ali kullanıcısını sudo grubundan silecektir.
Artık ali kullanıcısı sudo izni gerektiren işlemleri yapamayacaktır.
Belirli İzinler Vermek İçin Sudoers Dosyasının Kullanımı
Ali adlı kullanıcının sudo izniyle yalnızca ağ komutları gibi belirli komutlarda ki işlemleri yapmasını isterseniz yazımızı okumaya devam ediniz.
Bu işlemi yapmak oldukça basittir. /etc/sudoers.d/ dizininde networking adı ile bir dosya oluşturun.
Bu dosyanın oluşturulması için aşağıda belirttiğimiz komutu çalıştırmalısınız.
sudo visudo -f /etc/sudoers.d/networking
Dosyaya aşağıda yer alan metni eklemelisiniz.
Cmnd_Alias CAPTURE = /usr/sbin/tcdump Cmnd_Alias SERVERS = /usr/sbin apache2ctl, /usr/bin/htpasswd Cmnd_Alias NETALL = CAPTURE, SERVERS %netadmin ALL=NETALL
Yukarıda belirttiğimiz dosyada yaptığımız işlem bir netadmin grubu kurmaktı. Netadmin grubunda bulunan kullanıcılar NETALL içinde yer alan tüm komutları çalıştırma yetkisine sahiptir. NETALL ise CAPTURE ve SERVERS adları altında bulunan tüm komutları içerir. tcpdump komutu, CAPTURE adı altında yer alır. Örnek verecek olursak eğer /usr/sbin/tcpdump şeklinde olacaktır.
Şimdi ali adlı kullanıcı netadmin grubuna ekleyeceğiz.
sudo adduser ali netadmin
Ali adlı kullanıcı bundan sonra tcpdump komutu ile birlikte ağ ile alakalı tüm komutları çalıştıracaktır.
Sonuç
Birden fazla kullanıcı ile çalışıyorsanız eğer linux sudo komutunun nasıl çalıştığını ve sudoers dosyasının nasıl düzenlendiğini bilmeniz çok önemlidir.
Linux Sudo Komutu ve Sudoers Dosyası Kullanımı başlıklı yazımız ile ilgili aklınıza takılan sorularınızın yanıtını alabilmeniz için veya öneride bulunabilmeniz için aşağıda yer alan yorumlar kısmını kullanarak bizimle iletişime geçebilirsiniz.
Dilerseniz daha önce bloğumuzda paylaştığımız Linux SSH Port Değiştirme başlıklı yazımızı da okuyabilirsiniz.