Linux dosyanın silinmesini engelleme kodu

277726

Kilopat
Katılım
3 Eylül 2019
Mesajlar
1.944
Makaleler
4
Çözümler
16
Arkadaşlar KeePassXC için database güvenilir hale getirmeye çalışıyorum. Gizli bir dosya oluşturdum ama bu dosyanın içerisindekilerinin uygulama tarafından okunup değiştirilebilir özellikleri var. Ben sadece silme yetkisini root kullanıcısına vermek istiyorum. Hatta eğer yapılabilirse tüm dosyayı root şifresi ile girmek ve değiştirmek istiyorum. Olabilirse KeePassXC uygulamasını da root yetkisiyle açıp o şekilde kullanmak daha mantıklı olabilir. Hem KeePassXC de oluşturduğum key ve database silinmesi sonucu hesaplarımı kayıp etmemiş olacağım hem de herhangi birisi tarafından hacklendiğim taktirde Linux root şifremi, master key şifremi sırayla kırması gerekecek. Bu şekilde en azından lamerları caydırmış olacağım.
Dosyalarımı .dosyaismi şekilde home klasörüne oluşturdum ve içine database ve key file kaydettim. içindeki dosyaların yetkileri:
1612536711200.png
 
Son düzenleyen: Moderatör:
Herhangi bir dosyayı root izni sayesinde normal kullanıcılar tarafından silinmesini veya değiştirilmesini engelleyebiliyorum. Benim de tam aradığım özellik buydu.
1612541545000.png
 
Herhangi bir dosyayı root izni sayesinde normal kullanıcılar tarafından silinmesini veya değiştirilmesini engelleyebiliyorum. Benim de tam aradığım özellik buydu.

İyi de sizin çekindiğiniz husus, bu dizin altındaki dosyaların ele geçirilmesi sonucu bunlara ulaşılması. Bunun için en etkili yöntem şifrelenmiş dosya oluşturmaktır.

Bahsettiğiniz şekilde kullanıcı hakkı değiştirilmiş bir dizin ya da dosya ele geçirilirse, kolayca içindeki verilere ulaşılabilir. Amacınız sistemdeki diğer kullanıcılardan dosyaları gizlemekse; bu işlem işe yarar, diğer olasılık için işe yaramaz.

Ayrıca komutta eksiklik var, chown root ./dosya komutu sadece dosyanın kullanıcısını değiştirir, dosya/dizin grubuna dokunmaz ve altındaki dizin ve dosyalara bir şey yapmaz. Bunlar, kullanıcının erişebileceği bir grup altındaysa, kullanıcı istediği gibi yazıp çizmeye devam eder. Komutu chown root:root ./dosya şeklinde düzenlerseniz, kullanıcı grubunu da root olarak ayarlarsınız, chown -R root:root ./dosya şeklinde düzenlerseniz dizin ve altındaki tüm dosya ve dizinler root kullanıcısı ve grubu için yetkilendirilmiş olur. Bu da tek başına yeterli olmaz, diğerleri için de dosya ve dizinlerin erişilebilirliğini engellemek gerekir, bu durumda kullanılması gereken komut chmod 770 ./dosya olabilir, alt dosya ve diznleri de değiştirmek isterseniz, komutu -R değişkeni ile çalıştırırsınız.

Amacınız sistemdeki diğer kullanıcıların bu dizin ve dosyalara erişmesin engellemekse, izinleri root olarak ayarlamaya da gerek yok aslında, diğerleri için izni iptal etmeniz daha basit bir işlem olacaktır.

Bütün bunlara rağmen; dizini elde eden birisinin, izinleri değiştirmesi sadece 2 komuta bakar. Bu sebeple şifrelemeye öncelik vermelisiniz.
 
İyi de sizin çekindiğiniz husus, bu dizin altındaki dosyaların ele geçirilmesi sonucu bunlara ulaşılması. Bunun için en etkili yöntem şifrelenmiş dosya oluşturmaktır.

Bahsettiğiniz şekilde kullanıcı hakkı değiştirilmiş bir dizin ya da dosya ele geçirilirse, kolayca içindeki verilere ulaşılabilir. Amacınız sistemdeki diğer kullanıcılardan dosyaları gizlemekse; bu işlem işe yarar, diğer olasılık için işe yaramaz.

Ayrıca komutta eksiklik var, chown root ./dosya komutu sadece dosyanın kullanıcısını değiştirir, dosya/dizin grubuna dokunmaz ve altındaki dizin ve dosyalara bir şey yapmaz. Bunlar, kullanıcının erişebileceği bir grup altındaysa, kullanıcı istediği gibi yazıp çizmeye devam eder. Komutu chown root:root ./dosya şeklinde düzenlerseniz, kullanıcı grubunu da root olarak ayarlarsınız, chown -R root:root ./dosya şeklinde düzenlerseniz dizin ve altındaki tüm dosya ve dizinler root kullanıcısı ve grubu için yetkilendirilmiş olur. Bu da tek başına yeterli olmaz, diğerleri için de dosya ve dizinlerin erişilebilirliğini engellemek gerekir, bu durumda kullanılması gereken komut chmod 770 ./dosya olabilir, alt dosya ve diznleri de değiştirmek isterseniz, komutu -r değişkeni ile çalıştırırsınız.

Amacınız sistemdeki diğer kullanıcıların bu dizin ve dosyalara erişmesin engellemekse, izinleri root olarak ayarlamaya da gerek yok aslında, diğerleri için izni iptal etmeniz daha basit bir işlem olacaktır.

Bütün bunlara rağmen; dizini elde eden birisinin, izinleri değiştirmesi sadece 2 komuta bakar. Bu sebeple şifrelemeye öncelik vermelisiniz.

Ben bu komutla root kullanıcının değiştirmesini veya silmesini sağlamış oluyorum. Yani root olmayan kişiler dosyalarımı silemiyor veya kopyalayamıyor. İçerisindeki dosyalarında değiştirilmesine izin verilmiyor. Yani kod sadece root kullanıcısı yetkisi için yapılmıştır. Herhangi başka bir kullanıcı bu dosyaları veya içerisindekileri silemesin diye.
Bu dosyaları root yetkisiyle yaptığımda şifreme sahip olmadan nasıl değiştirebiliyorlar?
Kullandığım dosyaların kendileri zaten AES-256 Bit şifreleniyor. Benim amacım sadece dosyaların silinmemesini sağlamak. Zaten benim bilgisayarımdan ulaşsalarda AES-256 Bit şifreyi çözmeleri için Master şifremi çözmeleri gerekir ve şifremi çözmeleri yıllar alır. Hem zaten kim benim dosyamla uğraşır ki? Benim amacım bir nebze olsun lamerları geri çevirmek. Zaten sistemime herhangi birisinin bulaşması zor çünkü bilinçli birisi olduğumdan dolayı nelere güvenip güvenmeyeceğimi biliyorum.
Sizin dediğiniz gibi dosyaları şifrelemeyi düşünüyordum ama dosyalarımın kullanıldığı yer KeePassXC, yani database ve Key dosyaları var. Bunlar da şifrelendiğinde uygulama içerisinden nasıl ulaşılır bir bilgim yok.
 
Bu dosyaları root yetkisiyle yaptığımda şifreme sahip olmadan nasıl değiştirebiliyorlar?

chmod erişim haklarını chown ise kullanıcı ve grupları belirler sadece. Bunların dosyaları parola ile koruma gibi şifreleme özellikleri yok. Sisteminize ulaşan yetenekli birisi varsa, sadece kullanıcı değişikliği yapılan dizini istediği gibi kopyalar. Hatta çalışan ortamdan ulaşabilen birisi, istediği gibi dosyaların izinlerini değiştirebilir. Bunu önlemenin yolu ise, şifrelenmiş disk ya da ev dizini kullanmak. Bu da sistem performansından az da olsa feragat anlamına gelir.

Sonuç olarak, eğer bu uygulamaya ait dosyalarınız şifrelenmişse, dosya ve dizin izinleri ile uğraşmanıza gerek yok.
 
Son düzenleme:
Chmod erişim haklarını chownd ise kullanıcı ve grupları belirler sadece. Bunların dosyaları parola ile koruma gibi şifreleme özellikleri yok. Sisteminize ulaşan yetenekli birisi varsa, sadece kullanıcı değişikliği yapılan dizini istediği gibi kopyalar. Hatta çalışan ortamdan ulaşabilen birisi, istediği gibi dosyaların izinlerini değiştirebilir. Bunu önlemenin yolu ise, şifrelenmiş disk ya da ev dizini kullanmak. Bu da sistem performansında az da olsa geragat anlamına gelir.

Sonuç olarak, eğer bu uygulamaya ait dosyalarınız şifrelenmişse, dosya ve dizin izinleri ile uğraşmanıza gerek yok.

O zaman yaptığım ayar sadece belirli kullanıcıların ya da kendimizin yanlışlıkla silmesinden koruyacaktır. Aslında gizli klasör olarak bırakmam da yeterli olacaktır. Bilgilendirme için teşekkürler.
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
bu videodaki şekilde encrypt yaparsam sanırım daha güvenli olacaktır. Hem yedeklediğim USB driver yapabilirim hem de şu an çalıştırdığım Linux sistemde yapabilirim. Ama bu videodakini yaparsam hernhangi bir problem olabilir mi? @OzgunP
 
Son düzenleme:
Ama bu videodakini yaparsam hernhangi bir problem olabilir mi?

Benim ev dizinim şifreli değil, ama genel amaçlı olarak şifrelenmiş bir disk bölümü kullanıyorum. E-posta vb. özel yazılımların verilerini bu disk bölümünde tutuyorum. İhtiyacım olunca parola ile erişip bu bölümü bağlıyorum. Bu şifrelenmiş dizin altındaki profilleri kullanmak için, uygulamaları bunlarla çalıştıracak betikler hazırladım. Bunları çalıştırınca, istediğim belirli uygulamalar şifrelenmiş disk bölümü altındaki profiller ile çalışıyor.

Örneğin bunu KeePassXC için aşağıdaki şekilde yapabilirsin. Oluşturabileceğin şifrelenmiş disk bölümünün altında, gizli bir keepassxc dizini oluştur, dizinin başına . eklersen gizli olur. Sonra .kdbx uzantılı dosyayı bu dizine taşı ya da yeni bir veritabanı oluştur. Sonra şifrelenmiş disk bölümünün ana dizini altında bir boş dosya oluştur. Bu dosyanın içini aşağıdaki şekilde düzenle ve kaydet, sonra çalıştırma izni ver. Aşağıdaki betikte parola-dosyası.kdbx kısmını kendi veritabanı dosyana göre değiştireceksin.

Kod:
#!/bin/bash
keepassxc --keyfile ./$(pwd)/.keepassxc/parola-dosyası.kdbx

Bu şekilde dosyaya çift tıklayınca, KeePassXC oluşturduğun parola dosyası ile açılacaktır.

Son olarak Diskler uygulaması ile kolayca şifrelenmiş disk bölümü oluşturabilirsin. Bunun için öncesinde ayrı bir disk bölümü oluşturman gerek tabii ki.

Peki bu ne işe yarar, sistem ev dizi ya da tüm disk bölümü şifrelenmediği için performans kaybı yaşatmaz. Şifrelenmiş disk bölümünü sadece gerekli olduğunda açarsın. Sisteminde birden fazla dağıtım varsa, ortak olarak kullanabilirsin.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı