Linux'ta sudo Erişimi Nasıl Kontrol Edilir
Yayınlanan: 2022-01-29 sudo
komutu, Linux'ta komutları başka biriymişsiniz gibi çalıştırmanıza izin verir, örneğin root
. sudo
ayrıca, root's
özelliklerine kimlerin erişebileceğini ayrıntı düzeyiyle kontrol etmenize olanak tanır. Kullanıcılara tam erişim verin veya küçük bir komut alt kümesini kullanmalarına izin verin. Size nasıl olduğunu gösteriyoruz.
sudo ve Kök İzinleri
Hepimiz (aşırı basitleştirme) Linux'taki her şeyin bir dosya olduğunu duyduk. Gerçekte, işletim sistemindeki işlemlerden, dosyalardan, dizinlerden, yuvalardan ve borulardan neredeyse her şey bir dosya tanımlayıcı aracılığıyla çekirdekle konuşur. Yani her şey bir dosya olmasa da, çoğu işletim sistemi nesnesi sanki öyleymiş gibi işlenir. Mümkün olduğunda, Linux ve Unix benzeri işletim sistemlerinin tasarımı bu ilkeye bağlıdır.
“Her şey bir dosyadır” kavramı Linux'ta geniş kapsamlıdır. O zaman, Linux'ta dosya izinlerinin nasıl kullanıcı ayrıcalıklarının ve haklarının temel dayanaklarından biri haline geldiğini görmek kolay. Bir dosyanız veya dizininiz (özel bir dosya türü) varsa, düzenleme, yeniden adlandırma, taşıma ve silme dahil olmak üzere onunla istediğinizi yapabilirsiniz. Diğer kullanıcıların veya kullanıcı gruplarının dosyayı okuyabilmesi, değiştirebilmesi veya yürütebilmesi için dosyadaki izinleri de ayarlayabilirsiniz. Herkes bu izinlere tabidir.
Süper kullanıcı dışında root
olarak bilinen herkes. root
hesap, özel olarak ayrıcalıklı bir hesaptır. İşletim sistemindeki herhangi bir nesnenin izinlerine bağlı değildir. Kök kullanıcı, herhangi bir zamanda ve hemen hemen her şey için her şeyi yapabilir.
Tabii ki, root's
şifresine erişimi olan herkes aynısını yapabilir. Kötü niyetle veya yanlışlıkla hasara yol açabilirler. Aslında, root
kullanıcı da bir hata yaparak ortalığı kasıp kavurabilir. Hiç kimse yanılmaz değildir. Tehlikeli bir şey.
Bu nedenle, artık root
olarak oturum açmamak en iyi uygulama olarak kabul edilmektedir. Normal bir kullanıcı hesabıyla giriş yapın ve ihtiyaç duyduğunuz kısa süre boyunca ayrıcalıklarınızı yükseltmek için sudo
kullanın. Genellikle bu sadece tek bir komut vermek içindir.
İLGİLİ: Linux'ta "Her Şey Bir Dosyadır" Ne Demektir?
sudoers listesi
sudo
, bu makaleyi araştırmak için kullanılan Ubuntu 18.04.3, Manjaro 18.1.0 ve Fedora 31 bilgisayarlarında zaten yüklüydü. Bu bir sürpriz değil. sudo
, 1980'lerin başından beri var ve neredeyse tüm dağıtımlar için standart süper kullanıcı işlemi aracı haline geldi.
Modern bir dağıtım kurduğunuzda, kurulum sırasında oluşturduğunuz kullanıcı sudoers adlı bir kullanıcı listesine eklenir. Bunlar sudo
komutunu kullanabilen kullanıcılardır. Sudo yetkileriniz olduğundan, bunları sudo
kullanıcıları listesine başka kullanıcılar eklemek için kullanabilirsiniz.
Tabii ki, tam süper kullanıcı statüsünü istemeden veya yalnızca kısmi veya özel bir ihtiyacı olan herkese dağıtmak pervasızlıktır. Sudoers listesi, çeşitli kullanıcıların sudo
hangi komutlarla kullanmasına izin verildiğini belirtmenize olanak tanır. Bu şekilde, onlara krallığın anahtarlarını vermezsiniz, ancak yine de yapmaları gereken şeyi başarabilirler.
Bir Komutu Başka Bir Kullanıcı Olarak Çalıştırma
Başlangıçta, süper kullanıcı olarak bir şeyler yapabileceğiniz için "süper kullanıcı do" olarak adlandırıldı. Kapsamı şimdi genişletildi ve herhangi bir kullanıcıymış gibi bir komutu yürütmek için sudo
kullanabilirsiniz. Bu yeni işlevi yansıtacak şekilde yeniden adlandırıldı. Artık "yedek kullanıcı do" olarak adlandırılıyor.
sudo
başka bir kullanıcı olarak çalıştırmak için kullanmak için -u
(kullanıcı) seçeneğini kullanmamız gerekir. Burada mary
kullanıcısı olarak whoami komutunu çalıştıracağız. sudo
komutunu -u
seçeneği olmadan kullanırsanız, komutu root
olarak çalıştırırsınız.
Ve elbette, sudo
kullandığınız için şifreniz istenecektir.
sudo -u mary whoami
whoami
gelen yanıt, komutu çalıştıran kullanıcı hesabının mary
olduğunu söylüyor.
Parolalarını bilmeden başka bir kullanıcı olarak oturum açmak için sudo
komutunu kullanabilirsiniz. Kendi şifreniz istenecektir. -i
(login) seçeneğini kullanmamız gerekiyor.
sudo -i -u mary
pwd
ben kimim
ls -hl
çıkış
mary
olarak giriş yaptınız. mary kullanıcı hesabı için ".bashrc", ".bash_aliases" ve ".profile" dosyaları, aynen mary kullanıcı hesabının sahibi oturum açmış gibi işlenir.
- Komut istemi,
mary
kullanıcı hesabı için bir oturum olduğunu yansıtacak şekilde değişir. -
pwd
komutu, artıkmary's
ana dizininde olduğunuzu bildirir. -
whoami
bizemary
kullanıcı hesabını kullandığınızı söylüyor. - Dizindeki dosyalar
mary
kullanıcı hesabına aittir. -
exit
komutu sizi normal kullanıcı hesabı oturumunuza döndürür.
sudoers Dosyasını düzenleme
sudoers
sudo
düzenlemeniz gerekir. Bunu yalnızca visudo
komutunu kullanarak yapmanız hayati derecede önemlidir. visudo
komutu, birden fazla kişinin sudoers dosyasını aynı anda düzenlemeye çalışmasını engeller. Ayrıca, siz kaydederken dosya içeriği üzerinde sözdizimi denetimi ve ayrıştırma gerçekleştirir.
Düzenlemeleriniz testleri geçemezse, dosya körü körüne kaydedilmez. Seçenekler elde edersiniz. Değişiklikleri iptal edebilir ve iptal edebilir, geri dönüp değişiklikleri yeniden düzenleyebilir veya yanlış düzenlemeleri kaydedilmeye zorlayabilirsiniz. Son seçenek ciddi anlamda kötü bir fikir. Bunu yapmak için cazip olmayın. Kendinizi, herkesin yanlışlıkla sudo
kullanmasının kilitlendiği bir durumda bulabilirsiniz.
Düzenleme işlemini visudo
komutunu kullanarak başlatmanıza rağmen, visudo
bir düzenleyici değildir. Dosya düzenlemelerini gerçekleştirmek için mevcut editörlerinizden birini çağırır. Manjaro ve Ubuntu'da visudo
komutu, basit düzenleyici nano
başlattı. Fedora'da visudo
, daha yetenekli ancak daha az sezgisel olan vim
başlattı.
İLGİLİ: Vi veya Vim Düzenleyicisinden Nasıl Çıkılır
Fedora'da nano
kullanmayı tercih ederseniz, bunu kolayca yapabilirsiniz. İlk önce, nano
yükleyin:
sudo dnf nano'yu yükle
Ve sonra bu komutla visudo
çağrılması gerekiyordu:
sudo EDITOR=nano görsel
Bu, takma ad için iyi bir aday gibi görünüyor. nano
düzenleyici, içine yüklenen sudoers dosyasıyla açılır.
Sudo Grubuna Kullanıcı Ekleme
sudoers dosyasını açmak için visudo
kullanın. Seçtiğiniz düzenleyiciyi belirtmek için bu komutu veya yukarıda açıklanan komutu kullanın:
sudo görsel
%sudo
girişinin tanımını görene kadar sudoers dosyasında ilerleyin.
Yüzde işareti, bunun bir kullanıcı tanımı değil, bir grup tanımı olduğunu gösterir. Bazı dağıtımlarda, %sudo
satırının başında bir karma #
bulunur. Bu, satırı bir yorum yapar. Bu durumda, hash'i kaldırın ve dosyayı kaydedin.
%sudo
satırı şu şekilde bozulur:
- %sudo : Grubun adı.
- ALL= : Bu kural, bu ağdaki tüm ana bilgisayarlar için geçerlidir.
- (ALL:ALL) : Bu grubun üyeleri, tüm kullanıcılar ve tüm gruplar olarak komut çalıştırabilir.
- All : Bu grubun üyeleri tüm komutları çalıştırabilir.
Bunu biraz yeniden ifade etmek gerekirse, bu grubun üyeleri, herhangi bir kullanıcı veya herhangi bir grup olarak, bu bilgisayarda veya bu ağdaki başka herhangi bir ana bilgisayarda herhangi bir komutu çalıştırabilir. Bu nedenle, birine kök ayrıcalıkları ve sudo
kullanma yeteneği vermenin basit bir yolu, onları sudo
grubuna eklemektir.
Sırasıyla tom
ve mary
kullanıcı hesaplarına sahip iki kullanıcımız var, Tom ve Mary. usermod
komutuyla tom
kullanıcı hesabını sudo
grubuna ekleyeceğiz. -G
(gruplar) seçeneği, tom
hesabını ekleyeceğimiz grubu belirtir. -a
(ekle) seçeneği, bu grubu, tom
kullanıcı hesabının zaten içinde bulunduğu gruplar listesine ekler . Bu seçenek olmadan, kullanıcı hesabı tom
yeni gruba yerleştirilir, ancak diğer gruplardan kaldırılır.
sudo usermod -a -G sudo tom
Mary'nin hangi gruplarda olduğunu kontrol edelim:
gruplar
mary
kullanıcı hesabı sadece mary
grubundadır.
Tom'la kontrol edelim:
gruplar
tom
kullanıcı hesabı ve dolayısıyla Tom, tom
ve sudo
gruplarındadır.
Mary'nin sudo
ayrıcalıkları gerektiren bir şey yapmasını sağlamaya çalışalım.
sudo daha az /etc/shadow
Mary, kısıtlanmış “/etc/shadow” dosyasının içine bakamaz. sudo
izinsiz kullanmaya çalıştığı için hafif bir uyarı alıyor. Tom'un nasıl davrandığına bakalım:
sudo daha az /etc/shadow
Tom parolasını girer girmez /etc/shadow dosyası gösterilir.
Sadece onu sudo
grubuna ekleyerek, sudo
kullanabilenlerin elit saflarına yükseldi. Tamamen sınırsız.
Kullanıcılara Kısıtlı Sudo Hakları Verme
Tom'a tam sudo
hakları verildi. root
veya sudo
grubundaki herhangi birinin yapabileceği her şeyi yapabilir. Bu ona, teslim etmekten mutluluk duyacağından daha fazla güç verebilir. Bazen bir kullanıcının root
ayrıcalıkları gerektiren bir işlevi gerçekleştirmesi gerekli olabilir, ancak tam sudo
erişimine sahip olmaları için haklı bir durum yoktur. Bunları sudoers dosyasına ekleyerek ve kullanabilecekleri komutları listeleyerek bu dengeye ulaşabilirsiniz.
Harry, kullanıcı hesabının sahibi harry
ile tanışalım. sudo
sudo
yok.
gruplar
Harry'nin yazılım yükleyebilmesi yararlıdır, ancak onun tam sudo
haklarına sahip olmasını istemiyoruz. Tamam sorun değil. hadi visudo
ateşleyelim:
sudo görsel
Grup tanımlarını geçene kadar dosyada aşağı kaydırın. Harry için bir satır ekleyeceğiz. Bu bir grup tanımı değil, bir kullanıcı tanımı olduğundan, satıra bir yüzde işaretiyle başlamamıza gerek yoktur.
Harry kullanıcı hesabı girişi:
harry ALL=/usr/bin/apt-get
"Harry" ve "ALL=" arasında bir sekme olduğunu unutmayın.
Bu, kullanıcı hesabı harry
bu ağa bağlı tüm ana bilgisayarlarda listelenen komutları kullanabileceğini okur. Listelenen bir komut var, "/usr/bin/apt-get." Harry'ye birden fazla komutu virgülle ayırarak komut listesine ekleyerek erişim izni verebiliriz.
Satırı sudoers dosyasına ekleyin ve dosyayı kaydedin. Satırın sözdizimsel olarak doğru olduğunu iki kez kontrol etmek istiyorsanız, -c
(yalnızca kontrol) seçeneğini kullanarak visudo
dosyayı taramasını ve sözdizimini bizim için kontrol etmesini isteyebiliriz:
sudo görsel -c
Kontroller yapılır ve visudo
her şeyin yolunda olduğunu bildirir. Harry artık yazılımı yüklemek için apt-get
kullanabilmeli, ancak sudo
gerektiren başka bir komutu kullanmaya çalışırsa reddedilmelidir.
sudo apt-get kurulum parmağı
Harry'ye uygun sudo
hakları verilmiştir ve o, yazılımı yükleyebilir.
Harry, sudo
gerektiren farklı bir komut kullanmaya çalışırsa ne olur?
sudo şimdi kapatma
Harry'nin komutu çalıştırması engellenir. Ona başarılı bir şekilde özel, kısıtlı erişim sağladık. Belirtilen komutu kullanabilir ve başka bir şey kullanamaz.
sudoers Kullanıcı Takma Adlarını Kullanma
Mary'ye aynı ayrıcalıkları vermek istiyorsak, sudoers dosyasına mary
kullanıcı hesabı için Harry'de yaptığımız gibi bir satır ekleyebiliriz. Aynı şeyi elde etmenin daha düzgün bir yolu da User_Alias
kullanmaktır.
sudoers dosyasında bir User_Alias
, kullanıcı hesabı adlarının bir listesini içerir. User_Alias
adı, tüm bu kullanıcı hesaplarını temsil edecek bir tanımda kullanılabilir. Bu kullanıcı hesaplarının ayrıcalıklarını değiştirmek isterseniz, düzenlemek için yalnızca bir satırınız vardır.
Bir User_Alias
oluşturalım ve onu sudoers dosyamızda kullanalım.
sudo görsel
User_Alias belirtim satırına gelene kadar dosyada aşağı kaydırın.
User_Alias
yazarak ekleyin:
User_Alias INSTALLERS = harry, mary
Her öğe bir sekmeyle değil, bir boşlukla ayrılır. Mantık şu şekilde bozulur:
- User_Alias : Bu,
visudo
bunun birUser_Alias
olacağını söyler. - INSTALLERS : Bu, bu takma ad için rastgele bir addır.
- = harry, mary : Bu takma ada dahil edilecek kullanıcıların listesi.
Şimdi, harry
kullanıcı hesabı için daha önce eklediğimiz satırı düzenleyeceğiz:
harry ALL=/usr/bin/apt-get
Okuyacak şekilde değiştirin:
YÜKLEYİCİLER TÜMÜ=/usr/bin/apt-get
Bu, “INSTALLERS” User_Alias
tanımında yer alan tüm kullanıcı hesaplarının apt-get
komutunu çalıştırabileceğini söylüyor. Bunu, artık yazılım yükleyebilmesi gereken Mary ile test edebiliriz.
sudo apt-get install colordiff
Mary, "INSTALLERS" User_Alias
içinde olduğu ve User_Alias
bu haklar verildiği için yazılımı yükleyebilir.
Üç Hızlı Sudo Püf Noktası
Bir komuta sudo
eklemeyi unuttuğunuzda şunu yazın
sudo !!
Ve son komut, satırın başına eklenen sudo
ile tekrarlanacaktır.
sudo
kullanıp parolanızla kimliğinizi doğruladıktan sonra, parolanızı 15 dakika boyunca başka sudo
komutlarıyla birlikte kullanmanız gerekmez. Kimlik doğrulamanızın hemen unutulmasını istiyorsanız, şunu kullanın:
sudo -k
Başarısız sudo
komut denemelerini nerede görebileceğinizi hiç merak ettiniz mi? “/var/log/auth.log” dosyasına giderler. Şununla görüntüleyebilirsiniz:
daha az /var/log/auth.log
shutdown
komutunu "root" kullanıcısı olarak çalıştırmayı denediğinde TTY pts/1'de oturum açan mary kullanıcı hesabının girişini görebiliriz.
Büyük Güçle…
…bölümlerini başkalarına devretme yeteneği gelir. Artık diğer kullanıcıları seçici olarak nasıl güçlendireceğinizi biliyorsunuz.