Post

Linux "Sudo" Yetkilendirmesi ve Sudoers Hakkında

Linux "Sudo" Yetkilendirmesi ve Sudoers Hakkında

"su" ve "sudo" komutları, kullanıcı kimliklerini geçici olarak değiştirerek süper kullanıcı yetkilerini kullanmayı sağlar. "su" komutu doğrudan başka bir kullanıcının kimliğine geçişi sağlarken, "sudo" komutu kullanıcıya yetkilendirilmiş komutları süper kullanıcı yetkileriyle çalıştırma yetkisi verir. Bu şekilde, kullanıcılar güvenli ve kontrollü bir şekilde süper kullanıcı ayrıcalıklarını kullanabilir.

"su" (switch user) komutu:

Bu komut "su" ifadesi, "su faruk" komutu ile "faruk" kullanıcısının oturumunu açmayı ifade eder. "su" komutu, "switch user"ın kısaltmasıdır ve bir kullanıcının mevcut oturumunu başka bir kullanıcıya değiştirmek için kullanılır. Eğer "su faruk" komutunu çalıştırırsanız, sistem sizden "faruk" kullanıcısının parolasını girmenizi isteyecektir. Eğer girdiğiniz parola doğruysa, mevcut oturumunuz "faruk" kullanıcısı olarak değişir ve "faruk" kullanıcısının hesabına erişim sağlarsınız. Bu şekilde, "faruk" kullanıcısının sahip olduğu dosyalara ve kaynaklara erişebilir ve onun yetkilendirilmiş işlemlerini gerçekleştirebilirsiniz.

"sudo" (superuser do) komutu:

Bu komut, belirli bir kullanıcının belirli bir süre komutları süper kullanıcı yetkileriyle çalıştırmasına izin verir. Bir kullanıcı "sudo" komutunu kullanarak belirli bir komutu süper kullanıcı yetkileriyle çalıştırabilir, ancak bu komutu çalıştırmak için kullanıcının kendi parolasını girmesi gereklidir (süper kullanıcı parolasını değil). Sudo, genellikle sistem yöneticilerine, belirli komutları süper kullanıcı yetkileriyle güvenli bir şekilde çalıştırma esnekliği sağlar. sudo komutunun varsayılan yapılandırmasında, genellikle "timestamp_timeout" parametresi 5 - 15 dakika olarak ayarlanmıştır. Bu, kullanıcının sudo komutunu çalıştırdıktan itibaren 15 dakika boyunca tekrar şifre girmesi gerekmeyeceği anlamına gelir.

Eğer sistemde root kullanıcısına erişiminiz varsa, genellikle "su" komutunu kullanarak doğrudan root kullanıcısının oturumunu açabilirsiniz. Örneğin, "su" komutunu kullanarak "su root" veya "su -" komutunu çalıştırabilir ve root kullanıcısının parolasını girebilirsiniz. Bu şekilde, root kullanıcısı olarak doğrudan oturum açabilir ve root yetkileriyle çalışabilirsiniz.

Özetle, "su" komutu bir kullanıcının oturumunu başka bir kullanıcıya değiştirirken, "sudo" komutu belirli bir komutu süper kullanıcı yetkileriyle çalıştırmak için kullanılır. "su" komutu kullanıcı oturumunu tamamen değiştirirken, "sudo" komutu sadece belirli bir komutu süper kullanıcı yetkileriyle çalıştırırken geçici olarak yetki verir.

***Eğer zaten root kullanıcısıysanız, "sudo root" komutunu kullanmanıza gerek yoktur. Root kullanıcısı olarak oturum açtığınızda, root yetkileriyle komutları doğrudan çalıştırabilirsiniz.

"visudo" komutu ve Sudoers dosyası:

"visudo" sudo yetkilendirmesi için kullanılan sudoers dosyasını düzenlemek için kullanılan bir komuttur. "sudoers" dosyası ise sudo programının davranışını ve kullanıcılara verilen yetkileri kontrol etmek için kullanılır.

sudoers dosyası, sistem yöneticileri tarafından düzenlenen bir metin dosyasıdır. Bu dosyada, belirli kullanıcılar veya kullanıcı grupları için sudo ile çalıştırılabilecek komutlar ve işlemler belirtilir. Ayrıca, hangi kullanıcıların belirli komutları veya komut gruplarını süper kullanıcı yetkileriyle çalıştırabileceği, şifre gerekliliği gibi özel yetkilendirme kuralları da belirtilebilir.

"visudo komutu, sudoers dosyasını düzenlerken hataları önlemek ve dosyanın tutarlı bir şekilde işlenmesini sağlamak için kullanılır" visudo, sudoers dosyasını düzenlemek için özel bir düzenleyici kullanır. Bu, hatalı bir düzenleme yapmanın veya dosyayı bozma riskini en aza indirir.

sudoers dosyası ve visudo komutu, güvenlik politikalarını uygulamak, ayrıcalıklı işlemleri yönetmek ve kullanıcıların süper kullanıcı yetkilerine erişimini kontrol etmek için önemli araçlardır. Sudoers dosyasının düzenlenmesi dikkatle yapılmalı ve gereksiz veya yanlış yetkilendirmelerden kaçınılmalıdır, çünkü yanlış yapılandırılmış bir sudoers dosyası, sistem güvenliğini tehlikeye atabilir.

Sudoers dosyasının "visudo" komutuyla düzenlenmesi

*****Not: Sudoers dosyasını düzenlerken dikkatli olun. Hatalı bir yapılandırma, sisteminizin düzgün çalışmasını engelleyebilir.

*****Visudo, sudoers dosyasında yapılan değişiklikleri doğrulamak için bir kontrol yapar. Eğer yapılandırmada hatalı bir satır varsa, kullanıcıya bir uyarı mesajı gösterir ve düzeltmeler yapmadan dosyayı kaydetmesine izin vermez. Bu, hatalı yapılandırmaların sistemdeki sudo erişimini engellemesini veya bozmasını önler.

#Sudoers dosyasını "visudo" komutuyla açmak için.
sudo visudo

#Sudoers dosyasının doğruluğunu hata veya tutarsızlıkları kontrol etmek için:
sudo visudo -c

Sudoers dosyası, özel bir düzenleyici (genellikle vi veya nano) ile açılacaktır. Sudoers dosyasını düzenlemek için aşağıdaki örnek satırları ekleyin. bu satırlar dosyanın yapısı, kullanıcı tanımlamaları ve yetkilendirmeleri içerir.

#sudoers dosyası icerigi
#-----------------------

#Her zaman süper kullanıcı yetkilerine sahip olmak için:
root ALL=(ALL:ALL) ALL
faruk ALL=(ALL:ALL) ALL

#Kullanıcının parola sorulmadan süper user komutlarını yürütmesine izin ver: touch /etc/sudoers.d/sudoer_faruk
faruk ALL=(ALL) NOPASSWD: ALL

#faruk, belirli bir komutu süper kullanıcı yetkileriyle çalıştırabilir.
faruk ALL=(ALL) /usr/bin/ifconfig

#faruk, kullanıcısına "/bin/ls" komutunu süper kullanıcı yetkileriyle çalıştırma izni vermek.
faruk ALL=(ALL) /bin/ls

#burak, belirli bir komutu ve parametreleriyle şifre istemeden süper kullanıcı yetkileriyle çalıştırabilir.
burak ALL=(ALL) NOPASSWD: /usr/bin/komut2 parametre1, /usr/bin/komut2 parametre2

#Burada "burak" kullanıcısına "/usr/sbin/service apache2 restart" komutunu süper kullanıcı yetkileriyle yalnızca "root" kullanıcı kimliğiyle çalıştırma izni veriliyor.
burak ALL=(root) /usr/sbin/service apache2 restart

#murat, belirli bir komutu belirli bir kullanıcı kimliğiyle süper kullanıcı yetkileriyle çalıştırabilir.
murat ALL=(user1) /usr/bin/whoami

#Bu örnekte, "murat" kullanıcısına "/usr/bin/apt-get update" komutunu süper kullanıcı yetkileriyle şifre gerektirmeden çalıştırma izni veriliyor.
murat ALL=(ALL) NOPASSWD: /usr/bin/apt-get update

Ayrıca birden fazla kullanıcıya aynı yetkileri vermeniz gerekirse; grup bazında yetkilendirme yapmanız daha kolay olacaktır.

Sudoers dosyasında grup bazlı yetkilendirme yapmak için aşağıdaki adımları izleyebilirsiniz:

#Öncelikle, grupları ve kullanıcıları oluşturun veya varolanları gruplara ekleyin. Örneğin, "adminler" adında bir grup oluşturalım ve Faruk, Burak ve Murat kullanıcılarını bu gruba ekleyelim:

sudo groupadd adminler
sudo usermod -aG adminler faruk
sudo usermod -aG adminler burak
sudo usermod -aG adminler murat

***Bu adımlarla "adminler" adında bir grup oluşturulacak ve Faruk, Burak ve Murat kullanıcıları bu gruba eklenecektir.

#Sudoers dosyasını "visudo" komutuyla düzenleyin:
sudo visudo

#Sudoers dosyasında grup bazlı yetkilendirme ekleyin. Örneğin, "adminler" grubundaki tüm kullanıcılara aynı yetkileri tanımlamak için aşağıdaki satırı ekleyin:
%adminler ALL=(ALL) /usr/bin/reboot

***Bu örnekte, "%adminler" ifadesi adminler grubunu temsil eder ve tüm grubun "/usr/bin/reboot" komutunu süper kullanıcı yetkileriyle çalıştırma izni verilir. Düzenlemeleri tamamladıktan sonra, dosyayı kaydedin ve düzenleyiciyi kapatın.

***sudoers dosyasında "%" karakteri, bir grubu temsil etmek için kullanılan bir özel karakterdir.

Artık "adminler" grubuna üye olan Faruk, Burak ve Murat kullanıcıları, "/usr/bin/reboot" komutunu süper kullanıcı yetkileriyle çalıştırabilecek ve sunucuyu reboot etme hakkı kazanacaklardır.

Peki "sudoers" dosyasında grup bazlı yetkilendirme kullanarak bazı komutları engellemeniz gerekirse;

#Bu örnekte, "/usr/sbin/userdel" ve "/bin/rm" komutları engellenmektedir. Yani, "silmeyi_engelle" grubuna üye olan kullanıcılar bu komutları "sudo" yetkileriyle çalıştıramazlar ve silme işlemi yapamazlar.

%silmeyi_engelle ALL=(ALL) !/usr/sbin/userdel
%silmeyi_engelle ALL=(ALL) !/bin/rm

#Bu örnek, ""blokla" grubunun ağ hizmetlerini durdurma veya başlatma komutlarını engellemektedir. "/etc/init.d/networking start & stop" önünde "!" sembolünü kullanarak, bu komutun açıkça yürütülmesinin reddedildiğini belirtiyorsunuz.

%blokla ALL=(ALL) !/etc/init.d/networking stop
%blokla ALL=(ALL) !/etc/init.d/networking start

#sudoers dosyasını düzenlerken aşağıdaki kurallara dikkat etmelisiniz:

  • Her satır, bir kullanıcı veya kullanıcı grubunun yetkilendirmesini belirtir.
  • Kullanıcı adı veya grup adı, yetkilendirmenin başında belirtilir.
  • Yetkilendirmenin ardından, hangi komutları veya komut parametrelerini çalıştırabileceği belirtilir.
  • Yetkilendirme için çeşitli seçenekler kullanılabilir, örneğin NOPASSWD seçeneği parola gerektirmeden yetkilendirme yapılmasını sağlar.
  • PASSWD seçeneği ise tam tersi olarak parola istenmesini sağlar.
  1. Düzenlemeleri tamamladıktan sonra, dosyayı kaydedin ve düzenleyiciyi kapatın. "visudo" komutu, dosyanın geçerliliğini kontrol edecek ve hataları tespit edecektir. Hata olması durumunda, düzeltilmesi gereken satırları gösterecektir.
  2. "visudo" komutunun tamamlanmasının ardından, sudoers dosyası güncellenmiş olacaktır. Artık düzenlediğiniz yetkilendirmeleri kullanabilirsiniz.

Yukarıdaki adımları izleyerek sudoers dosyası sayesinde yetkileri düzenleyebilirsiniz. Sudoers dosyasının yapısı ve sözdizimi oldukça hassas olduğundan, dosyayı dikkatli bir şekilde düzenlemek ve hatalardan kaçınmak önemlidir.

Saygılarımla.

This post is licensed under CC BY 4.0 by the author.