Neler yeni

Yazılım Forum

Tüm özelliklerimize erişmek için şimdi bize katılın. Kayıt olduktan ve giriş yaptıktan sonra konu oluşturabilecek, mevcut konulara yanıt gönderebilecek, itibar kazanabilecek, özel mesajlaşmaya erişebilecek ve çok daha fazlasını yapabileceksiniz! Bu hizmetlerimiz ise tamamen ücretsiz ve kurallara uyulduğu sürece sınırsızdır, o zaman ne bekliyorsunuz? Hadi, sizde aramıza katılın!

Linux/Unix Dosya ve Dizin İzinleri: Kapsamlı Bir Yönetim Kılavuzu

Dosya İzinleri: Temel Bir Güvenlik Mekanizması
Bir işletim sisteminin temel güvenlik unsurlarından biri, dosya ve dizin izinleridir. Özellikle Linux ve Unix tabanlı sistemlerde, bu izinler bir dosya veya dizine kimlerin erişebileceğini, ne tür işlemler yapabileceğini (okuma, yazma, çalıştırma) belirler. Bu detaylı kılavuzda, dosya izinlerinin neden bu kadar kritik olduğunu, nasıl çalıştığını ve günlük sistem yönetiminde nasıl etkili bir şekilde kullanılacağını derinlemesine inceleyeceğiz. Yanlış yapılandırılmış izinler, sistem güvenliğini ciddi şekilde tehlikeye atabilirken, doğru yapılandırma veri bütünlüğünü ve gizliliğini sağlar. Dosya izinleri hakkında daha fazla bilgi edinmek için bu bağlantıyı ziyaret edebilirsiniz.

İzin Türleri ve Grupları
Her dosya veya dizin için üç ana izin türü vardır:
  • Okuma (r): Bir dosyanın içeriğini görüntüleme veya bir dizinin içeriğini listeleme yeteneği.
  • Yazma (w): Bir dosyanın içeriğini değiştirme, silme veya bir dizinde dosya oluşturma/silme yeteneği.
  • Çalıştırma (x): Bir dosyayı program olarak çalıştırma veya bir dizine girme (CD) yeteneği.

Bu izinler üç farklı kullanıcı grubuna atanır:
  • Sahip (Owner): Dosyayı veya dizini oluşturan veya sahipliği kendisine atanan kullanıcı.
  • Grup (Group): Dosyanın ait olduğu grup. Bu gruptaki tüm kullanıcılar, gruba atanan izinlere sahip olur.
  • Diğerleri (Others): Ne sahip olan kullanıcı ne de ilgili grupta olmayan tüm diğer kullanıcılar.

Bu üç izin türü (r, w, x) ve üç kullanıcı grubu (sahip, grup, diğerleri) birleşerek dosya izinlerinin temel matrisini oluşturur. Örneğin, bir dosyanın sahibi okuma ve yazma iznine sahipken, grubundaki kullanıcılar sadece okuma iznine, diğerleri ise hiçbir izne sahip olmayabilir.

İzinleri Görüntüleme: `ls -l` Komutu
Dosya ve dizin izinlerini görüntülemek için en sık kullanılan komut `ls -l`'dir. Bu komut, dizindeki her öğenin ayrıntılı bir listesini sunar:
Kod:
$ ls -l
-rw-r--r-- 1 user group 1024 Jan 1 10:00 myfile.txt
drwxr-xr-x 2 user group 4096 Jan 1 10:05 mydirectory/
Çıktının ilk karakteri, dosyanın türünü belirtir:
  • `-`: Normal bir dosya
  • `d`: Dizin (directory)
  • `l`: Sembolik bağ (symbolic link)
  • `c`: Karakter cihaz dosyası (character device file)
  • `b`: Blok cihaz dosyası (block device file)
  • `s`: Soket (socket)
  • `p`: Adlandırılmış boru (named pipe)
İlk karakterden sonraki dokuz karakter, üçerli gruplar halinde sahip, grup ve diğerleri için izinleri temsil eder (rw- r-- r--).
  • İlk üç karakter (rw-): Sahip izinleri. `r` okuma, `w` yazma, `-` ise çalıştırma izni yok.
  • Sonraki üç karakter (r--): Grup izinleri. `r` okuma, `--` yazma ve çalıştırma izni yok.
  • Sonraki üç karakter (r--): Diğerleri izinleri. `r` okuma, `--` yazma ve çalıştırma izni yok.

İzinleri Değiştirme: `chmod` Komutu
`chmod` (change mode) komutu, dosya ve dizinlerin izinlerini değiştirmek için kullanılır. İzinleri belirlemek için iki ana yöntem vardır: sembolik (symbolic) ve sayısal (octal) mod.

Sembolik Mod:
Sembolik mod, izinleri değiştirmek için karakterler kullanır.
  • Kimlikler: `u` (sahip), `g` (grup), `o` (diğerleri), `a` (tümü - varsayılan).
  • Operatörler: `+` (izin ekle), `-` (izin kaldır), `=` (izinleri tam olarak ata).
  • İzinler: `r` (okuma), `w` (yazma), `x` (çalıştırma).

Örnekler:
Kod:
# Sadece sahibine yazma izni ekle
$ chmod u+w myfile.txt

# Grubundan ve diğerlerinden çalıştırma iznini kaldır
$ chmod go-x myscript.sh

# Sahibine okuma, yazma, çalıştırma; grubuna okuma, çalıştırma; diğerlerine sadece okuma izni ata
$ chmod u=rwx,g=rx,o=r myapp
Sembolik mod, izinleri kademeli olarak değiştirmek veya mevcut izinleri koruyarak ekleme/çıkarma yapmak için kullanışlıdır.

Sayısal (Oktal) Mod:
Sayısal mod, her bir izin türüne (r, w, x) bir sayısal değer atar:
  • `r` (okuma) = 4
  • `w` (yazma) = 2
  • `x` (çalıştırma) = 1
  • `-` (yok) = 0
Bu değerler, her grup için (sahip, grup, diğerleri) toplanarak üç haneli bir oktal sayı oluşturur. Örneğin:
  • Okuma ve Yazma (rw-) = 4 + 2 + 0 = 6
  • Okuma ve Çalıştırma (r-x) = 4 + 0 + 1 = 5
  • Sadece Okuma (r--) = 4 + 0 + 0 = 4
  • Tam İzinler (rwx) = 4 + 2 + 1 = 7
  • Hiçbir İzin (---) = 0 + 0 + 0 = 0
Yaygın olarak kullanılan bazı oktal modlar:
  • `755`: Sahip tam (rwx), grup ve diğerleri okuma ve çalıştırma (r-x). (Dizinler için yaygın)
  • `644`: Sahip okuma ve yazma (rw-), grup ve diğerleri okuma (r--). (Dosyalar için yaygın)
  • `777`: Herkes tam izinlere sahip (rwx). (Güvenlik riski taşır, nadiren kullanılır)

Örnekler:
Kod:
# myfile.txt'ye 644 izni ver (sahip rw-, grup r--, diğerleri r--)
$ chmod 644 myfile.txt

# mydirectory'ye 755 izni ver (sahip rwx, grup r-x, diğerleri r-x)
$ chmod 755 mydirectory/

# Bir script'e çalıştırma izni ver (sahip rwx, grup ve diğerleri r-x)
$ chmod 755 myscript.sh
Sayısal mod, izinleri kesin ve hızlı bir şekilde ayarlamak için tercih edilir.

Sahipliği Değiştirme: `chown` ve `chgrp` Komutları
Dosya ve dizinlerin sahipliği de güvenlik açısından önemlidir.

`chown` (change owner) Komutu:
`chown` komutu, bir dosyanın veya dizinin kullanıcısını ve/veya grubunu değiştirmek için kullanılır. Bu komutu çalıştırmak için genellikle `root` ayrıcalıkları gerekir.

Sadece sahip değiştirmek:
Kod:
$ sudo chown newuser myfile.txt
Sahip ve grup değiştirmek:
Kod:
$ sudo chown newuser:newgroup myfile.txt
Not: Eğer sadece kullanıcı adı belirtilirse, kullanıcının varsayılan grubu da atanır. Ancak açıkça `:grup` belirtmek daha net ve kontrol edilebilir bir yaklaşımdır.

`chgrp` (change group) Komutu:
`chgrp` komutu, bir dosyanın veya dizinin grubunu değiştirmek için kullanılır. Bir kullanıcı, sadece ait olduğu gruplara veya root ayrıcalıklarıyla başka bir gruba dosya atayabilir.

Kod:
$ chgrp newgroup myfile.txt
`chown` komutu, `chgrp`'nin yapabildiği her şeyi yapabildiği için, genellikle tek başına `chown` tercih edilir.

Varsayılan İzinler: `umask`
Yeni oluşturulan dosya ve dizinlerin varsayılan izinleri `umask` değeri tarafından belirlenir. `umask`, izinlerin "çıkarılacağı" bir maske olarak işlev görür. Dosyalar için varsayılan olarak 666 (rw-rw-rw-), dizinler için ise 777 (rwxrwxrwx) izinleriyle başlanır. `umask` değeri bu başlangıç izinlerinden çıkarılır.

Örneğin:
  • Yaygın bir `umask` değeri `022`'dir.
  • Dosyalar için: 666 - 022 = 644 (rw-r--r--)
  • Dizinler için: 777 - 022 = 755 (rwxr-xr-x)
`umask` değerinizi görmek için:
Kod:
$ umask
0022
Geçici olarak `umask` değiştirmek için:
Kod:
$ umask 0077
Dikkat: `umask` değeri genellikle `/etc/profile`, `~/.bashrc` veya `~/.profile` gibi başlangıç dosyalarında ayarlanır. Bu, tüm sistem veya belirli bir kullanıcı için varsayılan izin davranışını etkiler.

Özel İzinler: SUID, SGID ve Sticky Bit
Standart rwx izinlerinin yanı sıra, Linux/Unix sistemlerde üç özel izin bit'i bulunur: SUID (Set User ID), SGID (Set Group ID) ve Sticky bit. Bu bitler, belirli senaryolarda güvenlik ve işlevsellik açısından önemlidir.

SUID (Set User ID) Biti:
Bir program dosyasında SUID biti ayarlandığında, bu programı çalıştıran kullanıcı, programın sahibinin ayrıcalıklarıyla çalıştırır. Genellikle, normal kullanıcıların root yetkilerine ihtiyaç duyan belirli komutları (örneğin `passwd` komutu, şifre dosyasını değiştirmek için root ayrıcalığına ihtiyaç duyar) çalıştırabilmesini sağlamak için kullanılır.
`ls -l` çıktısında sahibin çalıştırma izninin yerine `s` veya `S` olarak görünür:
  • `s`: Hem SUID biti ayarlı hem de çalıştırma izni var.
  • `S`: SUID biti ayarlı ancak çalıştırma izni yok (bu durumda SUID işlevsiz kalır).
Sayısal olarak SUID bit'i 4000 ile temsil edilir.
Örnek:
Kod:
# SUID bitini ekle (sembolik)
$ chmod u+s myprogram

# SUID bitini ekle (sayısal)
$ chmod 4755 myprogram
Önemli Not: SUID bitini rastgele programlara atamak ciddi güvenlik zafiyetlerine yol açabilir. Sadece güvenilir ve iyi denetlenmiş programlarda kullanılmalıdır.

SGID (Set Group ID) Biti:
SGID bit'i hem dosyalara hem de dizinlere uygulanabilir:
  • Dosyalar için: SGID biti ayarlı bir program çalıştırıldığında, programı çalıştıran kullanıcının etkili grup kimliği, programın grubuna dönüşür. Bu, birden fazla kullanıcının belirli bir programı, ortak bir grup ayrıcalıklarıyla çalıştırmasına olanak tanır. `ls -l` çıktısında grubun çalıştırma izninin yerine `s` veya `S` olarak görünür.
  • Dizinler için: Bir dizinde SGID biti ayarlandığında, o dizinde oluşturulan yeni dosya ve dizinler, otomatik olarak üst dizinin grubunu devralır. Bu, ortak çalışma alanlarında dosyaların grup sahipliğini tutarlı tutmak için çok kullanışlıdır. `ls -l` çıktısında grubun çalıştırma izninin yerine `s` veya `S` olarak görünür.
Sayısal olarak SGID bit'i 2000 ile temsil edilir.
Örnek:
Kod:
# SGID bitini ekle (sembolik, dizin)
$ chmod g+s myproject_dir

# SGID bitini ekle (sayısal, dosya)
$ chmod 2755 myscript

Sticky Bit:
Sticky bit, sadece dizinlere uygulanır ve en çok `/tmp` dizini gibi genel yazılabilir dizinlerde görülür. Bir dizinde sticky bit ayarlandığında, o dizinde dosya oluşturabilen herkes, yalnızca kendi oluşturduğu dosyaları veya kendisine ait olan dosyaları silebilir veya yeniden adlandırabilir. Bu, başkalarının dosyalarını yanlışlıkla veya kasıtlı olarak silmesini engeller.
`ls -l` çıktısında diğerlerinin çalıştırma izninin yerine `t` veya `T` olarak görünür:
  • `t`: Hem Sticky bit ayarlı hem de diğerlerinin çalıştırma izni var.
  • `T`: Sticky bit ayarlı ancak diğerlerinin çalıştırma izni yok (bu durumda Sticky bit işlevsiz kalır).
Sayısal olarak Sticky bit 1000 ile temsil edilir.
Örnek:
Kod:
# Sticky bitini ekle (sembolik, dizin)
$ chmod +t /shared_folder

# Sticky bitini ekle (sayısal, dizin)
$ chmod 1777 /shared_folder

İzinleri Rekürsif Olarak Değiştirme
`chmod`, `chown` ve `chgrp` komutları `-R` (recursive) seçeneği ile birlikte kullanılabilir. Bu, belirtilen dizin altındaki tüm dosya ve alt dizinlere aynı izni veya sahipliği uygulamak için kullanışlıdır.
Örnek:
Kod:
# myproject dizini ve altındaki her şeye 755 izni ver
$ chmod -R 755 myproject/

# myproject dizini ve altındaki her şeyin sahibini ve grubunu değiştir
$ sudo chown -R newuser:newgroup myproject/
Uyarı: Rekürsif işlemler geri alınamaz olduğundan, bu komutları kullanırken son derece dikkatli olunmalıdır. Yanlış kullanım, sistem genelinde erişim sorunlarına yol açabilir.

Güvenlik Perspektifi ve En İyi Uygulamalar
Dosya izinleri, sistem güvenliğinin temelini oluşturur. Yanlış yapılandırılmış izinler, yetkisiz erişime, veri sızıntısına ve sistemin ele geçirilmesine yol açabilir. İşte bazı en iyi uygulamalar:
  • En Az Ayrıcalık Prensibi: Her zaman dosya ve dizinlere yalnızca gerekli olan minimum izinleri verin. Bir kullanıcının sadece okuma iznine ihtiyacı varsa, ona yazma veya çalıştırma izni vermeyin.
  • Dizinler için Yürütme İzni: Dizinler için yürütme (x) izni, o dizine girme (cd) ve içeriğini listeleme (`ls`) yeteneği için gereklidir. `r` izni olmadan `x` izni, içeriği listelemenize izin vermez ancak dosyalara doğrudan erişim sağlıyabilir (dosya adını biliyorsanız).
  • SUID/SGID Kullanımında Dikkat: Bu özel bitler güçlüdür ve potansiyel güvenlik riskleri taşır. Sadece kesinlikle gerekli olduğunda ve iyi anlaşıldığında kullanılmalıdır. SUID bitini kullanırken, programın güvenilir olduğundan ve güvenlik açıkları içermediğinden emin olun.
  • Uygulama ve Servis İzinleri: Web sunucuları (Apache, Nginx) veya veritabanları (MySQL, PostgreSQL) gibi uygulamaların çalıştığı kullanıcıların, ilgili dosya ve dizinlere doğru izinlere sahip olduğundan emin olun. Genellikle bu tür uygulamalar için ayrı, kısıtlı kullanıcı hesapları oluşturulur.
  • Düzenli Denetim: Kritik dosyaların (örneğin `/etc/passwd`, `/etc/shadow`) ve önemli uygulama dizinlerinin izinlerini düzenli olarak denetleyin. Değişiklikleri izlemek için `auditd` gibi araçlar kullanılabilir.
  • Yedeklemeler: İzin sorunları nedeniyle erişilemez hale gelen dosyaların kurtarılması için düzenli yedeklemeler yapın.

İleri Düzey Konular: ACL'ler
Standart Unix izinleri, bazen karmaşık erişim kontrolü senaryoları için yetersiz kalabilir. Bu durumlarda, ACL'ler (Access Control Lists) devreye girer. ACL'ler, belirli kullanıcılara veya gruplara dosya veya dizin üzerinde daha granüler izinler atamanıza olanak tanır ve standart izin modelinin dışına çıkar. `getfacl` ve `setfacl` komutları ACL'leri yönetmek için kullanılır. Ancak, bu kılavuz standart izinlere odaklandığı için ACL'ler ayrı bir kapsamlı konu olarak değerlendirilmelidir.

Sonuç
Dosya izinleri, Linux/Unix sistem yönetiminin vazgeçilmez bir parçasıdır. Bu izinleri anlamak ve doğru bir şekilde yönetmek, sistem güvenliğini sağlamanın ve veri bütünlüğünü korumanın anahtarıdır. `chmod`, `chown`, `chgrp` ve `umask` gibi komutlar, izinleri esnek ve güçlü bir şekilde yönetmenizi sağlar. Özel izin bitleri (SUID, SGID, Sticky Bit) ise belirli ihtiyaçlara yönelik ek kontrol katmanları sunar. Unutmayın, en az ayrıcalık ilkesini benimseyerek ve izinleri düzenli olarak denetleyerek sistemlerinizi daha güvenli hale getirebilirsiniz. Bu kılavuz, dosya izinlerinin derinlemesine anlaşılmasına yönelik sağlam bir temel sunmayı amaçlamaktadır. Dosya izinleri konusundaki bilginizi pekiştirmek için bol bol pratik yapmaktan çekinmeyin.
 
shape1
shape2
shape3
shape4
shape5
shape6
Üst

Bu web sitenin performansı Hazal Host tarafından sağlanmaktadır.

YazilimForum.com.tr internet sitesi, 5651 sayılı Kanun’un 2. maddesinin 1. fıkrasının (m) bendi ve aynı Kanun’un 5. maddesi kapsamında Yer Sağlayıcı konumundadır. Sitede yer alan içerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır.

YazilimForum.com.tr, kullanıcılar tarafından paylaşılan içeriklerin doğruluğunu, güncelliğini veya hukuka uygunluğunu garanti etmez ve içeriklerin kontrolü veya araştırılması ile yükümlü değildir. Kullanıcılar, paylaştıkları içeriklerden tamamen kendileri sorumludur.

Hukuka aykırı içerikleri fark ettiğinizde lütfen bize bildirin: lydexcoding@gmail.com

Sitemiz, kullanıcıların paylaştığı içerik ve bilgileri 6698 sayılı KVKK kapsamında işlemektedir. Kullanıcılar, kişisel verileriyle ilgili haklarını KVKK Politikası sayfasından inceleyebilir.

Sitede yer alan reklamlar veya üçüncü taraf bağlantılar için YazilimForum.com.tr herhangi bir sorumluluk kabul etmez.

Sitemizi kullanarak Forum Kuralları’nı kabul etmiş sayılırsınız.

DMCA.com Protection Status Copyrighted.com Registered & Protected