Linux'ta Önemli Dosyaları DEĞİŞTİRİLMEZ (Değiştirilemez) Hale Getirmek için 5 'chattr' Komutu


chattr (Özniteliği Değiştir), oturum açmış olsanız bile, önemli dosya ve klasörlerin yanlışlıkla silinmesini veya değiştirilmesini güvence altına almak için Linux sistemindeki bir dosyanın belirli niteliklerini ayarlamak/kaldırmak için kullanılan bir komut satırı Linux yardımcı programıdır. kök kullanıcı olarak.

Linux yerel dosya sistemlerinde, yani ext2, ext3, ext4, btrfs vb. tüm bayrakları destekler, ancak tüm bayraklar yerel olmayan tüm FS'leri desteklemez. Chattr komutuyla öznitelikler ayarlandıktan sonra dosya/klasör üzerinde tam izinlere sahip olunsa bile dosya/klasör silinemez veya değiştirilemez.

Bu, kullanıcı bilgilerinin yer aldığı passwd ve shadow dosyaları gibi sistem dosyalarındaki nitelikleri ayarlamak için çok kullanışlıdır.

Chattr sözdizimi
chattr [operator] [flags] [filename]
Nitelikler ve Bayraklar

Aşağıda, chattr komutu kullanılarak ayarlanabilen/ayarlanamayan ilgili bayrakların ve ortak özelliklerin listesi yer almaktadır.

  1. Bir dosyaya 'A' öznitelik kümesiyle erişilirse, atime kaydı güncellenmez.
  2. Bir dosya 'S' öznitelik kümesiyle değiştirilirse, değişiklikler diskte eş zamanlı olarak güncellenir.
  3. Bir dosya 'a' özniteliğiyle ayarlanır ve yazma için yalnızca ekleme modunda açılabilir.
  4. Bir dosya 'i' özelliğiyle ayarlanmıştır, değiştirilemez (değiştirilemez). Yeniden adlandırma yok, sembolik bağlantı oluşturma yok, yürütme yok, yazılabilirlik yok, yalnızca süper kullanıcı özniteliği kaldırabilir anlamına gelir.
  5. 'j' özniteliğine sahip bir dosya ayarlanır ve bu dosyanın tüm bilgileri, dosyanın kendisine güncellenmeden önce ext3 günlüğüne güncellenir.
  6. Bir dosya 't' özniteliğiyle ayarlanır, kuyruk birleştirme yoktur.
  7. 'd' özelliğine sahip bir dosya, döküm işlemi çalıştırıldığında artık yedeklemeye aday olmayacaktır.
  8. u’ özelliği bulunan bir dosya silindiğinde verileri kaydedilir. Bu, kullanıcının silinmesini geri istemesine olanak tanır.
Şebeke
  1. + : Özniteliği dosyaların mevcut özniteliğine ekler.
  2. : Dosyaların mevcut özniteliğinin özniteliğini kaldırır.
  3. = : Dosyaların sahip olduğu mevcut öznitelikleri koruyun.

Burada, bir dosya ve klasörlerin niteliklerini ayarlamak/kaldırmak için kullanılan chattr komut örneklerinden bazılarını göstereceğiz.

1. Silinmeyi önlemek için dosyalara öznitelikler nasıl eklenir?

Gösterim amacıyla sırasıyla demo klasörünü ve important_file.conf dosyasını kullandık. Öznitelikleri ayarlamadan önce, mevcut dosyaların 'ls -l' komutunu kullanarak ayarlanmış özniteliklere sahip olduğundan emin olun. Sonuçları gördünüz mü, şu anda hiçbir özellik ayarlanmamış.

[root@tecmint tecmint]# ls -l
total 0
drwxr-xr-x. 2 root root 6 Aug 31 18:02 demo
-rwxrwxrwx. 1 root root 0 Aug 31 17:42 important_file.conf

Chattr komutu ile özniteliği ayarlamak için + işaretini, ayarı kaldırmak için işaretini kullanıyoruz. Öyleyse, herhangi birinin bir dosyayı silmesini önlemek için dosyalara +i bayraklarıyla değişmez bit ayarlayalım, kök kullanıcının bile silme izni yoktur.

[root@tecmint tecmint]# chattr +i demo/
[root@tecmint tecmint]# chattr +i important_file.conf

Not: Değişmez bit +i yalnızca süper kullanıcı (yani root) kullanıcısı tarafından ayarlanabilir veya sudo ayrıcalıklarına sahip bir kullanıcı tarafından ayarlanabilir. .

Değişmez biti ayarladıktan sonra ‘lsattr’ komutuyla niteliği doğrulayalım.

[root@tecmint tecmint]# lsattr
----i----------- ./demo
----i----------- ./important_file.conf

Şimdi, izinleri zorla silmeye, yeniden adlandırmaya veya değiştirmeye çalıştım, ancak "İşleme izin verilmiyor" yazmasına izin verilmiyor.

[root@tecmint tecmint]# rm -rf demo/
rm: cannot remove âdemo/â: Operation not permitted
[root@tecmint tecmint]# mv demo/ demo_alter
mv: cannot move âdemo/â to âdemo_alterâ: Operation not permitted
[root@tecmint tecmint]# chmod 755 important_file.conf
chmod: changing permissions of âimportant_file.confâ: Operation not permitted

2. Dosyalardaki öznitelik nasıl kaldırılır

Yukarıdaki örnekte, dosyaların yanlışlıkla silinmesini önlemek ve güvenliğini sağlamak için özniteliğin nasıl ayarlanacağını gördük; bu örnekte, izinlerin nasıl sıfırlanacağını (öznitelik ayarının kaldırılacağını) ve < kullanılarak bir dosyanın değiştirilebilir veya değiştirilebilir hale getirilmesine izin verildiğini göreceğiz. Strong>-i işareti.

[root@tecmint tecmint]# chattr -i demo/ important_file.conf

İzinleri sıfırladıktan sonra 'lsattr' komutunu kullanarak dosyaların değişmez durumunu doğrulayın.

[root@tecmint tecmint]# lsattr
---------------- ./demo
---------------- ./important_file.conf

Yukarıdaki sonuçlarda '-i' bayrağının kaldırıldığını görüyorsunuz; bu, tecmint klasöründe bulunan tüm dosya ve klasörleri güvenle kaldırabileceğiniz anlamına gelir.

[root@tecmint tecmint]# rm -rf *

[root@tecmint tecmint]# ls -l
total 0

3. /etc/passwd ve /etc/shadow Dosyalarının Güvenliği Nasıl Sağlanır?

/etc/passwd veya /etc/shadow dosyalarına değişmez öznitelik ayarlamak, bunların yanlışlıkla silinmesine veya kurcalanmasına karşı koruma sağlar ve ayrıca kullanıcı hesabı oluşturulmasını devre dışı bırakır.

[root@tecmint tecmint]# chattr +i /etc/passwd
[root@tecmint tecmint]# chattr +i /etc/shadow

Şimdi yeni bir sistem kullanıcısı oluşturmayı deneyin, '/etc/passwd açılamıyor' diyen hata mesajıyla karşılaşacaksınız.

[root@tecmint tecmint]# useradd tecmint
useradd: cannot open /etc/passwd

Bu şekilde, önemli dosyalarınız veya sistem yapılandırma dosyalarınızda silinmeyi önlemek için değişmez izinler ayarlayabilirsiniz.

4. Dosyadaki mevcut verileri değiştirmeden verileri ekleyin

Diyelim ki, önceden girilmiş verileri değiştirmeden veya düzenlemeden herkesin yalnızca bir dosyaya veri eklemesine izin vermek istiyorsunuz, 'a' özelliğini aşağıdaki gibi kullanabilirsiniz.

[root@tecmint tecmint]# chattr +a example.txt

[root@tecmint tecmint]# lsattr example.txt
-----a---------- example.txt

Ekleme modunu ayarladıktan sonra dosya yalnızca ekleme modunda veri yazmak için açılabilir. Append niteliğinin ayarını aşağıdaki şekilde kaldırabilirsiniz.

[root@tecmint tecmint]# chattr -a example.txt

Şimdi example.txt dosyasındaki mevcut içeriği değiştirmeyi deneyin; "İşleme izin verilmiyor" şeklinde hata mesajı alırsınız.

[root@tecmint tecmint]# echo "replace contain on file." > example.txt
-bash: example.txt: Operation not permitted

Şimdi mevcut bir example.txt dosyasına yeni içerik eklemeyi deneyin ve bunu doğrulayın.

[root@tecmint tecmint]# echo "replace contain on file." >> example.txt
[root@tecmint tecmint]# cat example.txt
Here is the example to test 'a' attribute mean append only.
replace contain on file.

5. Dizinlerin Güvenliği Nasıl Sağlanır?

Dizinin tamamını ve dosyalarını güvence altına almak için, klasörün tam yolu ile birlikte '+i' bayrağıyla birlikte '-R' (özyinelemeli) anahtarını kullanırız.

[root@tecmint tecmint]# chattr -R +i myfolder

Özyinelemeli özniteliği ayarladıktan sonra klasörü ve dosyalarını silmeyi deneyin.

[root@tecmint tecmint]# rm -rf myfolder/
rm: cannot remove 'myfolder/': Operation not permitted

İzni kaldırmak için, klasörün tam yolu ile birlikte '-i' bayrağıyla aynı '-R' (özyinelemeli) anahtarını kullanırız.

[root@tecmint tecmint]# chattr -R -i myfolder

Bu kadar! Chattr komut özellikleri, bayrakları ve seçenekleri hakkında daha fazla bilgi edinmek için man sayfalarını kullanın.