Giriş
Linux sistemlerinde geçici dosyalar (temporary files) genellikle /tmp dizini altında saklanır. Ancak çok kullanıcılı sunucularda tüm kullanıcıların aynı /tmp dizinini kullanması bazı güvenlik, performans ve yönetim sorunlarına yol açabilir.
Özellikle RHEL tabanlı sistemlerde (Red Hat Enterprise Linux, AlmaLinux, Rocky Linux, Oracle Linux ve CentOS Stream) her kullanıcı için ayrı bir TEMP dizini oluşturmak daha güvenli ve yönetilebilir bir yapı sağlar.
Bu makalede kullanıcı bazlı TEMP dizini oluşturmayı, ortam değişkenlerini yapılandırmayı ve kullanıcı oturumu kapandığında bu dizinlerin otomatik olarak temizlenmesini öğreneceksiniz.
Neden Her Kullanıcı İçin Ayrı TEMP Dizini Kullanılmalıdır?
Varsayılan olarak birçok uygulama geçici dosyalarını aşağıdaki dizinde oluşturur:
/tmp
Çok kullanıcılı sistemlerde bu yaklaşım bazı sorunlara neden olabilir:
- Kullanıcıların geçici dosyalarının birbirine karışması
- Güvenlik riskleri
- Disk alanının gereksiz dolması
- Geçici dosyaların takibini zorlaştırması
- Uygulama çakışmaları
Bu nedenle her kullanıcı için ayrı TEMP dizini kullanılması tavsiye edilir.
Örneğin:
/home/user1/tmp
/home/user2/tmp
/home/user3/tmp
Linux’ta TEMP Değişkenleri
Linux sistemlerinde uygulamalar genellikle aşağıdaki değişkenleri kullanır:
TMP
TEMP
TMPDIR
Kontrol etmek için:
echo $TMPDIR
echo $TMP
echo $TEMP
Çoğu sistemde herhangi bir çıktı alınmaz ve uygulamalar doğrudan /tmp dizinini kullanır.
Kullanıcıya Özel TEMP Dizini Oluşturma
Örnek olarak “ahmet” kullanıcısı için bir TEMP alanı oluşturalım.
mkdir -p /home/ahmet/tmp
Dizin sahipliğini ayarlayın:
chown ahmet:ahmet /home/ahmet/tmp
Yetkileri düzenleyin:
chmod 700 /home/ahmet/tmp
Bu yapı sayesinde yalnızca ilgili kullanıcı kendi TEMP klasörüne erişebilir.
Kullanıcı Oturumunda TMPDIR Değişkenini Tanımlama
Kullanıcının giriş yaptığında otomatik olarak kendi TEMP alanını kullanması için .bashrc dosyasına aşağıdaki satırları ekleyin:
nano /home/ahmet/.bashrc
Dosyanın sonuna ekleyin:
export TMPDIR=/home/ahmet/tmp
export TEMP=/home/ahmet/tmp
export TMP=/home/ahmet/tmp
Dosyayı kaydedin.
Yeni oturum açıldığında değişiklik aktif olacaktır.
Tüm Kullanıcılar İçin Otomatik TEMP Dizinleri Oluşturma
Kurumsal sistemlerde kullanıcı sayısı fazla olduğundan her kullanıcı için manuel işlem yapmak yerine merkezi yapılandırma tercih edilir.
Örneğin:
nano /etc/profile.d/user-temp.sh
İçerik:
export TMPDIR=$HOME/tmp
export TEMP=$HOME/tmp
export TMP=$HOME/tmp
if [ ! -d "$HOME/tmp" ]; then
mkdir -p "$HOME/tmp"
chmod 700 "$HOME/tmp"
fi
Dosyaya çalıştırma izni verin:
chmod +x /etc/profile.d/user-temp.sh
Bundan sonra sisteme giriş yapan her kullanıcı otomatik olarak kendi TEMP dizinine sahip olacaktır.
Yapılandırmayı Test Etme
Oturumu kapatıp tekrar giriş yaptıktan sonra:
echo $TMPDIR
Örnek çıktı:
/home/ahmet/tmp
Geçici dosya oluşturmayı test edin:
touch $TMPDIR/test.tmp
Kontrol edin:
ls -l $TMPDIR
Güvenlik Açısından Avantajları
Kullanıcı bazlı TEMP dizinleri aşağıdaki avantajları sağlar:
- Kullanıcı izolasyonu
- Yetkisiz erişimlerin önlenmesi
- Daha kolay log ve dosya yönetimi
- Daha temiz çalışma ortamı
- Uygulama çakışmalarının azaltılması
Özellikle paylaşımlı sunucularda ve terminal sunucularında önerilen bir yöntemdir.
Kullanıcı Çıkış Yaptığında TEMP Klasörünü Otomatik Temizleme
Birçok sistem yöneticisi kullanıcı oturumu kapandığında TEMP klasörünün otomatik temizlenmesini ister.
Bunun için kullanıcı logout işlemi sırasında çalışan .bash_logout dosyası kullanılabilir.
Dosyayı oluşturun veya düzenleyin:
nano ~/.bash_logout
İçerisine aşağıdaki satırı ekleyin:
rm -rf ~/tmp/*
Kaydedin ve çıkın.
Artık kullanıcı terminal oturumunu kapattığında TEMP klasöründeki dosyalar otomatik olarak silinecektir.
Daha Güvenli Temizleme Yöntemi
Bazı yöneticiler dizinin kendisini değil yalnızca içeriğini temizlemeyi tercih eder.
Örnek:
find ~/tmp -type f -delete
veya
find ~/tmp -mindepth 1 -delete
Bu yöntem dizini korurken içerisindeki dosyaları temizler.
Systemd ile Otomatik Temizlik
Modern RHEL sistemlerinde systemd-tmpfiles kullanılarak belirli süre sonunda TEMP dizinleri otomatik temizlenebilir.
Örnek yapılandırma:
nano /etc/tmpfiles.d/user-temp.conf
İçerik:
D /home/*/tmp 0700 root root 1d
Bu yapılandırma 1 günden eski geçici dosyaların temizlenmesini sağlar.
Yapılandırmayı uygulamak için:
systemd-tmpfiles --clean
Sonuç
RHEL tabanlı Linux sistemlerde her kullanıcıya özel TEMP dizini tanımlamak hem güvenlik hem de yönetilebilirlik açısından önemli avantajlar sağlar. TMPDIR, TEMP ve TMP değişkenlerinin kullanıcı bazında ayarlanması sayesinde uygulamalar otomatik olarak kullanıcıya ait geçici dizinleri kullanır.
Ek olarak .bash_logout veya systemd-tmpfiles kullanılarak kullanıcı çıkış yaptığında veya belirli süre sonunda TEMP klasörlerinin otomatik temizlenmesi sağlanabilir. Bu yaklaşım özellikle çok kullanıcılı sunucularda daha temiz, güvenli ve performanslı bir çalışma ortamı oluşturur.
