Belge

Pardus/Linux’ta chattr Komutu Nasıl Kullanılır

Normal okuma, yazma ve yürütme dosya izinlerinin yanı sıra Linux, dosyaları, dosyanın diğer özelliklerini kontrol eden başka bir dizi özniteliğe sahiptir.

Pardus/Linux ‘ta İzinler ve Nitelikler

Linux’ta bir dosyaya kimin erişebileceği ve onunla neler yapabileceği, kullanıcı merkezli bir dizi  izin tarafından kontrol edilir . Bir dosyanın içeriğini okuyabilir, dosyaya yeni veriler yazabilir veya bir komut dosyası veya program ise bir dosyayı çalıştırabilir. İşte bu işlerin tümü bahsedilen izin kümesine tabidir.

Dosyanın sahibi ve dosyanın bağlı olduğu grup için tanımlanan izinler vardır bununla beraber ilk iki kategoride olmayan kullanıcılar için de izinler bulunur. Bir dosya veya dizindeki izinleri görmek için lskomutu -l(uzun listeleme) seçeneğiyle kullanabilirsiniz.

İzinleri değiştirmek için komutu chmodkullanılır . Bunun yapabilmek için root kullanıcısı veya dosyanın sahibi olmanız gerekmektedir.

Dosya izinlerinin (permission) kullanıcı merkezli olduğunu görebiliriz çünkü izinler kullanıcı düzeyinde verilir veya kaldırılır. Buna karşılık,  bir dosyanın öznitelikleri (attributes) dosya sistemi merkezlidir. İzinler gibi, dosya veya dizinde ayarlanırlar. Ancak bir kez ayarlandığında, tüm kullanıcılar için geçerli olur.

Nitelikler, izinlerden ayrı bir ayar tablosudur. Nitelikler, değişmezlik ve dosya sistemi düzeyindeki davranışlar gibi durumları kontrol eder. Bir dosyanın veya dizinin özniteliklerini görmek için lsattr komutunu kullanırız. Nitelikleri ayarlamak için chattr komutunu kullanıyoruz.

İzinler ve nitelikler inode içinde saklanır  . inode,  dosyalar ve dizinler  gibi dosya sistemi nesneleri hakkında bilgi tutan bir dosya sistemi yapısıdır . Bir dosyanın sabit sürücüdeki konumu, oluşturulma tarihi, izinleri ve öznitelikleri gibi bilgilerin tümü inode’unda depolanır.

Bir Dosyanın Niteliklerine Bakmak

Chattr ve lsattr komutları bilgisayarınızda zaten mevcut olacağından herhangi bir şey yüklemenize gerek yoktur.

Geçerli dizindeki dosyalardaki öznitelikleri kontrol etmek için lsattr kullanın:

huseyin@pardus:~$ lsattr
————–e—- ./Android
————–e—- ./Ornekler
————–e—- ./Müzik
————–e—- ./flutter
————–e—- ./android-studio
————–e—- ./Genel
————–e—- ./VirtualBox VMs
————–e—- ./Resimler
————–e—- ./Videolar
————–e—- ./Masaüstü
————–e—- ./AndroidStudioProjects
————–e—- ./Belgeler

Kesik çizgiler, ayarlanmamış öznitelikler için yer tutuculardır. Ayarlanan tek öznitelik e(uzantılar) özniteliğidir. Bu, dosya sistemi düğümlerinin sabit sürücüdeki dosyanın tüm bölümlerini işaret etmek için uzantıları kullandığını veya gerekirse kullanacağını gösterir.

En sık kullanılan özniteliklerin listesi aşağıdaki gibidir:

  • a : Yalnızca ekleme. Bu özniteliğe sahip bir dosya yalnızca eklenebilir. Yine de yazılabilir, ancak yalnızca dosyanın sonunda. Dosya içindeki mevcut verilerin herhangi birinin üzerine yazılması mümkün değildir.
  • c : Sıkıştırılmış. Dosya sabit sürücüde otomatik olarak sıkıştırılır ve okunduğunda sıkıştırılmaz. Dosyalara yazılan veriler, sabit sürücüye yazılmadan önce sıkıştırılır.
  • A : atime Güncelleme yok . Bir atimedosyaya en son ne zaman erişildiğini kaydeden düğümdeki değerdir.
  • C : Yazma üzerine kopyalama yok. İki işlem bir dosyaya erişim talep ederse, aynı dosyaya işaretçiler verilebilir. Dosyaya yazmaya çalışırlarsa, yalnızca dosyanın kendi benzersiz kopyaları verilir, bu da onu bu işleme özgü kılar.
  • d : Döküm yok. Linux dump komutu, tüm dosya sistemlerinin kopyalarını yedekleme ortamına yazmak için kullanılır. Bu öznitelik, dökümün dosyayı yok saymasını sağlar. Yedeklemeden hariç tutulur.
  • D : Senkronize dizin güncellemeleri. Bir dizin için bu öznitelik açıldığında, o dizinde yapılan tüm değişiklikler eşzamanlı olarak, yani hemen sabit sürücüye yazılır.
  • e : Kapsam biçimi. e niteliği, dosya sisteminin, dosyanın sabit sürücüdeki konumunu eşlemek için uzantıları kullandığını gösterir. Bunu chattr ile değiştiremezsiniz. Dosya sisteminin çalışmasının bir işlevidir.
  • i : değişmez. Değiştirilemez bir dosya, yeniden adlandırma ve silme dahil olmak üzere değiştirilemez. Kök kullanıcı, bu özelliği ayarlayabilecek veya ayarını kaldırabilecek tek kişidir.
  • s : Güvenli silme. Bu öznitelik kümesine sahip bir dosya silindiğinde, dosya verilerini tutan sabit sürücü bloklarının üzerine sıfır içeren baytlar yazılır. Bunun ext4 dosya sistemi tarafından dikkate alınmadığını unutmayın .
  • S : Senkronize güncellemeler. S özniteliği ayarlanmış bir dosyada yapılan değişiklikler, dosyaya eşzamanlı olarak yazılır.
  • u : u özniteliği ayarlanmış bir dosyanın silinmesi, dosyanın bir kopyasının oluşturulmasına neden olur. Dosya yanlışlıkla kaldırılmışsa, bu dosya kurtarma için faydalı olabilir.

Bir Dosyanın Niteliklerini Değiştirme

Chattr komutu, bir dosyanın veya dizinin özniteliklerini değiştirmemizi sağlar. + (set) ve – (unset) operatörlerini chmod komutunda olduğu gibi bir özniteliği uygulamak veya kaldırmak için kullanabiliriz.

chattr komutu ayrıca bir = (yalnızca set) operatörüne sahiptir. Bu, bir dosyanın veya dizinin özniteliklerini yalnızca komutta belirtilen özniteliklere ayarlar. Diğer bir deyişle, komut satırında listelenmeyen tüm öznitelikler yok sayılır.

append Only Özelliğini Ayarlama

Bir metin dosyasına yalnızca ekleme özniteliğini ayarlayalım ve dosyayla yapabileceklerimizi nasıl etkilediğini görelim.

huseyin@pardus:~$ sudo chattr +a dosya.txt

append only bitinin ayarlanıp ayarlanmadığını lsattr kullanarak kontrol edebiliriz:

huseyin@pardus:~$ lsattr dosya.txt
—–a——–e—- dosya.txt

“a” harfi özelliğin ayarlandığını gösterir. Şimdi dosyanın üzerine yazmaya çalışalım. Örnek olarak ls komutu çıktısını dosya.txt üzerine yönlendirelim.

huseyin@pardus:~$ ls -l > dosya.txt
bash: dosya.txt: İşleme izin verilmedi
huseyin@pardus:~$ sudo ls -l > dosya.txt
bash: dosya.txt: İşleme izin verilmedi

Sudo komutunu kullansak bile işleme izin verilmiyor.

Bu sefer çıktıyı yeniden yönlendirmek için ekleme yöntemni kullanalım.

huseyin@pardus:~$ ls -l >> dosya.txt

Herhangi bir hata mesajı olmadan komut istemine geri döndük. Ne olduğunu görmek için dosyanın içine bir göz atalım.


huseyin@pardus:~$ cat dosya.txt
Lorem Ipsum, dizgi ve baskı endüstrisinde kullanılan mıgır metinlerdir.
Lorem Ipsum, adı bilinmeyen bir matbaacının bir hurufat numune kitabı
oluşturmak üzere bir yazı galerisini alarak karıştırdığı 1500’lerden
beri endüstri standardı sahte metinler olarak kullanılmıştır.
Beşyüz yıl boyunca varlığını sürdürmekle kalmamış, aynı zamanda pek
değişmeden elektronik dizgiye de sıçramıştır. 1960’larda Lorem Ipsum
pasajları da içeren Letraset yapraklarının yayınlanması ile ve yakın zamanda
Aldus PageMaker gibi Lorem Ipsum sürümleri içeren masaüstü yayıncılık
yazılımları ile popüler olmuştur.
toplam 124
drwxr-xr-x 3 huseyin huseyin 4096 Eyl 5 2021 Android
drwxrwxr-x 7 huseyin huseyin 4096 Ağu 27 2021 android-studio
drwxr-xr-x 13 huseyin huseyin 4096 Şub 8 21:35 AndroidStudioProjects
drwxr-xr-x 9 huseyin huseyin 4096 Mar 10 11:04 Belgeler
-rw-r–r– 1 huseyin huseyin 662 Nis 23 10:00 dosya.txt
drwxr-xr-x 10 huseyin huseyin 4096 Tem 2 2021 flutter
drwxr-xr-x 3 huseyin huseyin 4096 Ağu 20 2021 Genel
drwxrwxrwx 2 huseyin huseyin 4096 Eyl 13 2020 huseyin-guc
drwxr-xr-x 2 huseyin huseyin 4096 Ağu 30 2021 javasharedresources
drwxr-xr-x 3 huseyin huseyin 4096 Mar 26 11:51 Masaüstü
drwxr-xr-x 2 huseyin huseyin 4096 Ağu 20 2021 Müzik
drwxrwxrwx 13 huseyin huseyin 4096 Ağu 20 2021 Ornekler
drwxr-xr-x 8 huseyin huseyin 4096 Nis 2 12:08 Resimler
drwxr-xr-x 2 huseyin huseyin 4096 Ağu 20 2021 Şablonlar
drwxr-xr-x 4 huseyin huseyin 4096 Mar 18 19:00 Videolar
drwxr-xr-x 3 huseyin huseyin 4096 Kas 24 21:05 VirtualBox VMs

Dosyanın sonuna ls’den yönlendirilen çıktı eklendi.

Dosyaya veri ekleyebilsek de, dosyada yapabileceğimiz tek değişiklik bu olacaktır. Yetkili kullanıcı olsak dahi onu silemeyiz.

Immutable Özelliği Ayarlama

Asla yeni veri eklenmeyecek bir dosyayı korumak istiyorsanız, değişmez özniteliğini ayarlayabilirsiniz. Bu, veri ekleme de dahil olmak üzere dosyadaki tüm değişiklikleri engeller.

huseyin@pardus:~$ sudo chattr +i dosya2.txt
huseyin@pardus:~$ lsattr dosya2.txt
—-i———e—- dosya2.txt

Değişmez özniteliğin ayarlandığını belirten “i” yi görebiliriz. Dosyamızı değişmez hale getirdikten sonra, kök kullanıcı bile onu yeniden adlandıramaz (mv), silemez (rm) veya ona veri ekleyemez.

huseyin@pardus:~$ sudo mv dosya2.txt dosya3.txt
mv: ‘dosya2.txt’ ‘dosya3.txt”e taşınamadı: İşleme izin verilmedi
huseyin@pardus:~$ rm dosya2.txt
rm: ‘dosya2.txt’ silinemedi: İşleme izin verilmedi
huseyin@pardus:~$ sudo ls -l >> dosya2.txt
bash: dosya2.txt: İşleme izin verilmedi

Sonuç olarak,

Dosyaların özniteliklerinin ayarlanması, onları felaketlere karşı dayanıklı hale getirebilir. Bir dosyayı silemiyor veya üzerine yazamıyorsanız, oldukça güvende olduğunu düşünebiliriz.

Bunları sistem dosyalarına uygulayarak, Linux kurulumunuzu daha güvenli hale getirmeyi düşünebilirsiniz. Ancak güncellemeler yayınlandıkça veya yükseltmeler uygulandıkça sistem dosyalarının periyodik olarak değiştirilmesi gerekir. Bu nedenle, bu öznitelikleri yalnızca kendi oluşturduğunuz dosyalarda kullanmak en güvenli yoldur.

Yazının orijinalini buradan okuyabilirsiniz.