تسلط بر خط فرمان لینوکس: راهنمای عملی برای متخصصان شبکه، امنیت و DevOps

مقدمه
در دنیای امروز، تسلط بر خط فرمان لینوکس دیگر یک مهارت اختیاری نیست؛ بلکه به عنوان سنگ بنای فعالیت های حرفه ای در حوزه های شبکه، امنیت سایبری، 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 xzf
zip
و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)
- بررسی وضعیت اتصال با ماژول
conntrack
bashsudo 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 رو تست و بررسی کن.