مقدمه
در دنیای امروز، تسلط بر خط فرمان لینوکس دیگر یک مهارت اختیاری نیست؛ بلکه بهعنوان سنگبنای فعالیتهای حرفهای در حوزههای شبکه، امنیت سایبری، DevOps و مدیریت سرور شناخته میشود. این مقاله با هدف ارائه یک مرجع جامع و عملی برای دانشجویان سطح متوسط تا پیشرفته تدوین شده است. در هر فصل، پس از معرفی دستورات پایه و ساختار کلی، مثالهای واقعی و تمرینهای کوتاه ارائه میشود تا یادگیری صرفاً تئوریک نباشد و توانایی بهکارگیری در شرایط واقعی را نیز تقویت کند.
فهرست مطالب
فصل اول: مبانی شل و مدیریت پوسته
فصل دوم: مدیریت فایل و دایرکتوری
فصل سوم: مجوزها، مالکیت و امنیت فایل
فصل چهارم: پردازش متن و ابزارهای خط لوله
فصل پنجم: مدیریت بسته و بهروزرسانی
فصل ششم: شبکه و عیبیابی ارتباطات
فصل هفتم: سرویسها و مدیریت سیستم
فصل هشتم: اسکریپتنویسی با Bash
فصل نهم: ابزارهای امنیتی اصلی
فصل دهم: پیکربندی فایروال و iptables/nftables
فصل اول: مبانی شل و مدیریت پوسته
1.1 ساختار کلی شل
توضیح تفاوتهای اصلی Bash، Zsh و Fish
فایلهای پیکربندی (
~/.bashrc،~/.profile)نحوه بارگذاری تنظیمات و تفاوت Login vs Non-login Shell
1.2 متغیرها و محیط
تعریف و نمایش متغیر (
VAR=value،echo $VAR)متغیرهای محیطی مهم (
PATH،HOME،SHELL)پایداری متغیر با
exportو ذخیره در فایلهای شل
1.3 History و مدیریت دستورات
فهرست دستورات قبلی (
history)جستجوی تعاملی در History (
Ctrl+R)ترفندهای تکرار دستور (
!n،!grep)
تمرین
متغیر
MYNAMEرا تعریف کرده و مقدارش را در فایل~/.bashrcذخیره کنید.با استفاده از History، پنجمین دستور قبلی را اجرا کنید.
فصل دوم: مدیریت فایل و دایرکتوری
2.1 فهرست و ناوبری
lsبا گزینههای-l,-a,-h,--colorتغییر دایرکتوری با
cdو برگشت سریع (cd -)نمایش مسیر جاری با
pwd
2.2 ایجاد، حذف و جابجایی
mkdir -pبرای ایجاد چند لایه پوشهtouchبرای ساخت فایل خالیcpوmvبا گزینههای-r,-i,-vحذف ایمن با
rm -i, حذف پوشه باrm -rf(مواظب باشید!)
2.3 فشردهسازی و آرشیو
tar czfوtar xzfzipوunzipتفاوت فرمتهای gz, bz2, xz
مثال عملی
bash
mkdir -p ~/backup/{docs,configs,logs} tar czf ~/backup/docs_$(date +%F).tar.gz ~/Documents
تمرین
دایرکتوری
projectرا در مسیر خانه بسازید، سه فایل خالی در آن ایجاد کنید، سپس همه را در یک آرشیوtar.bz2فشرده کنید.آرشیو را در پوشهی
~/restoreبازکنید.
فصل سوم: مجوزها، مالکیت و امنیت فایل
3.1 ساختار مجوزها
نمایش مجوزها با
ls -lمفهوم خواندن، نوشتن و اجرا (r, w, x) برای owner، group و others
3.2 تغییر مالکیت و گروه
دستور
chown user:group filenameکاربرد
chown -Rبرای دایرکتوریها
3.3 تنظیم مجوزها با chmod
مد دهی عددی (
chmod 755 file)مد نمادی (
chmod u=rwx,g=rx,o= file)بیتهای ویژه: Setuid, Setgid, Sticky bit
نکته امنیتی
فعال کردن Setuid روی فایلهای ناآشنا میتواند مسیر نفوذ هکرها را هموار کند.
تمرین
فایلی بسازید و با
chmod 4711به آن مجوزهای Setuid بدهید.مالکیت یک دایرکتوری با زیرشاخهها را به کاربر
aliceواگذار کنید.
فصل چهارم: پردازش متن و ابزارهای خط لوله
4.1 خط لوله (Pipes) و انتقال داده
مفهوم pipe (
|) برای انتقال خروجی یک دستور به ورودی دستور بعدیکاربردهای زنجیرهای با
grep,awk,cut
مثال: استخراج آیپیها از لاگ
bash
cat access.log | grep "Accepted" | awk '{print $NF}' | sort | uniq
4.2 استفاده از grep
grepبرای جستجو در فایلهاپارامترهای کاربردی:
-i(بدون توجه به حروف بزرگ/کوچک)-r(جستجوی بازگشتی در پوشهها)--color=auto(نمایش رنگی)
4.3 استفاده از cut, awk و sed
cut: برش فیلدها با دلیمتر خاصawk: پردازش خطبهخط فایل و استخراج فیلدهای دلخواهsed: ویرایش متن و جایگزینی الگوها (sed 's/old/new/g')
تمرین
فایلی بسازید که شامل اطلاعات کاربری باشد و با
awkنام همه کاربران را استخراج کنید.با
sedشماره تلفنها را با فرمت استاندارد تبدیل کنید.
فصل پنجم: مدیریت بسته و بهروزرسانی
5.1 توزیعهای Debian/Ubuntu
نصب بسته با
apt installحذف با
apt removeوapt purgeبهروزرسانی سیستم با:
bash
sudo apt update && sudo apt upgrade -y
5.2 توزیعهای RHEL/CentOS
استفاده از
yumوdnf:
bash
sudo dnf install nginx
5.3 توزیعهای Arch و مشتقات
نصب با
pacman -S، بهروزرسانی باpacman -Syu
5.4 بررسی وابستگیها و فایلهای نصبی
dpkg -lوrpm -qaبرای لیست بستههاجستجو با
apt-cache searchیاdnf search
تمرین
بسته
curlرا نصب کرده و نسخه آن را بررسی کنید.یک بسته را نصب و سپس با
dpkg -Lمسیر فایلهای آن را بررسی کنید.
فصل ششم: شبکه و عیبیابی ارتباطات
6.1 بررسی تنظیمات شبکه
ip aبرای مشاهده آدرسهای IPip rیاroute -nبرای بررسی روتهاpingبرای تست اتصالtracerouteوmtrبرای مسیر اتصال
6.2 DNS و تست نام دامنه
بررسی
resolv.confاستفاده از
digوnslookupبرای تست دامنههاشبیهسازی پاسخهای DNS
6.3 ابزارهای مانیتورینگ شبکه
netstat -tulpn(پورتهای باز)ssبهجایnetstatدر توزیعهای جدیدترnmapبرای اسکن شبکه و کشف میزبانها
6.4 تست سرعت و اتصال
curl -I website.comبرای بررسی پاسخ سرورwgetبرای دانلود تستینصب ابزار
iperf3برای تست پهنای باند بین دو نقطه
تمرین
پورت باز سرور
google.comرا باnmapبررسی کنید.از
digبرای دریافت رکوردهای MX یک دامنه استفاده کنید.
فصل هفتم: سرویسها و مدیریت سیستم
7.1 آشنایی با systemd
بیشتر توزیعهای مدرن از systemd برای مدیریت سرویسها استفاده میکنن.
مشاهده وضعیت سرویس:
bash
systemctl status nginx
فعالسازی سرویس هنگام بوت:
bash
systemctl enable apache2
توقف یا راهاندازی:
bash
systemctl stop ssh systemctl start mysql
7.3 زمانبندی و cron jobs
ابزاری حیاتی برای اجرای خودکار وظایف دورهای:
ویرایش کرون کاربر:
bash
crontab -e
مثال: اجرای اسکریپت هر روز ساعت ۲ صبح:
bash
0 2 * * * /home/user/backup.sh
بررسی کرونهای فعال:
bash
crontab -l
فصل هشتم: اسکریپتنویسی با Bash
8.1 ساختار کلی یک اسکریپت
هر اسکریپت Bash با #!/bin/bash شروع میشه:
bash
#!/bin/bash echo "سلام Meysam!"
شرط if:
bash
if [ $NAME == "Meysam" ]; then echo "مدیر اجرایی!" fi
حلقه for:
bash
for i in {1..5}; do echo "مرحله $i" done
8.3 آرگومانها و پارامترها
آرگومان خط فرمان:
$1,$2
بررسی تعداد آرگومان:
bash
if [ $# -lt 1 ]; then echo "حداقل یک آرگومان لازم است" fi
8.4 استفاده از توابع
bash
function greet() { echo "درود، $1!" } greet "Meysam"
تمرین
اسکریپتی بنویس که بعد از بررسی اتصال شبکه، بهصورت خودکار سرویسهای لازم را راهاندازی کند.
اسکریپتی بنویس که از هر پوشه پشتیبان بگیره و با نام تاریخ ذخیره کنه.
فصل نهم: ابزارهای امنیتی اصلی
9.1 بررسی امنیت فایلها با chkrootkit و rkhunter
این ابزارها فایلها و کتابخانهها را از نظر وجود rootkit بررسی میکنند:
bash
sudo chkrootkit sudo rkhunter --check
9.2 اسکن آسیبپذیری با Lynis
ابزار تست امنیتی برای سرورهای لینوکسی:
bash
sudo apt install lynis sudo lynis audit system
9.3 کنترل دسترسی با AppArmor و SELinux
مثال در Ubuntu:
bash
sudo aa-status
9.4 مانیتورینگ تغییرات فایل با auditd
ابزار مانیتورینگ برای ثبت فعالیتهای مشکوک:
bash
sudo auditctl -w /etc/passwd -p wa
9.5 مشاهده لاگهای امنیتی
بررسی auth.log برای تلاشهای ورود:
bash
sudo tail -f /var/log/auth.log
تمرین
ابزار
Lynisرا اجرا کرده و گزارش آن را تحلیل کن.مسیر
/var/www/htmlرا باauditdمانیتور کن.
فصل دهم: پیکربندی فایروال با iptables و nftables
10.1 مفاهیم پایه فایروال در لینوکس
فایروال نقش دروازهی کنترل بستههای ورودی، خروجی و عبوری رو ایفا میکنه.
هر بستهی شبکه با مجموعهای از قوانین مقایسه میشه تا مجاز یا مسدود بشه.
فایروالهای لینوکسی مبتنی بر جدول، زنجیره و قانون هستند.
10.2 iptables: فایروال سنتی اما قدرتمند
ساختار کلی
Tables: مجموعه قوانین با کاربرد خاص
filter: فیلتر بستههاnat: تغییر مسیر آدرس و پورتmangle: تغییر بستهها
Chains: مسیر پردازش بستهها
INPUT,OUTPUT,
نمونه قوانین پایه با nft
ایجاد جدول:
bash
sudo nft add table inet firewall
ایجاد زنجیره:
bash
sudo nft add chain inet firewall input { type filter hook input priority 0; }
اجازه دادن به پورت 80:
bash
sudo nft add rule inet firewall input tcp dport 80 accept
10.4 مقایسه سریع iptables و nftables
ویژگیiptablesnftablesساختارپراکنده و چندجدولییکپارچه و مدولارسرعت اجرامعمولیبهینه و سریعترخوانایینسبتاً پیچیدهقابل فهمترپشتیبانی مدرنکمتر در سیستمهای جدیدتوصیهشده توسط سیستمعاملهاابزار گرافیکیفراوانهنوز محدودتر
10.5 مدیریت حالت اتصال (Stateful Firewall)
بررسی وضعیت اتصال با ماژول
conntrackbash
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTاین خط یعنی بستههایی که قبلاً مجاز بودن، بدون بررسی مجدد عبور میکنن.
10.6 راهاندازی سریع فایروال ایمن (مثال عملی)
bash
sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
این مجموعه قوانین، همهچیز رو میبنده به جز اتصالهای مجاز و SSH.
تمرین پایانی
یک اسکریپت Bash بنویس که در بوت سیستم فایروال nftables رو فعال کنه و فقط پورتهای 22، 80 و 443 رو باز بذاره.
تفاوت اجرای همین قواعد با iptables رو تست و بررسی کن.
پیوند یکتا
https://www.behrozian.ir/index.php?controller=home&method=open&id=11