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:

Linux sudo komutu: linux sudoers dosyasının bir örneği

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!

Author
Yazar

Gökhan O.

Gökhan Hostinger’da YouTube Takım Lideri olarak çalışmakta. WordPress hakkındaki tecrübe ve bilgisini bu blogda paylaşıyor. Hostinger’ın adını YouTube içeriği üzerinden duyurmayı kendine görev edinmiştir. Hobileri arasında oyun oynamak ve futbol maçları izlemek vardır.