spot_img
Saturday, May 18, 2024
spot_img
HomeTechBilgi TeknolojisiLinux'ta SUID, SGID ve Yapışkan Bitler Nasıl Kullanılır

Linux'ta SUID, SGID ve Yapışkan Bitler Nasıl Kullanılır

-

Linux sistemindeki bir terminal penceresi.
Fatmawati Achmad Zaenuri / Shutterstock

SUID, SGID ve Yapışkan Bitler, Linux'ta yürütülebilir dosyalar ve dizinler için ayarlayabileceğiniz güçlü özel izinlerdir. Bunları kullanmanın yararlarını ve olası tuzaklarını paylaşacağız.

Zaten Kullanımdalar

Güvenliği çok kullanıcılı bir işletim sistemine dönüştürmek birkaç yol sunar. Örneğin, (görünüşte) temel şifre kavramını ele alalım. Hepsinin saklanması gerekir, böylece her kullanıcı oturum açtığında, sistem yazdığı şifreyi saklanan kopyayla karşılaştırabilir. Açıkçası, şifreler krallığın anahtarları olduğundan, korunmaları gerekir.

Linux'ta depolanan şifreler iki şekilde korunur: şifrelenir ve yalnızca root ayrıcalıklar şifreleri içeren dosyaya erişebilir. Kulağa hoş gelebilir, ancak bir sorun yaratır: root ayrıcalıklar depolanan şifrelere erişebilir, bu erişime sahip olmayanlar şifrelerini nasıl değiştirir?

Durumunuzu Yükseltme

Genellikle Linux komutları ve programları, programı başlatan kişi ile aynı izin kümesiyle çalışır. Ne zaman root koşar passwd bir şifre değiştirme komutu ile çalışır root’Nin izinleri. Bu demektir ki passwd komutu, /etc/shadow dosya.

İdeal olan, sistemdeki herhangi birinin programı başlatabileceği bir şemadır. passwd program, ancak passwd program tutma rootYükseltilmiş ayrıcalıkları. Bu, herhangi birinin kendi şifresini değiştirmesini sağlar.

Yukarıdaki senaryo, Kullanıcı Kimliğini Ayarla bitinin (SUID) yapar. Program ve komutları, programı başlatan kişinin izinleri yerine dosya sahibinin izinleriyle çalıştırır.

Programın Durumunu Yükseltiyorsunuz

Yine de başka bir sorun var. Kişinin başkasının şifresi ile karışması engellenmelidir. Linux, SUID geçici olarak ödünç alınmış izinlerle uygulamaları çalıştırmasına izin veren bir programdır, ancak bu güvenlik hikayesinin yalnızca yarısıdır.

Birinin başka bir kişinin şifresiyle çalışmasını engelleyen kontrol mekanizması, passwd işletim sistemi ve SUID şemasını değil.

Yükseltilmiş ayrıcalıklarla çalışan programlar, “tasarım gereği güvenlik” anlayışıyla oluşturulmadıkları takdirde güvenlik riski oluşturabilir. Bu, güvenlik ilk düşündüğünüz şeydir ve sonra bunun üzerine inşa edersiniz. Programınızı yazmayın ve daha sonra programınıza bir güvenlik katmaya çalışın.

Açık kaynaklı yazılımın en büyük avantajı, kaynak koduna kendiniz bakabilmeniz veya güvenilir hakem değerlendirmelerine bakabilmenizdir. İçin kaynak kodunda passwd program, kontroller vardır, böylece programı çalıştıran kişinin root. Birisi farklı yeteneklere izin verilir root (veya kullanan biri sudo).

Bu, birisinin root.

"Passwd.c" kaynağından bir kaynak kod snippet'i

Aşağıdakiler bunun dikkate alındığı bir örnektir. Çünkü root herhangi bir şifreyi değiştirebilirse, programın kişinin izin değişikliğine sahip olduğu şifreleri görmek için genellikle yaptığı denetimlerle uğraşması gerekmez. İçin böylece root, bu kontrolleri atlar ve kontrol fonksiyonundan çıkar.

"Passwd.c" kaynağından bir kaynak kod pasajı.

Çekirdek Linux komutları ve yardımcı programlarıyla, güvenliklerini oluşturduklarından ve kodun birçok kez incelendiğinden emin olabilirsiniz. Tabii ki, henüz bilinmeyen istismar tehdidi var. Ancak, yamaların veya güncellemelerin yeni tanımlanan güvenlik açıklarına karşı hızlıca görünmesi.

Üçüncü taraf bir yazılımdır – özellikle açık kaynak olmayan herhangi bir yazılımdır – kullanmayla ilgili son derece dikkatli olmanız gerekir SUID ile. Bunu yapma demiyoruz, ancak eğer yaparsanız, sisteminizi riske atmayacağından emin olmak istersiniz. Kendini ve onu çalıştıran kişiyi doğru şekilde yönetmeyecek bir programın ayrıcalıklarını yükseltmek istemezsiniz.

SUID Kullanan Linux Komutları

Normal bir kullanıcı tarafından çalıştırıldığında komuta yükseltilmiş ayrıcalıklar vermek için SUID bitini kullanan Linux komutlarından bazıları şunlardır:

ls -l /bin/su
ls -l /bin/ping
ls -l /bin/mount
ls -l /bin/umount
ls -l /usr/bin/passwd

Terminal penceresinde SUID biti ayarlanmış Linux komutlarının listesi.

Dosya adlarının SUID bitinin ayarlandığını gösteren kırmızı renkle vurgulandığını unutmayın.

Bir dosya veya dizindeki izinler genellikle üç karakterden oluşan üç grupla temsil edilir: rwx. Bunlar okuma, yazma ve yürütme anlamına gelir. Harfler varsa, bu izin verilir. Kısa çizgi (-) bir mektup yerine, bu izin verilmemiştir.

Bu izinlerden üç grup vardır (soldan sağa): dosyanın sahibi, dosya grubunun üyeleri ve diğerleri için. Ne zaman SUID bit bir dosyada ayarlanırsa, “s” sahibinin yürütme iznini temsil eder.

Eğer SUID biti yürütülebilir özellik olmayan bir dosyada ayarlanır, büyük “S” bunu belirtir.

Bir örneğe bakalım. Normal kullanıcı dave türleri passwd komut:

passwd

Bir terminal penceresindeki "passwd" komutu.

passwd komut istemleri dave yeni şifresi için. Biz kullanabilirsiniz ps çalışan işlemlerin ayrıntılarını görmek için komut.

Kullanacağız ps ile grep farklı bir terminal penceresinde ve passwd süreci. Biz de kullanacağız -e (her işlem) ve -f ile (tam biçim) seçenekler ps.

Aşağıdaki komutu yazıyoruz:

ps -e -f | grep passwd

Bir terminal penceresindeki "ps -e -f | grep passwd" komutu.

İki satır bildirildi, ikincisi grep İçinde “passwd” dizesi olan komutları arama işlemi. Bizi ilgilendiren ilk çizgi bu, çünkü bu passwd süreç dave başlattı.

Görebiliyoruz passwd işlem, root başlattı.

SUID Bit'in Ayarlanması

Değiştirmek kolaydır SUID ısırmak chmod. u+s sembolik mod SUID biraz ve u-s sembolik mod SUID bit.

SUID biti ile ilgili bazı kavramları göstermek için, htg. Kök dizininde dave kullanıcı, ve sahip değil SUID bit kümesi. Yürütüldüğünde, gerçek ve etkili kullanıcı kimliklerini (UID) görüntüler.

Gerçek UID programı başlatan kişiye aittir. Etkin kimlik, programın başlatılmış gibi davrandığı hesaptır.

Aşağıdakileri yazıyoruz:

ls -lh htg
./htg

Bir terminal penceresindeki "ls -lh htg" ve "./htg" komutları.

Programın yerel kopyasını çalıştırdığımızda, gerçek ve etkili kimliklerin her ikisinin de dave. Yani, normal bir program gibi davranıyor.

Hadi kopyalayalım /usr/local/bin dizinini kullanarak diğerlerini kullanabilirsiniz.

Aşağıdakileri kullanarak şunu yazıyoruz: chmod ayarlamak SUID seçin ve ayarlandığını kontrol edin:

sudo cp htg /usr/local/bin
sudo chmod u+s /usr/local/bin/htg
ls -hl /usr/local/bin/htg

Bir terminal penceresinde "sudo cp htg," "/ usr / local / bin sudo chmod u + s / usr / local / bin / htg" ve "ls -hl / usr / local / bin / htg" komutları.

Böylece program kopyalanır ve SUID biti ayarlanır. Tekrar çalıştıracağız, ancak bu sefer kopyayı /usr/local/bin Klasör:

htg

Bir terminal penceresinde çalışan "htg" programı.

Buna rağmen dave programı başlattığınızda, etkin kimlik root kullanıcı. Yani, eğer mary programı başlatır, aşağıda gösterildiği gibi aynı şey olur:

htg

Bir terminal penceresinde "mary" kullanıcısı tarafından başlatılan "htg" programı.

Gerçek kimlik maryve etkili kimlik root. Program kök kullanıcının izinleriyle çalışır.

İLİŞKİLİ: Linux'ta chmod Komutu Nasıl Kullanılır

SGID Bit

Küme Grubu Kimliği (SGID) bit çok benzer SUID bit. Ne zaman SGID bit çalıştırılabilir bir dosyada, etkin grup dosya grubuna ayarlanır. İşlem, dosyayı başlatan kişinin izinlerinden ziyade, dosya grubunun üyelerinin izinleriyle çalışır.

Tweaked bizim htg böylece etkili grubu da gösterir. Grubunu değiştireceğiz htg kullanıcı olmak için program maryDefault varsayılan grubu, mary. Biz de kullanacağız u-s ve g+s ile sembolik modlar chown kaldırmak için SUID bit ve ayarlamak SGID.

Bunu yapmak için aşağıdakileri yazıyoruz:

sudo chown root:mary /usr/local/bin/htg
sudo chmod u-s,g+s /usr/local/bin/htg
ls -lh /usr/local/bin/htg

"Sudo chown root: mary / usr / local / bin / htg," "sudo chmod us, g + s / usr / local / bin / htg" ve "ls -lh / usr / local / bin / htg" komutları bir terminal penceresinde.

Görebilirsiniz SGID bit, grup izinlerinde “s” ile gösterilir. Ayrıca, grubun mary ve dosya adı şimdi sarı renkle vurgulanır.

Programı çalıştırmadan önce hangi grupları oluşturalım? dave ve mary ait olmak. Kullanacağız id ile komut -G (gruplar) seçeneği, tüm grup kimliklerini yazdırmak için. Sonra, htg olarak programla dave.

Aşağıdaki komutları yazıyoruz:

id -G dave
id -G mary
htg

Bir terminal penceresindeki "id -G dave," "id -G mary" ve "htg" komutları.

İçin varsayılan grubun kimliği mary 1001 ve etkin grubun htg programı 1001'dir. dave, sitedeki üyelerin izinleriyle çalışıyor mary grubudur. Sanki aynı dave katılmıştı mary grubudur.

Haydi uygulayalım SGID bir dizine bit. İlk olarak “work” adlı bir dizin oluşturacağız ve ardından grubunu “geek” olarak değiştireceğiz. Daha sonra SGID dizin üzerinde.

Kullandığımızda ls dizinin ayarlarını kontrol etmek için, -d (directory) seçeneğini seçerek dizinin içeriğini değil dizinin ayrıntılarını görürüz.

Aşağıdaki komutları yazıyoruz:

sudo mkdir work
sudo chown dave:geek work
sudo chmod g+s work
ls -lh -d work

"Sudo mkdir work," "sudo chown dave: geek work," "sudo chmod g + s work" ve bir terminal penceresindeki "ls -lh -d work" komutları.

SGID bit ve “geek” grubu ayarlanır. Bunlar, içinde oluşturulan tüm öğeleri etkiler work dizin.

Girmek için aşağıdakileri yazıyoruz work dizininde “demo” adlı bir dizin oluşturun ve özelliklerini kontrol edin:

cd work
mkdir demo
ls -lh -d demo

Bir terminal penceresinde "cd work," "mkdir demo" ve "ls -lh -d demo cd work" komutları.

SGID bit ve “geek” grubu otomatik olarak “demo” dizinine uygulanır.

İle bir dosya oluşturmak için aşağıdakileri yazalım touch komutunu verin ve özelliklerini kontrol edin:

touch useful.sh
ls -lh useful.sh

Bir terminal penceresindeki "touch handy.sh" ve "ls -lh handy.sh" komutları.

Yeni dosya grubu otomatik olarak “geek” olarak ayarlanır.

İLİŞKİLİ: Linux'ta chown Komutu Nasıl Kullanılır

Yapışkan Bit

Yapışkan parça adını tarihsel amacından alır. Yürütülebilir bir dosyada ayarlandığında, çalıştırılabilir öğeye ait metin bölümlerinin takas halinde tutulması gerektiğini belirterek yeniden kullanımlarını hızlandırır. Linux'ta, yapışkan bit yalnızca bir dizini etkiler – bir dosyaya ayarlamak mantıklı olmaz.

Yapışkan biti bir dizine ayarladığınızda, kullanıcılar yalnızca bu dizinde kendilerine ait olan dosyaları silebilir. Dosyalar üzerinde hangi dosya izinlerinin birleşimi ayarlanmış olursa olsun, başkasına ait dosyaları silemezler.

Bu, herkesin ve başlattığı işlemlerin paylaşılan dosya depolama alanı olarak kullanabileceği bir dizin oluşturmanıza olanak tanır. Dosyalar korunur, çünkü yine kimse başkalarının dosyalarını silemez.

Şimdi “paylaşılan” adlı bir dizin oluşturalım. Kullanacağız o+t ile sembolik mod chmod bu dizindeki yapışkan biti ayarlamak için. Daha sonra bu dizindeki izinlerin yanı sıra bu dizindeki izinlere de bakacağız. /tmp ve /var/tmp dizinleri.

Aşağıdaki komutları yazıyoruz:

mkdir shared
sudo chmod o+t shared
ls -lh -d shared
ls -lh -d /tmp
ls -lh -d /var/tmp

Terminal penceresinde "mkdir paylaşıldı," "sudo chmod o + t paylaşıldı," "ls -lh -d paylaşıldı," ls -lh -d / tmp ls "ve" -lh -d / var / tmp "komutları .

Yapışkan bit ayarlanırsa, “diğer” dosya izinleri kümesinin yürütülebilir biti “t” olarak ayarlanır. Dosya adı da mavi renkle vurgulanır.

/tmp ve /var/tmp klasörler, sahip, grup ve diğerleri için tüm dosya izinlerine sahip iki dizin örneğidir (bu nedenle yeşil renkle vurgulanır). Geçici dosyalar için paylaşılan konumlar olarak kullanılırlar.

Bu izinlerle, herkes teorik olarak her şeyi yapabilmelidir. Ancak, yapışkan bit onları geçersiz kılar ve hiç kimse ona ait olmayan bir dosyayı silemez.

Hatırlatmalar

Aşağıdakiler, ileride başvurmak üzere yukarıda ele aldığımız konuların hızlı bir kontrol listesidir:

  • SUID yalnızca dosyalarda çalışır.
  • Basvurabilirsin SGID dizinlere ve dosyalara.
  • Yapışkan biti yalnızca dizinlere uygulayabilirsiniz.
  • Eğer “s“,“g“Veya“t”Göstergeleri, büyük harf, yürütülebilir bit (x) ayarlanmadı.

Related articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Stay Connected

0FansLike
0FollowersFollow
0FollowersFollow
0SubscribersSubscribe
spot_img

Latest posts