إتقان لينكس: 6 اختراقات أساسية للمتغيرات البيئية!

CCNA 200-301

CCNA 200-301

CCNP Enterprise

CCNP Enterprise

CCNP Security

CCNP Security

CCIE Enterprise Lab

CCIE Enterprise Lab

CCIE Security Lab

CCIE Security Lab

CCNP Service Provider

CCNP Service Provider

CCNP Data Center

CCNP Data Center

CCNP Collaboration

CCNP Collaboration

CCIE DC Lab

CCIE DC Lab

ic_r
ic_l
إتقان لينكس: 6 اختراقات أساسية للمتغيرات البيئية!
images

تكوين متغيرات بيئة Linux

أثناء تخصيص تثبيتات البرامج، تنشأ الحاجة المتكررة إلى إعداد متغيرات البيئة. فيما يلي عدد من الطرق المتنوعة لتكوين متغيرات البيئة.

مثال:

  • نظام التشغيل: أوبونتو 14.0
  • اسم المستخدم: spoto
  • المسار لتكوين متغيرات بيئة MySQL: /home/spoto/mysql/bin

الوصول إلى متغيرات البيئة في لينكس

لاسترجاع متغيرات البيئة، استخدم الطرق التالية:

  • استخدم الأمر "تصدير" لإظهار كافة متغيرات البيئة المحددة بواسطة النظام.
  • استخدم الأمر 'echo $PATH' لعرض القيمة الحالية لمتغير بيئة PATH.

يؤدي تنفيذ هذه الأوامر إلى النتائج التالية:

spoto:~export
declare -x HOME="/home/spoto"
declare -x LANG="en_US.UTF-8"
declare -x LANGUAGE="en_US:"
declare -x LESSCLOSE="/usr/bin/lesspipe %s %s"
declare -x LESSOPEN="| /usr/bin/lesspipe %s"
declare -x LOGNAME="spoto"
declare -x MAIL="/var/mail/spoto"
declare -x PATH="/home/spoto/bin:/home/spoto/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm"
declare -x USER="spoto"

spoto:~ echo $PATH
/home/spoto/bin:/home/spoto/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

يحدد متغير PATH مسارات البحث لتنفيذ الأوامر. ويفصل بين المسارات المختلفة باستخدام النقطتين (:)، وعند تعريفه باستخدام export، قد يتم تضمين علامات الاقتباس المزدوجة أو قد لا يتم تضمينها.

طريقة تكوين متغير بيئة Linux 1: تصدير PATH

قم بتعديل قيمة PATH مباشرةً باستخدام أمر التصدير. فيما يلي طريقة تكوين MySQL لإدخال متغير البيئة:

export PATH=/home/spoto/mysql/bin:PATH

# Or put the PATH in the front.
export PATH=PATH:/home/spoto/mysql/bin

ملحوظات:

  • وقت التفعيل: فوري
  • فترة الصلاحية: تنطبق على جلسة المحطة الحالية؛ تصبح غير صالحة بعد إغلاق النافذة
  • نطاق التطبيق: ساري المفعول حصريًا للمستخدم الحالي
  • أثناء تكوين متغيرات البيئة، من المهم تضمين الإعدادات الأصلية، وخاصةً جزء $PATH، لمنع الكتابة فوق التكوينات الموجودة.

طريقة تكوين متغير بيئة Linux 2: vim ~/.bashrc

قم بالتكوين عن طريق تعديل الملف ~/.bashrc الموجود في دليل المستخدم:

vim ~/.bashrc

# Add this to the last line
export PATH=$PATH:/home/spoto/mysql/bin

ملحوظات:

  • وقت التنشيط: يصبح ساري المفعول عند فتح محطة طرفية جديدة باستخدام نفس المستخدم أو الحصول عليها يدويًا باستخدام 'source ~/.bashrc.'
  • مدة التأثير: سارية المفعول بشكل دائم
  • نطاق التطبيق: ينطبق فقط على المستخدم الحالي
  • إذا تجاوزت ملفات تحميل متغيرات البيئة اللاحقة تعريف PATH، فقد لا يسري هذا التأثير.

طريقة تكوين متغير بيئة Linux 3: vim ~/.bash_profile

على غرار تعديل ملف ~/.bashrc، أضف المسار الجديد في نهاية الملف:

vim ~/.bash_profile

# Add this to the last line
export PATH=$PATH:/home/spoto/mysql/bin

ملحوظات:

  • وقت التنشيط: يصبح ساري المفعول عند فتح محطة طرفية جديدة باستخدام نفس المستخدم أو الحصول عليها يدويًا باستخدام 'source ~/.bash_profile.'
  • مدة التأثير: سارية المفعول بشكل دائم
  • نطاق التطبيق: ينطبق فقط على المستخدم الحالي
  • إذا لم يكن هناك ملف ~/.bash_profile، فيمكنك تحرير الملف ~/.profile أو إنشاء ملف جديد.

طريقة تكوين متغيرات بيئة Linux 4: vim /etc/bashrc

تتضمن هذه الطريقة تعديل تكوينات النظام وتتطلب امتيازات المسؤول (مثل الجذر) أو أذونات الكتابة للملف:

# If the /etc/bashrc file is not editable, it needs to be modified to be editable.
chmod -v u+w /etc/bashrc

vim /etc/bashrc

# Add this to the last line
export PATH=$PATH:/home/spoto/mysql/bin

ملحوظات:

  • وقت التنشيط: يصبح ساري المفعول عند فتح محطة طرفية جديدة أو الحصول يدويًا على /etc/bashrc.
  • مدة التأثير: سارية المفعول بشكل دائم
  • نطاق التطبيق: فعال لجميع المستخدمين

طريقة تكوين متغير بيئة Linux 5: vim /etc/profile

تتضمن هذه الطريقة تعديل تكوينات النظام وتتطلب امتيازات المسؤول أو أذونات الكتابة للملف، على غرار vim /etc/bashrc:

# If the /etc/profile file is not editable, it needs to be modified to be editable.
chmod -v u+w /etc/profile

vim /etc/profile

# Add this to the last line
export PATH=$PATH:/home/spoto/mysql/bin

ملحوظات:

  • وقت التنشيط: يصبح ساري المفعول عند فتح محطة طرفية جديدة أو الحصول يدويًا على /etc/profile.
  • مدة التأثير: سارية المفعول بشكل دائم
  • نطاق التطبيق: فعال لجميع المستخدمين

طريقة تكوين متغيرات بيئة Linux 6: vim /etc/environment

تتضمن هذه الطريقة تعديل ملف تكوين بيئة النظام وتتطلب امتيازات المسؤول أو أذونات الكتابة للملف:

# If the /etc/bashrc file is not editable, it needs to be modified to be editable.
chmod -v u+w /etc/environment

vim /etc/profile

# Add this to the last line
export PATH=$PATH:/home/spoto/mysql/bin

ملحوظات:

  • وقت التنشيط: يصبح ساري المفعول عند فتح محطة طرفية جديدة أو الحصول يدويًا على /etc/environment.
  • مدة التأثير: سارية المفعول بشكل دائم
  • نطاق التطبيق: فعال لجميع المستخدمين

تحليل آلية تحميل متغيرات بيئة Linux

تم توضيح طرق التكوين المختلفة لمتغيرات البيئة أعلاه. كيف يقوم Linux بتحميل هذه التكوينات، وبأي ترتيب؟

يمكن أن تؤدي تسلسلات التحميل المحددة إلى تجاوز أو عدم فعالية تعريفات المتغيرات البيئية ذات الأسماء المتطابقة.

تصنيف المتغيرات البيئية

يمكن تصنيف متغيرات البيئة على نطاق واسع إلى متغيرات بيئة محددة من قبل المستخدم ومتغيرات بيئة على مستوى النظام.

  • ملفات تعريف متغيرات البيئة على مستوى المستخدم: ~/.bashrc، ~/.profile (على بعض الأنظمة: ~/.bash_profile)
  • ملفات تعريف متغيرات البيئة على مستوى النظام: /etc/bashrc، /etc/profile (على بعض الأنظمة: /etc/bash_profile)، /etc/environment

طريقة اختبار ترتيب تحميل متغيرات بيئة Linux

لاختبار ترتيب تحميل متغيرات البيئة في ملفات مختلفة، سنقوم بتعريف متغير البيئة UU_ORDER في بداية كل ملف تعريف متغير بيئة. ستكون قيمة هذا المتغير عبارة عن تسلسل قيمته الخاصة مع اسم الملف الحالي. الملفات التي سيتم تعديلها هي كما يلي:

  • /إلخ/البيئة
  • /إلخ/الملف الشخصي
  • /etc/bash.bashrc
  • /etc/profile.d/test.sh
  • ~/.الملف الشخصي
  • ~/.bashrc

أضف الكود التالي كسطر أول في كل ملف، ثم اضبط المحتوى بعد النقطتين إلى الاسم المطلق للملف الحالي وفقًا لذلك.

export UU_ORDER= " $UU_ORDER :~/.bash_profile"

بعد إجراء التعديلات، احفظ التغييرات. افتح نافذة طرفية جديدة ولاحظ قيمة المتغير من خلال تنفيذ الأمر 'echo $UU_ORDER':

spoto:~echoUU_ORDER
$ UU_ORDER:/etc/environment:/etc/profile:/etc/bash.bashrc:/etc/profile.d/test.sh:~/.profile:~/.bashrc

يمكن استنتاج تسلسل تحميل متغيرات البيئة في Linux على النحو التالي:

  1. /إلخ/البيئة
  2. /إلخ/الملف الشخصي
  3. /etc/bash.bashrc
  4. /etc/profile.d/test.sh
  5. ~/.الملف الشخصي
  6. ~/.bashrc

شرح مفصل لتحميل ملفات متغيرات بيئة Linux

من الاختبار أعلاه، من الواضح أن Linux يقوم بتحميل متغيرات البيئة بالترتيب التالي:

  • متغيرات بيئة النظام -> متغيرات البيئة المحددة من قبل المستخدم
  • /etc/البيئة -> /etc/profile -> ~/.profile

عند فتح ملف /etc/profile، ستلاحظ أنه يقوم بتحميل ملف /etc/bash.bashrc. ثم يقوم بفحص وتحميل ملفات .sh في الدليل /etc/profile.d/.

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "PS1" ]; then
if [ "BASH" ] && [ "BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1=' '
fi
fi
fi

if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r i ]; then
.i
fi
done
unset i
fi

وبعد ذلك، عند فحص ملف ~/.profile، يصبح من الواضح أن هذا الملف يتضمن تحميل ملف ~/.bashrc.

# if running bash
if [ -n "BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "HOME/.bashrc" ]; then
. "HOME/.bashrc"
fi
fi

# set PATH so it includes user 's private bin directories
PATH="HOME/bin:HOME/.local/bin:PATH"

نصائح

يمكنك تخصيص ملف متغير بيئي، مثل تعريف "spoto.profile" ضمن مشروع معين. في هذا الملف، استخدم "export" لتعريف سلسلة من المتغيرات. ثم أضف "source spoto.profile" في نهاية ملف ~/.profile. يتيح لك هذا الوصول إلى مجموعة المتغيرات التي قمت بتحديدها شخصيًا في نصوص Shell في كل مرة تقوم فيها بتسجيل الدخول.

بدلاً من ذلك، يمكنك استخدام الأمر "alias" لتحديد أسماء مستعارة لأوامر معينة. على سبيل المثال، "alias rm="rm -i" (يجب استخدام علامتي الاقتباس المزدوجتين). يضمن دمج هذا الكود في ~/.profile أنه في كل مرة تستخدم فيها الأمر "rm"، فإنه ينفذ الأمر "rm -i" بشكل أساسي، مما يوفر حلاً ملائمًا وفعالًا.