Linux Sudo Komutu ve Sudoers Dosyası Nasıl Kullanılır?
Linux sudo komutu kök olmayan kullanıcıların normalde süper kullanıcı izinleri gerektiren komutları çalıştırmasına izin verir. Sudoers dosyası ise sistemin sudo komutunu nasıl işleyeceğini gösterir. Bu makalede size sudo komutunun temellerini ve sudoers dosyasının nasıl düzenlendiğini göstereceğiz.
Linux Sudo Komutu – Kavram
Sudo’nun nasıl çalıştığını görmek için önce SSH üzerinden VPS‘inize erişin. Eğer bununla sorun yaşıyorsanız PuTTY rehberimize göz atabilirsiniz.
Varsayılan olarak kök kullanıcının sudo ekini kullanmasına gerek yoktur. Onlar zaten gerekli izinlere sahiptir. Ancak eğer kök olmayan bir kullanıcı başka bir kulalnıcı ekelemek isterse useradd komutuna sudo ekini eklemeleri gerekir:
sudo useradd gokhan
Eğer kullanıcı sudo ekini kullanmazsa Permission denied (İzin verilmedi) sonucunu alacaktır.
Sudoers Dosyası
Sudo komutu /etc/ dizinindeki sudoers dosyası üzerinden yapılandırılır.
Sudo komutu ile normal kullanıcılara yönetici seviyesinde izinler verirsiniz. Normalde Ubuntu’yu yüklerken yarattığınız ilk kullanıcının sudo izni bulunmaktadır. Bir VPS ortamında ise bu varsayılan kök kullanıcıdır. Diğer kullanıcıların da sudo komutunu çalıştırması için ayar yapabilirsiniz. Bu sudoers dosyasını düzenleyerek yapılabilir.
Önemli: Dikkatli olun! Sudoers dosyasını hatalı veya kötü sözdizimiyle editlemek bütün kullanıcı kilitleyebilir.
Sudoers Dosyası Sözdizimi
Dosyası tercih ettiğiniz metin editörüyle açabilirsiniz. Biz ise vi kullanacağız:
vi /etc/sudoers
Bizim VPS’imizdeki dosya ise böyle gözükmekte:
Hadi buradaki formatların ve kuralların bazılarını inceleyelim:
- # ile başlayan bütün satırlar yorumlardır
- root ALL=(ALL:ALL) ALL – bu satır kök kullanıcının sınırsız izne sahip olduğu ve sistemdeki bütün komutları çalıştırabileceği anlamına gelir
- %admin ALL=(ALL) ALL – % işareti bir grubu belirler. Yönetici grubundaki herkes kök kullanıcı ile aynı izne sahiptir
- %sudo ALL=(ALL:ALL) ALL – sudo grubundaki bütün kullanıcıların bütün komutları çalıştırma izni vardır
Bir başka önemli satır olan #includedir /etc/sudoers.d sudoers.d dosyasına ayarlar ekleyebiliyor ve buradan bağlayabiliyor olduğumuz anlamına gelir.
Sudoers Dosyasını Düzenlemek
/etc/sudoers dosyasını düzenlemek için aşağıdaki komutu kullanın:
sudo visudo -f /etc/sudoers
Sudoers dosyasını düzenlemek için visudo kullanmanız tavsiye edilir. Visudo sudoers dosyasının aynı anda sadece bir kullanıcı tarafından düzenlendiğinden emin olur ve gerekli sözdizimi kontrollerini yapar.
Hangi kullanıcıların sudo grubunda olduğunu görmek için bir grep komutu kullanabiliriz:
grep ‘sudo’ /etc/group
Bu, kullanıcıların listesini verecektir.
Örneğin, sudo grubuna hasan adında bir kullanıcı eklemek için komut satırında adduser komutunu kullanabilirsiniz:
adduser bill sudo
Eğer grupta kimin olup olmadıdığını görmek için grep komutunu kullanırsanız hasan adlı kullanıcı adını göreceksiniz.
Eğer herhangi birine kök izinlerini vermek isterseniz tek yapmanız gereken onları sudo’ya eklemektir.
Sudo’dan bir kullanıcı silmek içinse:
deluser hasan sudo
Deluser komutu hasan’ı sudo grubundan silecektir.
Artık hasan kullanıcısı sudo izni gerektiren eylemleri gerçekleştiremeyecektir.
Belirli İzinler Vermek İçin Sudoers Dosyasını Kullanma
Peki ya hasan adlı kullanıcının sudo izniyle sadece ağ komutları gibi belirli komutları çalıştırabilmesini isterseniz ne yapacaksınız?
Bunu yapmak oldukça kolay. /etc/sudoers.d/ dizininde networking adında bir dosya oluşturun.
Bu dosyayı oluşturmak için aşağıdaki komutu çalıştırın:
sudo visudo -f /etc/sudoers.d/networking
Dosyaya aşağıdaki metni ekleyin:
Cmnd_Alias CAPTURE = /usr/sbin/tcdump Cmnd_Alias SERVERS = /usr/sbin apache2ctl, /usr/bin/htpasswd Cmnd_Alias NETALL = CAPTURE, SERVERS %netadmin ALL=NETALL
Yukarıdaki dosyada yaptığımız şey bir netadmin grubu oluşturmaktı. Netadmin grubundaki kullanıcılar NETALL içinde belirtilen bütün komutları çalıştırabilir. NETALL ise CAPTURE ve SERVERS adları altındaki bütün komutları içerir. tcpdump komutu ise CAPTURE adı altındadır. Örneğin: /usr/sbin/tcpdump
Sırada ise hasan adlı kullanıcı netadmin grubuna eklemek var:
sudo adduser hasan netadmin
Artık hasan adlı kullanıcı tcpdump komutu ile birlikte ağ ile alakalı bütün komutları çalıştırabilecektir.
Sonuç
Eğer birden çok kullanıcı ile çalışıyorsanız linux sudo komutu nasıl çalışır ve sudoers dosyası nasıl düzenlenir bilmek çok önemlidir. Bu makalede sistem izinlerinin kontrolünü elinize alabilmeniz için gereken bütün temelleri öğrendiniz! Yorumlarınızı ve düşüncelerinizi aşağıdaki yorumlar kısmında bizimle paylaşmayı unutmayın!