Linux’ta Her Kullanıcıya Ayrı TEMP Klasörü Tanımlama

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.

Scroll to Top