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,
marykullanıcı hesabı için bir oturum olduğunu yansıtacak şekilde değişir. -
pwdkomutu, artıkmary'sana dizininde olduğunuzu bildirir. -
whoamibizemarykullanıcı hesabını kullandığınızı söylüyor. - Dizindeki dosyalar
marykullanıcı hesabına aittir. -
exitkomutu 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,
visudobunun birUser_Aliasolacağı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.

