تسلط بر اوبونتو سرور
مفاهیمِ دوره
فصل ۱: استقرار اوبونتو سرور (Deploying Ubuntu Server)
- ۱.۰.۱ اوبونتو سرور چیست و این فصل چه میآموزد
- ۱.۰.۲ پیشنیازهای فنی نصب اوبونتو سرور
- ۱.۱.۱ نقش سرور (Server role) و محیط آزمایشی
- ۱.۱.۲ حیاتیبودن سرور و افزونگی (Redundancy)
- ۱.۱.۳ محرمانگی داده و رمزگذاری در حالت سکون (Encryption at rest)
- ۱.۲.۱ گزینههای دستگاه و سرور فیزیکی (Physical server)
- ۱.۲.۲ دسکتاپ فیزیکی (Physical desktop)
- ۱.۲.۳ لپتاپ بهعنوان سرور (Laptop)
- ۱.۲.۴ ماشین مجازی (Virtual Machine) و VirtualBox
- ۱.۲.۵ سرور مجازی خصوصی (Virtual Private Server – VPS)
- ۱.۲.۶ رزبری پای (Raspberry Pi) و انتخاب مسیر ادامهٔ فصل
- ۱.۳.۱ انتخاب رسانهٔ نصب: فلش USB یا DVD
- ۱.۳.۲ دانلود ایمیج ISO و نسخههای LTS در برابر نسخههای میانی
- ۱.۳.۳ استفاده از ISO در ماشین مجازی و رایت DVD بوتشدنی
- ۱.۴.۱ چرا Etcher برای ساخت فلش بوتشدنی
- ۱.۴.۲ مراحل ساخت فلش بوتشدنی با Etcher
- ۱.۵.۱ پارتیشنبندی و سوار کردن (Partitioning & Mounting)
- ۱.۵.۲ حفظ دادهها هنگام نصب دوباره با پارتیشنبندی سفارشی
- ۱.۵.۳ پارتیشن جدا بهعنوان مرز: مهار فایلهای لاگ
- ۱.۵.۴ نکات پایهٔ پارتیشنبندی: / ، /var ، /home و swap
- ۱.۶.۱ بوت از رسانهٔ نصب و صفحهٔ آغازین (Test memory)
- ۱.۶.۲ زبان، صفحهکلید و نوع نصب (Ubuntu Server یا minimized)
- ۱.۶.۳ شبکه (DHCP)، پروکسی و آینهٔ بستهها (Mirror)
- ۱.۶.۴ پیکربندی ذخیرهسازی و تأیید پاک شدن دیسک
- ۱.۶.۵ کاربر اولیه، OpenSSH، اسنپهای پیشنهادی و راهاندازی دوباره
- ۱.۷.۱ رزبری پای بهعنوان سرور و دانلود ایمیج آن
- ۱.۷.۲ نوشتن کارت SD با Etcher و نخستین بوت رزبری پای
- ۱.۸.۱ جمعبندی فصل ۱ و منابع مرتبط
فصل ۲: مدیریت کاربران و مجوزها (Managing Users and Permissions)
- ۲.۰.۱ چرا مدیریت کاربران و مجوزها اهمیت دارد
- ۲.۱.۱ کاربران، گروهها و کاربران سیستمی
- ۲.۲.۱ کاربر root: قدرت، خطر و قفل بودن آن در اوبونتو
- ۲.۲.۲ اجرای دستورهای ممتاز با sudo
- ۲.۳.۱ ساخت کاربر با useradd و تعیین رمز با passwd
- ۲.۳.۲ ساخت کاربر با adduser و تفاوت آن با useradd
- ۲.۳.۳ حذف کاربر با userdel و نگهداری فایلهای او
- ۲.۴.۱ ساختار فایل /etc/passwd: نام کاربری، UID، GID، پوشهٔ خانگی و پوسته
- ۲.۴.۲ فایل /etc/shadow: هش رمز عبور و قفل کردن حساب
- ۲.۴.۳ فیلدهای سن رمز در /etc/shadow، دستور passwd -S و صفحههای man
- ۲.۵.۱ توزیع فایلهای پیکربندی پیشفرض با /etc/skel
- ۲.۶.۱ تعویض کاربر با su و sudo su، و فعال کردن root
- ۲.۷.۱ مالکیت فایلها، عضویت در گروهها و فایل /etc/group
- ۲.۷.۲ ساخت گروه و تغییر عضویت: groupadd، usermod و gpasswd
- ۲.۸.۱ قفل کردن و باز کردن حسابها با passwd
- ۲.۸.۲ تنظیم انقضای رمز با chage
- ۲.۸.۳ سیاست رمز عبور با PAM: تاریخچهٔ رمز، difok و obscure
- ۲.۹.۱ گروه sudo، دسترسی جزئیتر از root و ویرایش امن با visudo
- ۲.۹.۲ ساختار قوانین /etc/sudoers و محدود کردن دسترسی
- ۲.۱۰.۱ خواندن رشتهٔ مجوزها در خروجی ls -l
- ۲.۱۰.۲ معنای r، w و x برای فایلها و پوشهها
- ۲.۱۰.۳ تغییر مجوزها با chmod: نمادین، عددی و بازگشتی
- ۲.۱۰.۴ تغییر مالکیت با chown و chgrp
- ۲.۱۱.۱ جمعبندی فصل ۲
فصل ۳: مدیریت بستههای نرمافزاری (Managing Software Packages)
- ۳.۰.۱ نرمافزار در اوبونتو و نقشهٔ فصل ۳
- ۳.۱.۱ مخزن، آینه و حل خودکار وابستگیها
- ۳.۱.۲ نگهدارندگان بسته، بهروزرسانی امنیتی، بهروزرسانی قابلیت و SRU
- ۳.۲.۱ بستههای Debian (.deb): مزایا و چالشها
- ۳.۲.۲ بستههای Snap و دیگر بستههای جهانی
- ۳.۳.۱ نصب بستههای Debian با apt install
- ۳.۳.۲ بهروز کردن فهرست بستهها با apt update و حذف با apt remove
- ۳.۳.۳ مدیریت Snapها با دستور snap
- ۳.۴.۱ جستوجوی بستهها با apt search و apt-cache show
- ۳.۵.۱ خطرهای افزودن مخزن اضافه
- ۳.۵.۲ ساختار sources.list، اجزای مخزن و پوشهٔ sources.list.d
- ۳.۵.۳ آرشیوهای بستهٔ شخصی (PPA)
- ۳.۶.۱ صدور و ورود فهرست بستهها با dpkg و dselect
- ۳.۷.۱ پاکسازی بستههای یتیم با apt autoremove
- ۳.۸.۱ پشتهٔ فعالسازی سختافزار (HWE) در نسخههای LTS
- ۳.۹.۱ جمعبندی فصل ۳
فصل ۴: حرکت در سیستم و دستورهای ضروری (Navigating and Essential Commands)
- ۴.۰.۱ چرا دستورهای پایه را پیش از ادامه یاد بگیریم
- ۴.۱.۱ pwd و پوشهٔ خانگی (Home directory)
- ۴.۱.۲ تغییر پوشه با cd و راههای بازگشت به خانه
- ۴.۱.۳ فهرست کردن محتوا با ls و مفهوم آرگومان
- ۴.۱.۴ حذف با rm (-r و -f) و ساخت یا بهروز کردن فایل با touch
- ۴.۲.۱ ریشهٔ فایلسیستم، ساختار درختی و استاندارد FHS
- ۴.۲.۲ پوشههای مهم فایلسیستم لینوکس
- ۴.۲.۳ پوشهٔ /etc و ماندگاری پیکربندی پس از حذف بسته
- ۴.۳.۱ نمایش محتوای فایل با cat و شناسایی توزیع با /etc/os-release
- ۴.۳.۲ دیدن فایلهای بلند با more و less
- ۴.۳.۳ جستوجو در فایل با grep
- ۴.۴.۱ پوشهٔ /var/log و لاگ سیستم (syslog)
- ۴.۴.۲ دیدن ابتدا و انتهای فایل با head و tail، و دنبال کردن لاگ با tail -f
- ۴.۵.۱ جمعبندی فصل ۴
فصل ۵: مدیریت فایلها و پوشهها (Managing Files and Directories)
- ۵.۰.۱ ادامهٔ مهارتهای خط فرمان: نقشهٔ فصل ۵
- ۵.۱.۱ کپی فایل و پوشه با cp
- ۵.۱.۲ جابهجایی و تغییر نام با mv
- ۵.۲.۱ ویرایشگرهای خط فرمان و کار با nano
- ۵.۲.۲ Vim: نصب، حالت فرمان و حالت درج، و خروج
- ۵.۲.۳ قدرت حالت فرمان Vim: جایگزینی متن، اجرای دستور پوسته و تقسیم پنجره
- ۵.۲.۴ حالت دیداری، میانبرهای مفید Vim و فایل .vimrc
- ۵.۳.۱ خروجی استاندارد (stdout) و هدایت آن به فایل با > و >>
- ۵.۳.۲ ورودی استاندارد (stdin)، لوله (|) و هدایت ورودی با <
- ۵.۳.۳ خطای استاندارد (stderr)، هدایت با 2> و /dev/null
- ۵.۴.۱ میانبرها در لینوکس و مفهوم inode
- ۵.۴.۲ پیوند سخت (Hard link) با ln و محدودیتهای آن
- ۵.۴.۳ پیوند نمادین (Symlink) با ln -s و انتخاب میان دو نوع پیوند
- ۵.۵.۱ جمعبندی فصل ۵
فصل ۶: افزایش کارایی در خط فرمان (Boosting Your Command-line Efficiency)
- ۶.۰.۱ چرا کارایی در پوسته مهم است
- ۶.۱.۱ پوستهٔ Bash، پوستههای دیگر و تعیین پوستهٔ کاربر در /etc/passwd
- ۶.۲.۱ تاریخچهٔ Bash: کلیدهای جهت، دستور history و فراخوانی با !شماره
- ۶.۲.۲ حذف از تاریخچه، رمز عبور در خط فرمان، فاصلهٔ ابتدایی و فایل .bash_history
- ۶.۳.۱ sudo !!، تکمیل با Tab، میانبرهای صفحهکلید و جستوجوی تاریخچه با Ctrl + r
- ۶.۳.۲ ویرایش دستور در ویرایشگر، زنجیره کردن دستورها با && و ; و کد خروج ($?)
- ۶.۳.۳ نام مستعار (alias)، ماندگار کردن آن در .bashrc و cd -
- ۶.۴.۱ متغیرها در Bash: تعریف، فراخوانی با $، و متغیرهای سیستمی (env)
- ۶.۴.۲ گرفتن ورودی کاربر با read و ذخیره در متغیر
- ۶.۵.۱ نخستین اسکریپت Bash: شبنگ (#!)، chmod +x و اجرا
- ۶.۵.۲ ذهنیت خودکارسازی: اسکریپت نصب وبسرور و گزینهٔ -y
- ۶.۵.۳ شرط در اسکریپت: if، else، fi، آزمون فایل (-f، -d، !) و مقایسهٔ عددی (-eq، -lt…)
- ۶.۵.۴ حلقهٔ while، افزایش با ((var++)) و خطر حلقهٔ بیپایان
- ۶.۵.۵ حلقهٔ for: اجرای یک کار برای هر عضو یک فهرست
- ۶.۶.۱ دستور rsync و گزینههای -a، -v، -b، --delete و --backup-dir
- ۶.۶.۲ نوشتن اسکریپت پشتیبان rsync: تاریخ پویا با $(...)، بررسی نصب و جای اسکریپت
- ۶.۷.۱ جمعبندی فصل ۶
فصل ۷: کنترل و مدیریت پردازهها (Controlling and Managing Processes)
- ۷.۰.۱ پردازهها در سرور و نقشهٔ فصل ۷
- ۷.۱.۱ بردن کار به پسزمینه با Ctrl + z و بازگرداندن با fg و jobs
- ۷.۱.۲ اجرای مستقیم در پسزمینه با &، بسته شدن کارها هنگام خروج و tmux
- ۷.۲.۱ دستور ps، شناسهٔ پردازه (PID) و pidof
- ۷.۲.۲ ps a و ستون STAT: وضعیتهای R، S، D، T و Z (پردازهٔ زامبی)
- ۷.۲.۳ ستون TTY (ترمینال واقعی در برابر pts) و ستون TIME (زمان مصرف CPU)
- ۷.۲.۴ ps au، ps aux، فیلتر با grep و -C، و مرتبسازی بر اساس CPU و حافظه
- ۷.۳.۱ اولویت پردازه و مقدار nice: ستونهای PRI و NI و بازهٔ -20 تا 19
- ۷.۳.۲ کار با renice و nice: مجوزها (چه زمانی sudo لازم است) و نحو یکنواخت با -n
- ۷.۴.۱ سیگنالهای لینوکس و دستور kill: SIGHUP، SIGINT، SIGTERM (15) و SIGKILL (9)
- ۷.۴.۲ kill -9 بهعنوان آخرین چاره، پردازههای زامبی و killall
- ۷.۵.۱ سرویسها (daemon)، systemd بهعنوان PID 1 و بررسی وضعیت با systemctl status
- ۷.۵.۲ start، stop، restart، reload، enable و disable در systemctl
- ۷.۶.۱ cron و crontab: دیدن (-l)، ویرایش (-e) و crontab کاربران دیگر (-u)
- ۷.۶.۲ قالب خط crontab (m h dom mon dow command)، علامت * و مسیر کامل دستور
- ۷.۷.۱ جمعبندی فصل ۷
فصل ۸: پایش منابع سیستم (Monitoring System Resources)
- ۸.۰.۱ چرا باید منابع سیستم را پایش کنیم
- ۸.۱.۱ دید کلی به فضای دیسک با df -h و نام دستگاههای ذخیرهسازی
- ۸.۱.۲ تمام شدن inodeها: «دیسک پر است» با وجود فضای آزاد، و df -i
- ۸.۱.۳ یافتن پوشههای پرحجم با du -hsc *
- ۸.۱.۴ ابزار تعاملی ncdu و روند کامل بررسی کمبود فضا
- ۸.۲.۱ دستور free -m، ستون available و حافظهٔ نهان فایلسیستم
- ۸.۲.۲ معنای ستونهای خروجی free: total، used، free، shared، buff/cache و available
- ۸.۳.۱ swap چیست: تور ایمنی هنگام پر شدن RAM، فایل در برابر پارتیشن، swapon و swapoff
- ۸.۳.۲ ساختن فایل swap: fallocate، chmod 0600، mkswap، /etc/fstab و swapon
- ۸.۳.۳ پایش مصرف swap و تنظیم swappiness با sysctl و /etc/sysctl.conf
- ۸.۴.۱ میانگین بار (load average): سه عدد ۱، ۵ و ۱۵ دقیقه و دیدن آن با uptime
- ۸.۴.۲ تفسیر میانگین بار نسبت به تعداد هستهها، تشبیه صندوق فروشگاه و خط مبنا
- ۸.۵.۱ نمای کلی htop: نمایشگرهای CPU، حافظه و swap، مرتبسازی و سفارشیسازی با F2
- ۸.۵.۲ htop پیشرفته: فیلتر کاربر (u)، نمای درختی (F5)، فاصلهٔ بهروزرسانی (-d)، کشتن با F9 و top
- ۸.۶.۱ جمعبندی فصل ۸
فصل ۹: مدیریت حجمهای ذخیرهسازی (Managing Storage Volumes)
- ۹.۰.۱ چرا فضای ذخیرهسازی همیشه کم میآید و نقش برنامهریزی
- ۹.۱.۱ چهار پرسش پیش از افزودن دیسک: اندازه، نام دستگاه، فایلسیستم و نقطهٔ اتصال
- ۹.۱.۲ یافتن نام دیسک جدید با fdisk -l، dmesg --follow و lsblk، و شمارهگذاری پارتیشنها
- ۹.۲.۱ جدول پارتیشن MBR (DOS) در برابر GPT
- ۹.۲.۲ ساختن پارتیشن با fdisk: g یا o، n، اندازه با +20G و ذخیره با w
- ۹.۲.۳ قالببندی پارتیشن با mkfs.ext4 و mkfs.xfs
- ۹.۳.۱ سوار کردن حجم با mount: /mnt در برابر /media، گزینهٔ -t و بررسی با df -h
- ۹.۳.۲ پیاده کردن با umount، خطای device is busy و ماندگار نبودن mount دستی
- ۹.۴.۱ ساختار /etc/fstab: شش ستون، UUID به جای نام دستگاه و blkid
- ۹.۴.۲ افزودن ورودی به fstab، گزینهٔ defaults و جایگزینهای امنتر ro و noexec
- ۹.۴.۳ auto و noauto، سوار کردن همه با mount -a، گزینهٔ users و دیدن mountها
- ۹.۵.۱ اعتماد نکردن به دیسکها و چرا RAID پشتیبان نیست
- ۹.۵.۲ اصول طرح پشتیبان: خارج از سرور، چند لایه، آزمودن، رمزگذاری و سیاست نگهداری
- ۹.۶.۱ چرا LVM: بزرگ کردن فایلسیستم بدون ریبوت و توقف سرویس
- ۹.۶.۲ مفاهیم LVM: گروه حجم (VG)، حجم فیزیکی (PV) و حجم منطقی (LV)
- ۹.۶.۳ ساختن LVM: pvcreate، vgcreate، lvcreate، دستورهای display و قالببندی LV
- ۹.۶.۴ بزرگ کردن آنلاین: lvextend، resize2fs، افزودن دیسک با vgextend و نگه داشتن ذخیره
- ۹.۶.۵ حذف حجم منطقی و گروه حجم با lvremove و vgremove
- ۹.۷.۱ snapshot در LVM چیست و چرا پشتیبان نیست
- ۹.۷.۲ ساختن snapshot با lvcreate -s، بازگشت با lvconvert --merge و نهایی کردن با lvremove
- ۹.۸.۱ جمعبندی فصل ۹