Pardus Linux’ta /etc/profile.d/ Dizini Ortam Değişkenleri ve Oturum Başlangıç Betikleri


1. /etc/profile.d/ Nedir?

/etc/profile.d/ dizini, kullanıcı oturumu açılırken otomatik çalıştırılan kabuk (shell) betiklerinin bulunduğu dizindir.

Bu dizindeki dosyalar:

  • Sistem genelidir (tüm kullanıcılar için geçerlidir)

  • Login shell açıldığında otomatik yüklenir

  • Ortam değişkenleri (environment variables) tanımlamak için kullanılır

  • Alias, PATH, LANG, EDITOR gibi ayarları merkezi olarak yönetmeyi sağlar

📌 Pardus (Debian tabanlı) sistemlerde /etc/profile dosyası çalışırken bu dizini otomatik olarak tarar.


2. /etc/profile.d/ Ne Zaman Çalışır?

Aşağıdaki durumlarda çalışır:

  • Grafik arayüzden ilk girişte

  • TTY (Ctrl+Alt+F1…) ile girişte

  • SSH ile girişte

  • bash --login komutu ile

Çalışmaz:

  • su (login olmayan)

  • bash (non-login shell)


3. Çalışma Mantığı

/etc/profile └── source /etc/profile.d/*.sh

Yani:

  • Sadece .sh uzantılı dosyalar

  • Okunabilir (chmod +r)

  • Hata içermeyen betikler

yüklenir.


4. /etc/profile.d/ ile Neler Yapılır?

✔ Ortam Değişkenleri

  • PATH

  • JAVA_HOME

  • ANDROID_HOME

  • EDITOR

  • LANG / LC_ALL

✔ Alias Tanımları

  • ll

  • cls

  • grep renkli çıktı

✔ Öğrenci–Öğretmen Ayrımı

  • Grup bazlı değişkenler

  • Zaman veya yetki kısıtları

✔ Eğitim Ortamları

  • Python / Java / Kotlin ayarları

  • SDK yolları

  • Okul projelerine özel değişkenler


5. Basit Bir Örnek

Örnek 1: Ortak PATH Tanımı

📄 /etc/profile.d/okul-path.sh

#!/bin/bash export PATH="$PATH:/opt/okul/bin"

🔹 Tüm kullanıcılar için geçerli
🔹 Sistem yeniden başlatılmadan yeni girişte aktif olur


6. Alias Tanımı Örneği

📄 /etc/profile.d/aliaslar.sh

#!/bin/bash alias ll='ls -alF' alias cls='clear' alias gs='git status'

📌 Öğrenciler için terminal kullanımını kolaylaştırır.


7. Öğretmen – Öğrenci Ayrımı (TSOMTAL Örneği)

Varsayım:

  • Öğretmen grubu: teachers

  • Öğrenci grubu: students

📄 /etc/profile.d/rol-bazli.sh

#!/bin/bash if id -nG "$USER" | grep -qw teachers; then export EDITOR=nano export PATH="$PATH:/usr/local/teacher-tools" fi if id -nG "$USER" | grep -qw students; then export EDITOR=vim export PATH="$PATH:/usr/local/student-tools" fi

🎯 Merkezi rol yönetimi
🎯 Samba AD + Pardus entegrasyonuna uygundur


8. Ders Ortamları İçin Örnekler

Python Eğitim Ortamı

📄 /etc/profile.d/python-egitim.sh

#!/bin/bash export PYTHONWARNINGS=ignore export PYTHONUNBUFFERED=1

Java / Kotlin (Mobil Uygulamalar)

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 export PATH="$PATH:$JAVA_HOME/bin"

9. Grafik Ortam Uyarısı (ETAP 23)

📌 /etc/profile.d/ betikleri ilk girişte çalışır.
Grafik ortamda bazen .bashrc ile karışabilir.

📌 GUI için:

  • /etc/environment

  • /etc/security/pam_env.conf

ile birlikte düşünülmelidir.


10. Güvenlik ve En İyi Uygulamalar

✅ Her dosya .sh uzantılı olsun
✅ Karmaşık scriptleri burada yazmayın
✅ Root yetkisi gerektiren komutlar koymayın
rm, shutdown, reboot gibi komutlar kullanmayın

📌 /etc/profile.d/ortam ayarları içindir, servis değildir


11. Test Etme

source /etc/profile

veya

bash --login

Aktif ortam değişkenleri:

env | grep OKUL

12. /etc/profile.d/ – Diğer Dizilerle Karşılaştırma

DizinAmaç
/etc/profile.d/Sistem geneli login ayarları
~/.bashrcKullanıcı özel
/etc/environmentGUI dahil sabit değişkenler
/etc/security/Limitler & güvenlik
/etc/pam.d/Oturum kontrolü

13. Okul Ortamları İçin Özet

🎓 TSOMTAL / ETAP 23 için ideal kullanım:

  • Öğretmen–öğrenci farkı

  • Ders bazlı ortamlar

  • Terminal standardizasyonu

  • Merkezi ve güvenli yapı


Aşağıdaki şablon TSOMTAL için “tak-çalıştır” mantığında hazırlanmış bir /etc/profile.d/ paket taslağıdır:

  • Samba AD grup bazlı (teachers / students / itadmins vb.) otomatik yükleme

  • ETAP 23 grafik oturum uyumlu (GUI’da da değişkenlerin görünmesi)

  • ✅ Yönetilebilir, log’lu, çakışma önleyici yapı

Not: Bu yapı SSSD veya Winbind ile domaine katılmış istemcilerde çalışır. Grup kontrolünü id -nG ile yapıyoruz (en uyumlusu).


1) Paket Dizini (Önerilen)

Makinenizde bir klasör açın:

mkdir -p tsomtal-profile-pack/{etc/profile.d,etc/environment.d,etc/X11/Xsession.d,usr/local/sbin,var/log/tsomtal-profile}

Ağaç şöyle olacak:

tsomtal-profile-pack/ ├─ etc/ │ ├─ profile.d/ │ │ ├─ 00-tsomtal-common.sh │ │ ├─ 10-tsomtal-ad-groups.sh │ │ ├─ 20-tsomtal-teachers.sh │ │ ├─ 20-tsomtal-students.sh │ │ └─ 90-tsomtal-debug.sh │ ├─ environment.d/ │ │ └─ 10-tsomtal.conf │ └─ X11/ │ └─ Xsession.d/ │ └─ 10tsomtal-environment ├─ usr/ │ └─ local/ │ └─ sbin/ │ └─ tsomtal-env-apply └─ var/ └─ log/ └─ tsomtal-profile/

2) ETAP 23 Grafik Oturum Uyumu (En kritik bölüm)

A) GUI için “kalıcı” değişkenler: /etc/environment.d/10-tsomtal.conf

📄 tsomtal-profile-pack/etc/environment.d/10-tsomtal.conf

# TSOMTAL - GUI dahil tüm oturumlar (systemd + PAM + desktop) TSOMTAL_SCHOOL=TSOMTAL TSOMTAL_DOMAIN=tsomtal.com TSOMTAL_ROLE=unknown TSOMTAL_LABS_ROOT=/opt/tsomtal EDITOR=nano

Bu dosya GUI’da da etkilidir. (Modern Debian/Pardus’ta en temiz yöntem)

B) Xsession ile garanti yükleme: /etc/X11/Xsession.d/10tsomtal-environment

📄 tsomtal-profile-pack/etc/X11/Xsession.d/10tsomtal-environment

#!/bin/sh # TSOMTAL - X/GUI oturumlarında environment.d değişkenlerini garanti altına alır if [ -d /etc/environment.d ]; then for f in /etc/environment.d/*.conf; do [ -r "$f" ] || continue # KEY=VALUE satırlarını export et while IFS= read -r line; do case "$line" in ""|\#*) continue ;; esac key="${line%%=*}" val="${line#*=}" # boş key engeli [ -n "$key" ] && export "$key=$val" done < "$f" done fi exit 0
chmod +x tsomtal-profile-pack/etc/X11/Xsession.d/10tsomtal-environment

3) /etc/profile.d/ Dosyaları

3.1 Ortak çekirdek: 00-tsomtal-common.sh

📄 tsomtal-profile-pack/etc/profile.d/00-tsomtal-common.sh

#!/bin/bash # TSOMTAL - ortak ayarlar (login shell) # log fonksiyonu _tslog() { local msg="$1" mkdir -p /var/log/tsomtal-profile 2>/dev/null printf '%s %s\n' "$(date '+%F %T')" "$msg" >> /var/log/tsomtal-profile/profile.log 2>/dev/null } export TSOMTAL_SCHOOL="${TSOMTAL_SCHOOL:-TSOMTAL}" export TSOMTAL_DOMAIN="${TSOMTAL_DOMAIN:-tsomtal.com}" export TSOMTAL_LABS_ROOT="${TSOMTAL_LABS_ROOT:-/opt/tsomtal}" # PATH güvenli ekleme (tekrarsız) _path_add() { case ":$PATH:" in *":$1:"*) : ;; *) PATH="$PATH:$1" ;; esac } [ -d "$TSOMTAL_LABS_ROOT/bin" ] && _path_add "$TSOMTAL_LABS_ROOT/bin" export PATH # terminal kalitesi (öğrenci lab ortamı için) export HISTCONTROL=ignoredups:erasedups export HISTSIZE=3000 export HISTFILESIZE=6000 _tslog "common loaded for user=$USER shell=$SHELL"

3.2 Samba AD Grup tespiti (tek yerde): 10-tsomtal-ad-groups.sh

📄 tsomtal-profile-pack/etc/profile.d/10-tsomtal-ad-groups.sh

#!/bin/bash # TSOMTAL - Samba AD grup bazlı rol tespiti _in_group() { id -nG "$USER" 2>/dev/null | tr ' ' '\n' | grep -qx "$1"; } # Okul standardı grup isimleri (Samba AD'de bu isimlerle oluşturmanız önerilir) # teachers, students, itadmins, okul_yonetim gibi… if _in_group "itadmins"; then export TSOMTAL_ROLE="itadmin" elif _in_group "teachers"; then export TSOMTAL_ROLE="teacher" elif _in_group "students"; then export TSOMTAL_ROLE="student" else export TSOMTAL_ROLE="${TSOMTAL_ROLE:-unknown}" fi export TSOMTAL_ROLE

3.3 Öğretmen politikası: 20-tsomtal-teachers.sh

📄 tsomtal-profile-pack/etc/profile.d/20-tsomtal-teachers.sh

#!/bin/bash # TSOMTAL - öğretmen ayarları [ "$TSOMTAL_ROLE" = "teacher" ] || [ "$TSOMTAL_ROLE" = "itadmin" ] || return 0 # öğretmen araçları if [ -d /usr/local/teacher-tools/bin ]; then case ":$PATH:" in *":/usr/local/teacher-tools/bin:"*) ;; *) PATH="$PATH:/usr/local/teacher-tools/bin";; esac export PATH fi # kalite export EDITOR="${EDITOR:-nano}" alias ll='ls -alF --color=auto' alias dfh='df -h'

3.4 Öğrenci politikası: 20-tsomtal-students.sh

📄 tsomtal-profile-pack/etc/profile.d/20-tsomtal-students.sh

#!/bin/bash # TSOMTAL - öğrenci ayarları [ "$TSOMTAL_ROLE" = "student" ] || return 0 # öğrencide daha sade PATH if [ -d /usr/local/student-tools/bin ]; then case ":$PATH:" in *":/usr/local/student-tools/bin:"*) ;; *) PATH="$PATH:/usr/local/student-tools/bin";; esac export PATH fi export EDITOR="${EDITOR:-nano}" alias ll='ls -alF --color=auto' # örnek: öğrenci için bazı değişkenler export TSOMTAL_LAB_MODE="restricted"

3.5 Hata ayıklama (opsiyonel): 90-tsomtal-debug.sh

📄 tsomtal-profile-pack/etc/profile.d/90-tsomtal-debug.sh

#!/bin/bash # TSOMTAL - debug (isterseniz kapatın) [ -n "$TSOMTAL_DEBUG" ] || return 0 echo "[TSOMTAL] user=$USER role=$TSOMTAL_ROLE domain=$TSOMTAL_DOMAIN"

4) “GUI + Terminal aynı olsun” uygulama aracı (Opsiyonel ama faydalı)

📄 tsomtal-profile-pack/usr/local/sbin/tsomtal-env-apply

#!/bin/bash # TSOMTAL - kullanıcı oturumunda environment'ı tazele # Kullanım: tsomtal-env-apply set -e echo "TSOMTAL_SCHOOL=$TSOMTAL_SCHOOL" echo "TSOMTAL_DOMAIN=$TSOMTAL_DOMAIN" echo "TSOMTAL_ROLE=$TSOMTAL_ROLE" echo "TSOMTAL_LABS_ROOT=$TSOMTAL_LABS_ROOT"
chmod +x tsomtal-profile-pack/usr/local/sbin/tsomtal-env-apply

5) Kurulum (Hızlı Kurulum)

Bu şablonu hedef ETAP 23 istemcide kurmak için:

sudo rsync -a tsomtal-profile-pack/ / sudo chmod +x /etc/profile.d/*.sh

Çıkış-giriş yapın (veya test):

bash --login echo $TSOMTAL_ROLE

GUI test (oturum açıkken terminalde):

env | grep TSOMTAL

6) Samba AD Tarafında Grup Standardı (Öneri)

Samba AD üzerinde şu grupları standartlaştırın:

  • teachers

  • students

  • itadmins

  • (opsiyonel) okul_yonetim, lab11a, lab10b vb.

Linux istemcide doğrulama:

id -nG kullaniciadi getent group teachers

Yorumlar

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Başlangıç Onarma