Linux'ta sudo Erişimi Nasıl Kontrol Edilir

Yayınlanan: 2022-01-29
Ubuntu tarzı bir masaüstünde bir Linux terminal penceresi.
Fatmawati Achmad Zaenuri/Shutterstock

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.

Reklamcılık

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.

Reklamcılık

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ık mary's ana dizininde olduğunuzu bildirir.
  • whoami bize mary 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.

Reklamcılık

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.

sudoers dosyası yüklü nano düzenleyici

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.

%sudo satırının vurgulandığı sudoers dosyası

Reklamcılık

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 

Reklamcılık

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 

Reklamcılık

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 için sudoer dosya girişi

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.

Reklamcılık

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 bir User_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.
Reklamcılık

Ş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
Reklamcılı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.