8 Eylül 2015 Salı

sudo komutu

Giriş
sudo ile ilgili notlarım aşağıda.

sudo verilen komutu root olarak çalıştırır
Örneğin
sudo cp /etc/foo.txt ~/foo.txt
komutu çalıştırılınca yeni oluşturulan foo.txt dosyasının sahibi root olur.

sudo sadece kendisinden sonra gelen komutu çalıştırır
Şöyle bir şey yazarsak
sudo some-command && some-other-command
Sadece ilk komut root olarak çalışır. && işaretinden sonra gelen komut normal kullanıcı olarak çalışır.

-i seçeneği
interaktif bir kabuk açmamız sağlar. Kabuğun promt'u # olaral değişir.

-u seçeneği
-u seçeneği başka bir kullanıcı olarak çalıştırma imkanı tanır. Örnekte whoami başka bir kullanıcı olarak çalıştırılınca sonucun farklı olduğu görülebilir.
$ whoami
admin
$ sudo -S -u otheruser whoami
otheruser
sudo komutu root şifresini bilmeyi gerektirmez
sudo komutu kullanıcının kendi şifresini girmesini bekler. Böylece kullanıcıyı doğrular. Tabiki kullanıcının sudo grubuna dahil olması gerekir. Hangi gruba dahil olduğumuz görmek için groups komutu çalıştırılabililir.
> groups
> adm cdrom sudo dip plugdev lpadmin sambashare

sudoers dosyası
/etc/sudoers dosyası şuna benzer. visudo komutu ile /etc/sudoers dosyası düzenlenebilir.

Satır Formatı
Dosya içindeki kullanıcı ve grup satırları şuna benzer ve 4 alandan oluşur.
superadm  ALL=(ALL)   ALL
1 alan : Kullanıcı adı veya grup adını belirtir. Grup adları % işareti ile başlar.
2 alan : sudo'nun yetkili olduğu makine isimlerini belirtir. Genellikle ALL ile localhost kastedilir.
3 alan (...) şeklinde yazılır. İlk alanda belirtilen grubun -u seçeneği ile hangi grubu taklit edebileceğini belirtir. ALL ile sınırlama konulmaz. Eğer boş bırakılırsa root olabileceği belirtilir.
4 alan : sudo olarak çalıştırılabilecek komutlar listelenir. ALL ise tüm komutlar için sudo yapılabilir.

kullanıcı ve gruplar
Ubuntu kurulumunda sudo ve admin grupları ve root kullanıcısı kendiliğinden her türlü yetkiye sahip olarak geliyor.  Hiç dokunulmamış bir sudoers dosyası şuna benzer.
# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
kullanıcıyı sudo grubuna eklemek
Yeni bir kullanıcı sudo yapabilsin istiyorsak onu sudo grubuna şöyle ekleriz.
sudo adduser bob sudo
şifre
sudo şifre sormasın istersek son satırı şöyle yaparız.
%sudo   ALL=(ALL:ALL) NOPASSWD: ALL
sudo komutu için path
sudo komutu sistem path'ine bakmaz. $PATH değişkenini düzenlesek bile yeni dizini görmez. sudoers dosyasındaki şu satırı düzenlemek gerekir.
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$
grup ve komut kısıtı eklemek
Bir kişiye belli bir komutu root olarak çalıştırma hakkı vermek için şöyle yaparız
bob ALL=(root) NOPASSWD: /path/to/command/you/trust
Eğer bir kişiye specialuser grubuna ait olarak belli bir komutu çalıştırma hakkı vermek için şöyle yaparız
bob ALL=(specialuser) NOPASSWD: /path/to/command/you/trust
Sadece belli dosya kısıtı ekleme
Eğer bir gruba veya kullanıcıya belli komutlar için hak tanımak istersek şöyle yaparız.
username   ALL = (named) /usr/sbin/named
Kullanıcı komutu şöyle çalıştırır
sudo -u named /usr/sbin/named
Örnekte sudoedit komutunu sadece belli dosyalar üzerinde çalıştırma yetkisi veriliyor.
user ALL=(ALL) sudoedit /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf
timestamp
sudo şifresinin belli bir süre hatırlanmasını istiyorsak bu alanı kullanırız.
Defaults        timestamp_timeout=300









Hiç yorum yok:

Yorum Gönder