فصل پنجم — قسمت پنجاه و هفت 🐧
docker - نصب داکر
———————
🐳 Docker چیست؟
قبل از نصب، خیلی ساده:
Docker ابزاری برای اجرای برنامهها داخل Container است.
مثلاً بهجای اینکه برای اجرای Nginx کل یک VM بسازیم:
با Docker میتوانیم فقط Container مربوط به Nginx را اجرا کنیم.
———————-
🐳 نصب Docker در Ubuntu / Debian
1️⃣ آپدیت مخازن
2️⃣ نصب ابزارهای موردنیاز
3️⃣ اضافه کردن کلید Repository داکر
برای Ubuntu باید مسیر Repository را متناسب با Ubuntu تنظیم کنی؛ روش رسمی Docker از Repository خود Docker استفاده میکند.
———————-
در Debian/Ubuntu بعد از اضافه کردن Repository رسمی:
سپس:
——————
🔍 بررسی نصب
مثلاً:
و:
اگر دیدی:
یعنی Docker در حال اجراست. ✅
—————-
🚀 تست Docker
مهمترین تست:
Docker یک Image کوچک به نام
اگر پیام:
را دیدی، یعنی Docker درست نصب شده. 🎉
——————
👤 اجرای Docker بدون sudo
بهصورت پیشفرض ممکن است مجبور باشی بنویسی:
اگر میخواهی کاربر فعلی بدون
بعد یکبار Logout/Login کن.
سپس:
⚠️ عضویت در گروه
——————-
🐧 نصب روی RHEL / AlmaLinux / Rocky
در سیستمهای Red Hat:
Repository داکر را اضافه میکنیم:
بعد:
سرویس را فعال و اجرا میکنیم:
تست:
و:
——————
🧠 چند دستور اولیه که بعد از نصب لازم داری
کانتینرهای در حال اجرا
همه کانتینرها
Imageهای موجود
دریافت Image
ساخت و اجرای Container
توقف Container
اجرای دوباره Container
——————-
🎯 زنجیره Docker را اینطوری حفظ کن:
مثلاً:
نکته: برای آموزش دوره، بهتر است نصب Docker را روی VM آزمایشگاهی انجام بدهی، نه سرور اصلی؛ مخصوصاً چون Docker دسترسیهای سطح بالایی به سیستم میزبان دارد.
docker - نصب داکر
———————
🐳 Docker چیست؟
قبل از نصب، خیلی ساده:
Docker ابزاری برای اجرای برنامهها داخل Container است.
مثلاً بهجای اینکه برای اجرای Nginx کل یک VM بسازیم:
VM
├── OS
├── Kernel
├── Nginx
└── Config
با Docker میتوانیم فقط Container مربوط به Nginx را اجرا کنیم.
———————-
🐳 نصب Docker در Ubuntu / Debian
1️⃣ آپدیت مخازن
sudo apt update
2️⃣ نصب ابزارهای موردنیاز
sudo apt install ca-certificates curl
3️⃣ اضافه کردن کلید Repository داکر
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg \
-o /etc/apt/keyrings/docker.asc
برای Ubuntu باید مسیر Repository را متناسب با Ubuntu تنظیم کنی؛ روش رسمی Docker از Repository خود Docker استفاده میکند.
———————-
در Debian/Ubuntu بعد از اضافه کردن Repository رسمی:
sudo apt update
سپس:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
——————
🔍 بررسی نصب
docker --version
مثلاً:
Docker version 28.x.x
و:
systemctl status docker
اگر دیدی:
Active: active (running)
یعنی Docker در حال اجراست. ✅
—————-
🚀 تست Docker
مهمترین تست:
sudo docker run hello-world
Docker یک Image کوچک به نام
hello-world دریافت میکند و یک Container از روی آن اجرا میکند.اگر پیام:
Hello from Docker!
را دیدی، یعنی Docker درست نصب شده. 🎉
——————
👤 اجرای Docker بدون sudo
بهصورت پیشفرض ممکن است مجبور باشی بنویسی:
sudo docker ps
اگر میخواهی کاربر فعلی بدون
sudo از Docker استفاده کند:sudo usermod -aG docker $USER
بعد یکبار Logout/Login کن.
سپس:
docker ps
⚠️ عضویت در گروه
docker عملاً دسترسی بسیار بالایی روی سیستم میدهد؛ روی سرور چندکاربره باید با احتیاط انجام شود.——————-
🐧 نصب روی RHEL / AlmaLinux / Rocky
در سیستمهای Red Hat:
sudo dnf install -y dnf-plugins-core
Repository داکر را اضافه میکنیم:
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
بعد:
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
سرویس را فعال و اجرا میکنیم:
sudo systemctl enable --now docker
تست:
docker --version
و:
sudo docker run hello-world
——————
🧠 چند دستور اولیه که بعد از نصب لازم داری
docker ps
کانتینرهای در حال اجرا
docker ps -a
همه کانتینرها
docker images
Imageهای موجود
docker pull nginx
دریافت Image
docker run nginx
ساخت و اجرای Container
docker stop CONTAINER
توقف Container
docker start CONTAINER
اجرای دوباره Container
——————-
🎯 زنجیره Docker را اینطوری حفظ کن:
Docker
↓
Image
↓
Container
↓
Application
مثلاً:
nginx Image
↓
nginx Container
↓
Web Server
نکته: برای آموزش دوره، بهتر است نصب Docker را روی VM آزمایشگاهی انجام بدهی، نه سرور اصلی؛ مخصوصاً چون Docker دسترسیهای سطح بالایی به سیستم میزبان دارد.
فصل پنجم — قسمت پنجاه و هشت 🐧
KVM - نصب kvm
———————
🧠 KVM چیست؟
KVM = Kernel-based Virtual Machine
یعنی قابلیت مجازیسازی که داخل Kernel لینوکس قرار دارد.
خیلی ساده:
KVM به لینوکس اجازه میدهد ماشین مجازی اجرا کند.
——————
1️⃣ بررسی پشتیبانی CPU
اول ببینیم CPU قابلیت Virtualization دارد:
اگر عددی مثل:
دیدی یعنی CPU قابلیت Virtualization دارد.
همچنین:
—————
2️⃣ نصب KVM در Debian / Ubuntu
ابتدا:
بعد:
برای بررسی:
مثلاً:
یا روی AMD:
—————
3️⃣ فعال کردن Libvirt
بررسی:
اگر:
دیدی، سرویس فعال است.
—————
4️⃣ اضافه کردن کاربر به گروهها
برای اینکه لازم نباشد همیشه با
و:
بعد باید Logout/Login کنی.
——————
🖥 Virt-Manager چیست؟
Virt-Manager یک رابط گرافیکی برای مدیریت ماشینهای مجازی KVM/libvirt است.
یعنی بهجای اینکه همهچیز را با دستور انجام دهی:
Virt-Manager خودش KVM نیست.
خیلی مهم:
—————-
🚀 اجرای Virt-Manager
در محیط دسکتاپ:
پنجره برنامه باز میشود.
معمولاً یک Connection به شکل:
میبینی.
————-
🖥 ساخت VM با Virt-Manager
داخل Virt-Manager:
مثلاً:
بعد VM را Start میکنی.
——————
🧰 چند دستور مهم KVM/libvirt
دیدن VMها:
همه VMها:
روشن کردن:
خاموش کردن:
اجباری خاموش کردن:
ریستارت:
نمایش اطلاعات:
—————
🧠
اگر Virt-Manager رابط گرافیکی باشد، virsh ابزار خط فرمان libvirt است.
مثلاً:
یا از طریق Terminal:
——————
یک مثال واقعی
میخواهی روی Ubuntu یک Windows VM بسازی:
پس Virt-Manager خودش ماشین مجازیساز نیست؛ فقط یک پنل مدیریتی برای زیرساخت KVM/libvirt است.
KVM - نصب kvm
———————
🧠 KVM چیست؟
KVM = Kernel-based Virtual Machine
یعنی قابلیت مجازیسازی که داخل Kernel لینوکس قرار دارد.
خیلی ساده:
Hardware
↓
Linux Kernel
↓
KVM
↓
VM1 VM2 VM3
KVM به لینوکس اجازه میدهد ماشین مجازی اجرا کند.
نکته: خود KVM بیشتر نقش لایه مجازیسازی را دارد و معمولاً در کنار QEMU + libvirt استفاده میشود.
——————
1️⃣ بررسی پشتیبانی CPU
اول ببینیم CPU قابلیت Virtualization دارد:
egrep -c '(vmx|svm)' /proc/cpuinfo
اگر عددی مثل:
8
دیدی یعنی CPU قابلیت Virtualization دارد.
vmx → Intel VT-xsvm → AMD-Vهمچنین:
lscpu | grep Virtualization
—————
2️⃣ نصب KVM در Debian / Ubuntu
ابتدا:
sudo apt update
بعد:
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients virt-manager
برای بررسی:
lsmod | grep kvm
مثلاً:
kvm_intel
kvm
یا روی AMD:
kvm_amd
kvm
—————
3️⃣ فعال کردن Libvirt
sudo systemctl enable --now libvirtd
بررسی:
systemctl status libvirtd
اگر:
Active: active (running)
دیدی، سرویس فعال است.
—————
4️⃣ اضافه کردن کاربر به گروهها
برای اینکه لازم نباشد همیشه با
sudo کار کنی:sudo usermod -aG libvirt $USER
و:
sudo usermod -aG kvm $USER
بعد باید Logout/Login کنی.
——————
🖥 Virt-Manager چیست؟
Virt-Manager یک رابط گرافیکی برای مدیریت ماشینهای مجازی KVM/libvirt است.
یعنی بهجای اینکه همهچیز را با دستور انجام دهی:
KVM
↓
libvirt
↓
Virt-Manager
↓
GUI
Virt-Manager خودش KVM نیست.
خیلی مهم:
KVM → موتور/قابلیت مجازیسازی
QEMU → شبیهسازی و اجرای VM
libvirt → مدیریت VMها
Virt-Manager → رابط گرافیکی
—————-
🚀 اجرای Virt-Manager
در محیط دسکتاپ:
virt-manager
پنجره برنامه باز میشود.
معمولاً یک Connection به شکل:
QEMU/KVM
میبینی.
————-
🖥 ساخت VM با Virt-Manager
داخل Virt-Manager:
Create a new virtual machine
↓
Local install media
↓
ISO File
↓
انتخاب RAM
↓
انتخاب CPU
↓
انتخاب Disk
↓
Network
↓
Finish
مثلاً:
Name: Ubuntu-Test
RAM: 4 GB
CPU: 2 Core
Disk: 30 GB
ISO: ubuntu.iso
بعد VM را Start میکنی.
——————
🧰 چند دستور مهم KVM/libvirt
دیدن VMها:
virsh list
همه VMها:
virsh list --all
روشن کردن:
virsh start ubuntu-test
خاموش کردن:
virsh shutdown ubuntu-test
اجباری خاموش کردن:
virsh destroy ubuntu-test
ریستارت:
virsh reboot ubuntu-test
نمایش اطلاعات:
virsh dominfo ubuntu-test
—————
🧠
virsh چیست؟اگر Virt-Manager رابط گرافیکی باشد، virsh ابزار خط فرمان libvirt است.
مثلاً:
Virt-Manager
↓
libvirt
↓
KVM
↓
Hardware
یا از طریق Terminal:
virsh
↓
libvirt
↓
KVM
——————
یک مثال واقعی
میخواهی روی Ubuntu یک Windows VM بسازی:
Ubuntu
↓
KVM
↓
QEMU
↓
libvirt
↓
Virt-Manager
↓
Windows VM
پس Virt-Manager خودش ماشین مجازیساز نیست؛ فقط یک پنل مدیریتی برای زیرساخت KVM/libvirt است.
👏1
فصل پنجم — قسمت پنجاه و نه 🐧
Proxmox - نصب Proxmox
———————
Proxmox چیست؟
Proxmox یک پلتفرم مدیریت مجازیسازی است که روی یک سرور نصب میشود و به ما اجازه میدهد چندین VM و Container را روی یک سختافزار اجرا و مدیریت کنیم.
مثلاً:
یعنی بهجای اینکه برای هر سیستم یک سرور فیزیکی داشته باشیم، همه را روی یک سرور اجرا میکنیم.
———————
1️⃣ پیشنیازهای نصب
حداقل چیزهایی که لازم داریم:
CPU با قابلیت Virtualization
Intel →
AMD →
RAM مناسب
هارد/SSD
کارت شبکه
فایل ISO مربوط به Proxmox
💡 برای محیط واقعی بهتر است Proxmox روی خود سرور فیزیکی نصب شود، نه داخل VMware یا VirtualBox.
———————
2️⃣ ساخت USB بوت
ISO پروکسموکس را روی فلش Bootable میریزیم.
سپس سرور را با USB بوت میکنیم.
در BIOS/UEFI معمولاً:
—————-
3️⃣ نصب Proxmox
بعد از بوت، صفحه نصب را میبینیم:
انتخابش میکنیم.
سپس:
Target Disk
هاردی که قرار است Proxmox روی آن نصب شود.
مثلاً:
⚠️ انتخاب این هارد معمولاً باعث پاک شدن اطلاعات آن میشود.
——————
Country / Time Zone
کشور، منطقه زمانی و Keyboard را انتخاب میکنیم.
مثلاً:
—————-
Password
برای کاربر:
رمز تعیین میکنیم.
——————
Network
اینجا خیلی مهم است.
مثلاً:
Proxmox برای مدیریت معمولاً با IP ثابت تنظیم میشود.
———————
4️⃣ شروع نصب
در پایان تنظیمات را بررسی میکنیم:
و سیستم شروع به نصب میکند.
بعد از پایان، سرور Reboot میشود.
———————
5️⃣ ورود به پنل Proxmox
بعد از نصب، معمولاً با این آدرس وارد میشویم:
مثلاً:
پورت مهم Proxmox:
———————
6️⃣ ورود
بعد وارد پنل مدیریتی میشویم.
از اینجا میتوانیم:
—————-
🧠 نکته مهم برای دوره
KVM موتور مجازیسازی است.
QEMU وظیفه شبیهسازی/اجرای ماشین را بر عهده دارد.
Proxmox یک لایه مدیریتی روی این تکنولوژیهاست که همهچیز را راحتتر مدیریت میکند.
پس:
و برای Containerها:
خلاصه:
Proxmox - نصب Proxmox
———————
Proxmox چیست؟
Proxmox یک پلتفرم مدیریت مجازیسازی است که روی یک سرور نصب میشود و به ما اجازه میدهد چندین VM و Container را روی یک سختافزار اجرا و مدیریت کنیم.
مثلاً:
سرور فیزیکی
│
└── Proxmox
├── VM 101 → Ubuntu
├── VM 102 → Debian
├── VM 103 → Windows
└── CT 104 → Debian Container
یعنی بهجای اینکه برای هر سیستم یک سرور فیزیکی داشته باشیم، همه را روی یک سرور اجرا میکنیم.
———————
1️⃣ پیشنیازهای نصب
حداقل چیزهایی که لازم داریم:
CPU با قابلیت Virtualization
Intel →
VT-xAMD →
AMD-VRAM مناسب
هارد/SSD
کارت شبکه
فایل ISO مربوط به Proxmox
💡 برای محیط واقعی بهتر است Proxmox روی خود سرور فیزیکی نصب شود، نه داخل VMware یا VirtualBox.
———————
2️⃣ ساخت USB بوت
ISO پروکسموکس را روی فلش Bootable میریزیم.
سپس سرور را با USB بوت میکنیم.
در BIOS/UEFI معمولاً:
Boot Menu
↓
USB
↓
Proxmox Installer
—————-
3️⃣ نصب Proxmox
بعد از بوت، صفحه نصب را میبینیم:
Install Proxmox VE
انتخابش میکنیم.
سپس:
Target Disk
هاردی که قرار است Proxmox روی آن نصب شود.
مثلاً:
/dev/sda 500GB SSD
⚠️ انتخاب این هارد معمولاً باعث پاک شدن اطلاعات آن میشود.
——————
Country / Time Zone
کشور، منطقه زمانی و Keyboard را انتخاب میکنیم.
مثلاً:
Time Zone: Asia/Tehran
Keyboard: US
—————-
Password
برای کاربر:
root
رمز تعیین میکنیم.
——————
Network
اینجا خیلی مهم است.
مثلاً:
Hostname:
pve.example.local
IP:
192.168.1.10
Gateway:
192.168.1.1
DNS:
8.8.8.8
Proxmox برای مدیریت معمولاً با IP ثابت تنظیم میشود.
———————
4️⃣ شروع نصب
در پایان تنظیمات را بررسی میکنیم:
Install
و سیستم شروع به نصب میکند.
بعد از پایان، سرور Reboot میشود.
———————
5️⃣ ورود به پنل Proxmox
بعد از نصب، معمولاً با این آدرس وارد میشویم:
https://IP-SERVER:8006
مثلاً:
https://192.168.1.10:8006
پورت مهم Proxmox:
8006
———————
6️⃣ ورود
Username: root
Password: رمز نصب
بعد وارد پنل مدیریتی میشویم.
از اینجا میتوانیم:
VM بسازیم
Container بسازیم
هارد اضافه کنیم
Network تنظیم کنیم
Backup بگیریم
Snapshot بگیریم
VM را روشن/خاموش کنیم
—————-
🧠 نکته مهم برای دوره
KVM موتور مجازیسازی است.
QEMU وظیفه شبیهسازی/اجرای ماشین را بر عهده دارد.
Proxmox یک لایه مدیریتی روی این تکنولوژیهاست که همهچیز را راحتتر مدیریت میکند.
پس:
Hardware
↓
Proxmox VE
↓
KVM/QEMU
↓
VM
و برای Containerها:
Hardware
↓
Proxmox VE
↓
LXC
↓
Container
خلاصه:
Proxmox خودش «سیستمعامل مهمان» نیست؛ یک پلتفرم مدیریت مجازیسازی است که روی سرور نصب میشود و از طریق پنل وب، VM و Containerهای مختلف را مدیریت میکنیم.
👏1
خب خب رسما
لینوکس الپیک 1 قسمت 101 رو تموم کردیم با اتمام فصل پنج
از فردا فصل شش و شروع میشه و استارت قسمت دوم الپیک یک(102) به امید خدا میخوره
لینوکس الپیک 1 قسمت 101 رو تموم کردیم با اتمام فصل پنج
از فردا فصل شش و شروع میشه و استارت قسمت دوم الپیک یک(102) به امید خدا میخوره
🔥2👏1
فصل ششم — قسمت شصتم 🐧
محیط GUI در لینوکس
————————
در این فصل از محیط متنی (CLI) فاصله میگیریم و وارد محیط گرافیکی (GUI) لینوکس میشویم.
🖥 GUI چیست؟
GUI یعنی:
Graphical User Interface
یعنی محیطی که بهجای اینکه همهچیز را با دستور انجام بدهیم، با پنجره، آیکون، منو و ماوس کار میکنیم.
مثلاً در CLI:
ولی در GUI میتوانیم با کلیک راست و انتخاب New Folder پوشه بسازیم.
———————-
1️⃣ Desktop Environment چیست؟
لینوکس خودش یک محیط دسکتاپ مشخص ندارد.
ما میتوانیم Desktop Environment نصب کنیم.
چند مورد معروف:
GNOME
محیط پیشفرض بسیاری از توزیعها، مخصوصاً Fedora و Ubuntu.
KDE Plasma
ظاهر بسیار قابل تنظیم و شبیهتر به محیطهای کلاسیک دسکتاپ.
XFCE
سبک و کممصرف؛ مناسب سیستمهای ضعیفتر.
Cinnamon
محیطی ساده و شبیه دسکتاپ سنتی.
MATE
سبک و کلاسیک.
LXQt
خیلی سبک و مناسب سیستمهای ضعیف.
مثلاً:
🧠 نکته:
توزیع لینوکس و Desktop Environment یکی نیستند.
مثلاً:
همه Ubuntu هستند ولی ظاهر و محیط دسکتاپشان متفاوت است.
——————
2️⃣ نصب محیط GUI
مثلاً در Debian/Ubuntu میتوانیم GNOME نصب کنیم:
در سیستمهای Red Hat مانند Fedora:
بعد میتوانیم Target گرافیکی را فعال کنیم:
و برای ورود فوری به محیط گرافیکی:
——————————-
3️⃣ Accessibility چیست؟
Accessibility یعنی امکاناتی که استفاده از سیستم را برای افراد با نیازهای متفاوت راحتتر میکند.
مثلاً:
بزرگ کردن نوشتهها
Screen Reader
بزرگنمایی صفحه
کیبورد مجازی
High Contrast
تنظیم سرعت ماوس
تنظیم Sticky Keys
مثلاً فردی که دید ضعیف دارد میتواند:
را فعال کند.
🧠 خیلی ساده:
————————
4️⃣ تنظیم زبان
در محیط GUI میتوانیم زبان سیستم را تغییر دهیم.
مثلاً:
زبان روی مواردی مثل:
منوها
پیامهای سیستم
تاریخ
بعضی برنامهها
تأثیر میگذارد.
——————
5️⃣ تنظیم جغرافیا و Region
Region مشخص میکند سیستم از چه قواعد منطقهای استفاده کند.
مثلاً:
این موارد میتوانند روی:
فرمت تاریخ
فرمت ساعت
واحد پول
فرمت اعداد
اولین روز هفته
تأثیر داشته باشند.
————
6️⃣ تنظیم Time Zone
مثلاً:
برای دیدن وضعیت زمان سیستم.
مثلاً:
و برای دیدن Time Zoneهای موجود:
محیط GUI در لینوکس
————————
در این فصل از محیط متنی (CLI) فاصله میگیریم و وارد محیط گرافیکی (GUI) لینوکس میشویم.
🖥 GUI چیست؟
GUI یعنی:
Graphical User Interface
یعنی محیطی که بهجای اینکه همهچیز را با دستور انجام بدهیم، با پنجره، آیکون، منو و ماوس کار میکنیم.
مثلاً در CLI:
mkdir test
cd test
ولی در GUI میتوانیم با کلیک راست و انتخاب New Folder پوشه بسازیم.
———————-
1️⃣ Desktop Environment چیست؟
لینوکس خودش یک محیط دسکتاپ مشخص ندارد.
ما میتوانیم Desktop Environment نصب کنیم.
چند مورد معروف:
GNOME
محیط پیشفرض بسیاری از توزیعها، مخصوصاً Fedora و Ubuntu.
KDE Plasma
ظاهر بسیار قابل تنظیم و شبیهتر به محیطهای کلاسیک دسکتاپ.
XFCE
سبک و کممصرف؛ مناسب سیستمهای ضعیفتر.
Cinnamon
محیطی ساده و شبیه دسکتاپ سنتی.
MATE
سبک و کلاسیک.
LXQt
خیلی سبک و مناسب سیستمهای ضعیف.
مثلاً:
Linux
├── GNOME
├── KDE Plasma
├── XFCE
├── Cinnamon
├── MATE
└── LXQt
🧠 نکته:
توزیع لینوکس و Desktop Environment یکی نیستند.
مثلاً:
Ubuntu + GNOME
Ubuntu + KDE
Ubuntu + XFCE
همه Ubuntu هستند ولی ظاهر و محیط دسکتاپشان متفاوت است.
——————
2️⃣ نصب محیط GUI
مثلاً در Debian/Ubuntu میتوانیم GNOME نصب کنیم:
sudo apt install task-gnome-desktop
در سیستمهای Red Hat مانند Fedora:
sudo dnf group install "GNOME Desktop Environment"
بعد میتوانیم Target گرافیکی را فعال کنیم:
systemctl set-default graphical.target
و برای ورود فوری به محیط گرافیکی:
systemctl isolate graphical.target
——————————-
3️⃣ Accessibility چیست؟
Accessibility یعنی امکاناتی که استفاده از سیستم را برای افراد با نیازهای متفاوت راحتتر میکند.
مثلاً:
بزرگ کردن نوشتهها
Screen Reader
بزرگنمایی صفحه
کیبورد مجازی
High Contrast
تنظیم سرعت ماوس
تنظیم Sticky Keys
مثلاً فردی که دید ضعیف دارد میتواند:
Settings
↓
Accessibility
↓
Large Text
را فعال کند.
🧠 خیلی ساده:
Accessibility یعنی سیستم را طوری تنظیم کنیم که افراد مختلف راحتتر بتوانند از آن استفاده کنند.
————————
4️⃣ تنظیم زبان
در محیط GUI میتوانیم زبان سیستم را تغییر دهیم.
مثلاً:
Settings
↓
Region & Language
↓
Language
زبان روی مواردی مثل:
منوها
پیامهای سیستم
تاریخ
بعضی برنامهها
تأثیر میگذارد.
——————
5️⃣ تنظیم جغرافیا و Region
Region مشخص میکند سیستم از چه قواعد منطقهای استفاده کند.
مثلاً:
Language → English
Region → Iran
این موارد میتوانند روی:
فرمت تاریخ
فرمت ساعت
واحد پول
فرمت اعداد
اولین روز هفته
تأثیر داشته باشند.
————
6️⃣ تنظیم Time Zone
مثلاً:
timedatectl
برای دیدن وضعیت زمان سیستم.
مثلاً:
timedatectl set-timezone Asia/Tehran
و برای دیدن Time Zoneهای موجود:
timedatectl list-timezones
❤1👏1
فصل ششم — قسمت شصتویکم 🐧
نصب و پیکربندی محیط GUI
——————-
🖥 اول GUI چیست؟
GUI = Graphical User Interface
یعنی محیط گرافیکی که با ماوس، پنجره، آیکون و منو با لینوکس کار میکنیم.
مثلاً بهجای:
در GUI میتوانی با کلیک راست → New Folder پوشه بسازی.
—————-
2️⃣ Window Manager چیست؟
اینجا یک لایه پایینتر داریم.
Window Manager مسئول مدیریت پنجرههاست؛ مثلاً:
برای محیطهای مختلف:
Metacity هم Window Manager قدیمی GNOME بود.
پس خیلی ساده:
——————
3️⃣ XFree86 چیست؟
XFree86 یکی از پیادهسازیهای قدیمی سیستم X Window System بود.
در گذشته وظیفهاش فراهم کردن زیرساخت نمایش گرافیکی در سیستمهای Unix/Linux بود.
بعداً X.Org جایگزین اصلی آن شد.
—————
4️⃣ X.Org چیست؟
X.Org Server یکی از پیادهسازیهای سیستم X Window System است.
به زبان ساده:
ساختار ساده:
—————
5️⃣ Wayland چیست؟
Wayland یک معماری جدیدتر برای سیستم نمایش گرافیکی است که برای بسیاری از سناریوها جایگزین X11/X.Org میشود.
ساختار آن سادهتر است:
مثلاً در GNOME، Mutter میتواند نقش compositor مربوط به Wayland را هم انجام دهد.
🧠 پس تفاوت اصلی را اینطور حفظ کن:
—————-
6️⃣ نصب GUI در Red Hat / Fedora
اگر از سیستمهای مبتنی بر Red Hat استفاده میکنی، ابتدا میتوانی گروههای نرمافزاری را ببینی:
مثلاً برای نصب محیط GUI:
یا در بعضی نسخهها:
⚠️ اسم دقیق Group ممکن است بین نسخههای Fedora/RHEL/AlmaLinux متفاوت باشد؛ اول با
—————
فعال کردن GUI هنگام Boot
بعد از نصب:
بعد:
حالا سیستم بهجای محیط متنی، به محیط گرافیکی میرود.
برای دیدن Target فعلی:
اگر دیدی:
یعنی GUI بهعنوان حالت پیشفرض انتخاب شده.
——————
7️⃣ نصب GUI در Debian / Ubuntu
اول معمولاً Repositoryها باید درست باشند.
برای X.Org:
برای GNOME:
یا بستههای دسکتاپ مناسب نسخه تو، مثلاً:
برای X11 authentication هم:
نکته مهم درباره دستورهای نوشتهشده
اینهایی که نوشتی احتمالاً اشتباه تایپی دارند:
این اسمها به این شکل صحیح نیستند.
مثلاً:
و برای GNOME بسته/Task دقیق را متناسب با توزیع بررسی میکنیم.
———————-
نصب و پیکربندی محیط GUI
——————-
🖥 اول GUI چیست؟
GUI = Graphical User Interface
یعنی محیط گرافیکی که با ماوس، پنجره، آیکون و منو با لینوکس کار میکنیم.
مثلاً بهجای:
mkdir test
در GUI میتوانی با کلیک راست → New Folder پوشه بسازی.
—————-
2️⃣ Window Manager چیست؟
اینجا یک لایه پایینتر داریم.
Window Manager مسئول مدیریت پنجرههاست؛ مثلاً:
پنجره را کجا قرار بده؟
پنجره را Maximize کن
پنجره را Minimize کن
پنجره را ببند
برای محیطهای مختلف:
GNOME → Mutter
KDE → KWin
Cinnamon → Muffin
MATE → Marco
Metacity هم Window Manager قدیمی GNOME بود.
پس خیلی ساده:
Desktop Environment
↓
Window Manager
↓
پنجرهها
——————
3️⃣ XFree86 چیست؟
XFree86 یکی از پیادهسازیهای قدیمی سیستم X Window System بود.
در گذشته وظیفهاش فراهم کردن زیرساخت نمایش گرافیکی در سیستمهای Unix/Linux بود.
بعداً X.Org جایگزین اصلی آن شد.
—————
4️⃣ X.Org چیست؟
X.Org Server یکی از پیادهسازیهای سیستم X Window System است.
به زبان ساده:
برنامهها میخواهند چیزی روی مانیتور نمایش دهند؛ X.Org واسطهای بین برنامهها، ورودیها و سختافزار گرافیکی است.
ساختار ساده:
Application
↓
Desktop Environment
↓
X.Org
↓
GPU / Display
—————
5️⃣ Wayland چیست؟
Wayland یک معماری جدیدتر برای سیستم نمایش گرافیکی است که برای بسیاری از سناریوها جایگزین X11/X.Org میشود.
ساختار آن سادهتر است:
Application
↓
Wayland Compositor
↓
Display
مثلاً در GNOME، Mutter میتواند نقش compositor مربوط به Wayland را هم انجام دهد.
🧠 پس تفاوت اصلی را اینطور حفظ کن:
قدیمیتر:
XFree86 → X.Org / X11
جدیدتر:
Wayland
—————-
6️⃣ نصب GUI در Red Hat / Fedora
اگر از سیستمهای مبتنی بر Red Hat استفاده میکنی، ابتدا میتوانی گروههای نرمافزاری را ببینی:
dnf group list
مثلاً برای نصب محیط GUI:
dnf group install "Server with GUI"
یا در بعضی نسخهها:
dnf group install "Workstation"
⚠️ اسم دقیق Group ممکن است بین نسخههای Fedora/RHEL/AlmaLinux متفاوت باشد؛ اول با
dnf group list بررسی کن.—————
فعال کردن GUI هنگام Boot
بعد از نصب:
systemctl set-default graphical.target
بعد:
reboot
حالا سیستم بهجای محیط متنی، به محیط گرافیکی میرود.
برای دیدن Target فعلی:
systemctl get-default
اگر دیدی:
graphical.target
یعنی GUI بهعنوان حالت پیشفرض انتخاب شده.
——————
7️⃣ نصب GUI در Debian / Ubuntu
اول معمولاً Repositoryها باید درست باشند.
برای X.Org:
apt install xorg
برای GNOME:
apt install gnome
یا بستههای دسکتاپ مناسب نسخه تو، مثلاً:
apt install ubuntu-desktop
برای X11 authentication هم:
apt install xauth
نکته مهم درباره دستورهای نوشتهشده
اینهایی که نوشتی احتمالاً اشتباه تایپی دارند:
apt-get install unmtu-desktop
apt-get install gnome-desktop-environmaent
این اسمها به این شکل صحیح نیستند.
مثلاً:
apt install ubuntu-desktop
و برای GNOME بسته/Task دقیق را متناسب با توزیع بررسی میکنیم.
———————-
👏1
فصل ششم — قسمت شصت و دوم 🐧
قابلیتهای استاندارد در محیط های gui
————————————
حالا که فهمیدیم GUI چیست، ببینیم یک Desktop Environment از چه قسمتهایی تشکیل شده.
————-
🖥 1. Desktop Settings
بخش تنظیمات دسکتاپ.
مثلاً:
یعنی جایی که ظاهر و رفتار سیستم را تنظیم میکنیم.
———————
🖥 2. Display Manager
قبل از ورود به دسکتاپ، صفحه Login را نمایش میدهد.
مثلاً:
نمونهها:
GDM → معمولاً GNOME
SDDM → معمولاً KDE
LightDM → سبک و قابل استفاده با محیطهای مختلف
🧠 Display Manager با Window Manager فرق دارد.
Display Manager → ورود به سیستم
Window Manager → مدیریت پنجرهها
——————-
📁 3. File Manager
برای مدیریت فایل و پوشهها.
مثلاً:
نمونهها:
GNOME → Files / Nautilus
KDE → Dolphin
XFCE → Thunar
Cinnamon → Nemo
MATE → Caja
—————-
🔹 4. Icon
آیکونها میانبرهای گرافیکی برای برنامهها، فایلها و پوشهها هستند.
مثلاً:
———————-
🧩 5. Widget
ابزارهای کوچک روی دسکتاپ یا پنل.
مثلاً:
—————-
⭐️ 6. Favorite Bar / Dock
برنامههای مورد علاقه را سریع در اختیارمان میگذارد.
مثلاً در GNOME میتوانی برنامههای پرکاربرد را در Dash/Dock قرار بدهی.
——————-
🚀 7. Launcher
برای اجرای سریع برنامهها.
مثلاً:
یا جستجو میکنی:
و Terminal را اجرا میکنی.
——————-
📋 8. Menu
منوی برنامهها.
مثلاً:
————-
📊 9. Panel
نوارهایی در بالا یا پایین صفحه که معمولاً اطلاعات و ابزارهای مختلف را نشان میدهند.
مثلاً:
—————-
🪟 10. Window Manager
مسئول مدیریت پنجرههاست.
مثلاً:
———————
🟠 GNOME
GNOME ظاهر مدرن و سادهای دارد.
7
ویژگی مهم:
ساده و تمیز
Activities Overview
جستجوی سریع
مناسب لپتاپ و دسکتاپ
قابلیت گسترش با Extensions
🔵 KDE Plasma
6
KDE خیلی قابل تنظیم است.
مثلاً میتوانی:
پنل را جابهجا کنی
ظاهر را تغییر بدهی
Widget اضافه کنی
رفتار پنجرهها را تغییر بدهی
🧠 اگر GNOME را ساده و مینیمال بدانیم، KDE بیشتر قابل شخصیسازی است.
🟢 Cinnamon
6
ظاهرش برای کسی که از Windows آمده بسیار آشناست:
🟡 XFCE
7
سبک و کممصرف است.
برای:
سیستمهای قدیمی
VMها
سیستمهایی با RAM کم
انتخاب خوبی است.
🟣 MATE
5
MATE هم سبک و کلاسیک است و ساختار سنتی دسکتاپ را حفظ میکند.
—————————-
🧩 GNOME Extensions
یکی از قابلیتهای جذاب GNOME همین Extensions است.
با Extension میتوانیم امکانات جدید به GNOME اضافه کنیم.
مثلاً:
مثلاً:
اضافه کردن پنل
نمایش CPU/RAM
تغییر رفتار پنجرهها
اضافه کردن Dock
تغییر ظاهر Shell
🧠 مثل افزونه مرورگر است؛ ولی برای محیط GNOME.
———————
قابلیتهای استاندارد در محیط های gui
————————————
حالا که فهمیدیم GUI چیست، ببینیم یک Desktop Environment از چه قسمتهایی تشکیل شده.
————-
🖥 1. Desktop Settings
بخش تنظیمات دسکتاپ.
مثلاً:
Settings
├── Display
├── Network
├── Sound
├── Keyboard
├── Mouse
└── Background
یعنی جایی که ظاهر و رفتار سیستم را تنظیم میکنیم.
———————
🖥 2. Display Manager
قبل از ورود به دسکتاپ، صفحه Login را نمایش میدهد.
مثلاً:
Username
Password
↓
Login
↓
Desktop
نمونهها:
GDM → معمولاً GNOME
SDDM → معمولاً KDE
LightDM → سبک و قابل استفاده با محیطهای مختلف
🧠 Display Manager با Window Manager فرق دارد.
Display Manager → ورود به سیستم
Window Manager → مدیریت پنجرهها
——————-
📁 3. File Manager
برای مدیریت فایل و پوشهها.
مثلاً:
Home
├── Documents
├── Downloads
├── Pictures
└── Videos
نمونهها:
GNOME → Files / Nautilus
KDE → Dolphin
XFCE → Thunar
Cinnamon → Nemo
MATE → Caja
—————-
🔹 4. Icon
آیکونها میانبرهای گرافیکی برای برنامهها، فایلها و پوشهها هستند.
مثلاً:
🗑 Trash
📁 Home
🌐 Firefox
———————-
🧩 5. Widget
ابزارهای کوچک روی دسکتاپ یا پنل.
مثلاً:
CPU: 20%
RAM: 45%
Weather: 25°C
Clock: 18:40
—————-
⭐️ 6. Favorite Bar / Dock
برنامههای مورد علاقه را سریع در اختیارمان میگذارد.
مثلاً در GNOME میتوانی برنامههای پرکاربرد را در Dash/Dock قرار بدهی.
——————-
🚀 7. Launcher
برای اجرای سریع برنامهها.
مثلاً:
Super
↓
Firefox
یا جستجو میکنی:
terminal
و Terminal را اجرا میکنی.
——————-
📋 8. Menu
منوی برنامهها.
مثلاً:
Applications
├── Internet
├── Office
├── System
├── Utilities
└── Settings
————-
📊 9. Panel
نوارهایی در بالا یا پایین صفحه که معمولاً اطلاعات و ابزارهای مختلف را نشان میدهند.
مثلاً:
┌──────────────────────────────────────┐
│ Applications Network 🔊 🔋 18:40│
└──────────────────────────────────────┘
—————-
🪟 10. Window Manager
مسئول مدیریت پنجرههاست.
مثلاً:
باز کردن پنجره
بستن
Minimize
Maximize
جابجایی
Resize
———————
🟠 GNOME
GNOME ظاهر مدرن و سادهای دارد.
7
ویژگی مهم:
ساده و تمیز
Activities Overview
جستجوی سریع
مناسب لپتاپ و دسکتاپ
قابلیت گسترش با Extensions
🔵 KDE Plasma
6
KDE خیلی قابل تنظیم است.
مثلاً میتوانی:
پنل را جابهجا کنی
ظاهر را تغییر بدهی
Widget اضافه کنی
رفتار پنجرهها را تغییر بدهی
🧠 اگر GNOME را ساده و مینیمال بدانیم، KDE بیشتر قابل شخصیسازی است.
🟢 Cinnamon
6
ظاهرش برای کسی که از Windows آمده بسیار آشناست:
┌─────────────────────────┐
│ │
│ Desktop │
│ │
├─────────────────────────┤
│ Menu Apps Clock │
└─────────────────────────┘
🟡 XFCE
7
سبک و کممصرف است.
برای:
سیستمهای قدیمی
VMها
سیستمهایی با RAM کم
انتخاب خوبی است.
🟣 MATE
5
MATE هم سبک و کلاسیک است و ساختار سنتی دسکتاپ را حفظ میکند.
—————————-
🧩 GNOME Extensions
یکی از قابلیتهای جذاب GNOME همین Extensions است.
با Extension میتوانیم امکانات جدید به GNOME اضافه کنیم.
مثلاً:
GNOME
↓
Extension
↓
قابلیت جدید
مثلاً:
اضافه کردن پنل
نمایش CPU/RAM
تغییر رفتار پنجرهها
اضافه کردن Dock
تغییر ظاهر Shell
🧠 مثل افزونه مرورگر است؛ ولی برای محیط GNOME.
———————
❤1👏1🙏1
فصل ششم — قسمت شصت و سوم 🐧
Accessibility - برای افراد با مشکلات بینایی
——————-
Accessibility یعنی قابلیتهایی که کمک میکنند افراد دارای محدودیتهای بینایی، شنوایی یا حرکتی راحتتر با کامپیوتر کار کنند.
اینجا تمرکز ما روی Keyboard Accessibility است.
—————-
⌨️ Keyboard Accessibility چیست؟
فرض کن کسی نمیتواند بهراحتی چند کلید را همزمان فشار دهد.
مثلاً برای:
باید سه کلید را با هم بگیرد.
Accessibility میتواند این کار را راحتتر کند.
—————
1️⃣ Sticky Keys
یکی از مهمترین قابلیتهاست.
با Sticky Keys لازم نیست کلیدهای ترکیبی را همزمان نگه داری.
مثلاً بهجای:
میتوانی:
را جداگانه فشار بدهی.
سیستم متوجه میشود که Ctrl و Alt همچنان در ترکیب هستند.
🧠 مثال واقعی:
——————-
2️⃣ Slow Keys
Slow Keys باعث میشود سیستم فشارهای خیلی سریع یا اتفاقی روی کلیدها را نادیده بگیرد.
مثلاً اگر دستت روی کیبورد کشیده شود:
سیستم میتواند تنظیم شود که کلید باید مدت مشخصی نگه داشته شود تا ثبت شود.
مناسب افرادی است که کنترل حرکتی دست برایشان سخت است.
——————-
3️⃣ Bounce Keys
اگر یک کلید را چند بار پشت سر هم بهصورت ناخواسته فشار بدهی، Bounce Keys میتواند فشارهای تکراری سریع را نادیده بگیرد.
مثلاً:
به دلیل چند بار لرزش انگشت ایجاد شده؛ سیستم میتواند جلوی ثبت همه آنها را بگیرد.
—————
4️⃣ Toggle Keys
وقتی کلیدهایی مثل:
را فشار میدهی، Toggle Keys میتواند با صدای متفاوت فعال یا غیرفعال شدن آنها را اعلام کند.
مثلاً:
این برای کسی که نمیتواند وضعیت چراغهای کیبورد را ببیند مفید است.
———————
🔄 5️⃣ Switch / Switching
در Accessibility مفهوم Switch Access هم وجود دارد.
یعنی کاربر میتواند بهجای استفاده از ماوس و کیبورد معمولی، با یک یا چند کلید یا وسیله ورودی ساده بین گزینهها جابهجا شود.
مثلاً:
سیستم گزینهها را یکییکی Highlight میکند و کاربر با فشار یک کلید انتخاب میکند.
—————
🌍 اول یک نکته مهم: تغییر زبان Accessibility نیست
تغییر زبان کیبورد معمولاً در بخش Keyboard / Input Sources تنظیم میشود، نه Accessibility.
مثلاً میخواهی بین:
سوییچ کنی.
در GNOME معمولاً از:
زبان فارسی و انگلیسی را اضافه میکنی.
بعد معمولاً با:
بین زبانها جابهجا میشوی.
در بعضی محیطها میانبر میتواند متفاوت باشد.
—————-
👁 1. قابلیتهای مربوط به بینایی
Screen Reader
صفحه را برای کاربر میخواند.
مثلاً کاربر روی یک آیکون میرود:
Screen Reader اعلام میکند:
در GNOME معمولاً ابزار معروف آن Orca است.
—————
🔍 Zoom / Magnification
قسمتی از صفحه را بزرگ میکند.
مثلاً:
برای افرادی که دید ضعیف دارند بسیار کاربردی است.
——————-
📝 Large Text
اندازه نوشتهها را بزرگ میکند.
🎨 High Contrast
تضاد رنگها را بیشتر میکند تا نوشتهها و عناصر صفحه راحتتر دیده شوند.
——————
👂 2. قابلیتهای مربوط به شنوایی
برای افرادی که مشکل شنوایی دارند، بعضی سیستمها میتوانند بهجای تکیه بر صدا، نمایش بصری ارائه کنند.
مثلاً:
یعنی اتفاقی که با صدا اعلام میشد، بهصورت تصویری هم مشخص شود.
—————-
🖱 4. قابلیتهای مربوط به Mouse
مثلاً Mouse Keys اجازه میدهد با صفحهکلید، نشانگر ماوس را کنترل کنی.
یعنی بهجای حرکت دادن فیزیکی ماوس:
همچنین میتوان سرعت حرکت ماوس و مدت نگهداشتن کلیک را تنظیم کرد.
————-
🧠 5. Switch Access
برای افرادی که نمیتوانند بهراحتی از ماوس و کیبورد معمولی استفاده کنند.
سیستم گزینهها را یکییکی انتخاب میکند:
و کاربر با یک Switch یا ورودی ساده گزینه موردنظر را انتخاب میکند.
—————-
🖥 6. Accessibility در محیطهای مختلف
ممکن است اسم و محل این گزینهها در:
کمی متفاوت باشد.
ولی مفهوم کلی یکی است:
——————
Accessibility - برای افراد با مشکلات بینایی
——————-
Accessibility یعنی قابلیتهایی که کمک میکنند افراد دارای محدودیتهای بینایی، شنوایی یا حرکتی راحتتر با کامپیوتر کار کنند.
اینجا تمرکز ما روی Keyboard Accessibility است.
—————-
⌨️ Keyboard Accessibility چیست؟
فرض کن کسی نمیتواند بهراحتی چند کلید را همزمان فشار دهد.
مثلاً برای:
Ctrl + Alt + Delete
باید سه کلید را با هم بگیرد.
Accessibility میتواند این کار را راحتتر کند.
—————
1️⃣ Sticky Keys
یکی از مهمترین قابلیتهاست.
با Sticky Keys لازم نیست کلیدهای ترکیبی را همزمان نگه داری.
مثلاً بهجای:
Ctrl + Alt + T
میتوانی:
Ctrl
↓
Alt
↓
T
را جداگانه فشار بدهی.
سیستم متوجه میشود که Ctrl و Alt همچنان در ترکیب هستند.
🧠 مثال واقعی:
اگر فردی مشکل حرکتی داشته باشد، بهجای اینکه سه انگشتش را همزمان روی کیبورد بگذارد، کلیدها را یکییکی میزند.
——————-
2️⃣ Slow Keys
Slow Keys باعث میشود سیستم فشارهای خیلی سریع یا اتفاقی روی کلیدها را نادیده بگیرد.
مثلاً اگر دستت روی کیبورد کشیده شود:
aaaaaaaaaaaa
سیستم میتواند تنظیم شود که کلید باید مدت مشخصی نگه داشته شود تا ثبت شود.
مناسب افرادی است که کنترل حرکتی دست برایشان سخت است.
——————-
3️⃣ Bounce Keys
اگر یک کلید را چند بار پشت سر هم بهصورت ناخواسته فشار بدهی، Bounce Keys میتواند فشارهای تکراری سریع را نادیده بگیرد.
مثلاً:
aaaaaaaa
به دلیل چند بار لرزش انگشت ایجاد شده؛ سیستم میتواند جلوی ثبت همه آنها را بگیرد.
—————
4️⃣ Toggle Keys
وقتی کلیدهایی مثل:
Caps Lock
Num Lock
Scroll Lock
را فشار میدهی، Toggle Keys میتواند با صدای متفاوت فعال یا غیرفعال شدن آنها را اعلام کند.
مثلاً:
Caps Lock ON → 🔊
Caps Lock OFF → 🔊
این برای کسی که نمیتواند وضعیت چراغهای کیبورد را ببیند مفید است.
———————
🔄 5️⃣ Switch / Switching
در Accessibility مفهوم Switch Access هم وجود دارد.
یعنی کاربر میتواند بهجای استفاده از ماوس و کیبورد معمولی، با یک یا چند کلید یا وسیله ورودی ساده بین گزینهها جابهجا شود.
مثلاً:
[Firefox] [Terminal] [Files]
↓
Switch
[Terminal] انتخاب شد
سیستم گزینهها را یکییکی Highlight میکند و کاربر با فشار یک کلید انتخاب میکند.
—————
🌍 اول یک نکته مهم: تغییر زبان Accessibility نیست
تغییر زبان کیبورد معمولاً در بخش Keyboard / Input Sources تنظیم میشود، نه Accessibility.
مثلاً میخواهی بین:
🇮🇷 فارسی
🇺🇸 English
سوییچ کنی.
در GNOME معمولاً از:
Settings
↓
Keyboard
↓
Input Sources
↓
Add Input Source
زبان فارسی و انگلیسی را اضافه میکنی.
بعد معمولاً با:
Super + Space
بین زبانها جابهجا میشوی.
در بعضی محیطها میانبر میتواند متفاوت باشد.
—————-
👁 1. قابلیتهای مربوط به بینایی
Screen Reader
صفحه را برای کاربر میخواند.
مثلاً کاربر روی یک آیکون میرود:
Firefox
Screen Reader اعلام میکند:
Firefox، application
در GNOME معمولاً ابزار معروف آن Orca است.
—————
🔍 Zoom / Magnification
قسمتی از صفحه را بزرگ میکند.
مثلاً:
عادی:
[ Settings ]
Zoom:
[ SETTINGS ]
برای افرادی که دید ضعیف دارند بسیار کاربردی است.
——————-
📝 Large Text
اندازه نوشتهها را بزرگ میکند.
🎨 High Contrast
تضاد رنگها را بیشتر میکند تا نوشتهها و عناصر صفحه راحتتر دیده شوند.
——————
👂 2. قابلیتهای مربوط به شنوایی
برای افرادی که مشکل شنوایی دارند، بعضی سیستمها میتوانند بهجای تکیه بر صدا، نمایش بصری ارائه کنند.
مثلاً:
Notification Sound
↓
Visual Flash
یعنی اتفاقی که با صدا اعلام میشد، بهصورت تصویری هم مشخص شود.
—————-
🖱 4. قابلیتهای مربوط به Mouse
مثلاً Mouse Keys اجازه میدهد با صفحهکلید، نشانگر ماوس را کنترل کنی.
یعنی بهجای حرکت دادن فیزیکی ماوس:
Keyboard
↓
Mouse Pointer
همچنین میتوان سرعت حرکت ماوس و مدت نگهداشتن کلیک را تنظیم کرد.
————-
🧠 5. Switch Access
برای افرادی که نمیتوانند بهراحتی از ماوس و کیبورد معمولی استفاده کنند.
سیستم گزینهها را یکییکی انتخاب میکند:
Firefox
↓
Terminal
↓
Files
↓
Settings
و کاربر با یک Switch یا ورودی ساده گزینه موردنظر را انتخاب میکند.
—————-
🖥 6. Accessibility در محیطهای مختلف
ممکن است اسم و محل این گزینهها در:
GNOME
KDE
XFCE
Cinnamon
MATE
کمی متفاوت باشد.
ولی مفهوم کلی یکی است:
👁 Vision
👂 Hearing
⌨️ Keyboard
🖱 Mouse
🗣 Speech / Reading
——————
❤1👏1
فصل ششم — قسمت شصت و چهارم 🐧
مفهوم localization
——————-
Localization یا بومیسازی یعنی سیستمعامل بداند کاربر در چه زبان، کشور و منطقهای کار میکند و اطلاعات را متناسب با آن نمایش دهد.
مثلاً:
—————
🌍 Locale چیست؟
Locale مجموعهای از تنظیمات مربوط به زبان و منطقه کاربر است.
در لینوکس این اطلاعات معمولاً از طریق Environment Variableها مشخص میشوند.
برای دیدن Locale فعلی:
مثلاً ممکن است ببینی:
——————
🧠 مهمترین متغیرها
LANG
تنظیم پیشفرض Locale سیستم/کاربر است.
مثلاً:
یعنی:
—————
LC_ALL
اگر مقدار داشته باشد، میتواند تنظیمات سایر
مثلاً:
معمولاً بهتر است برای تنظیم دائمی بیدلیل از آن استفاده نکنیم.
———————
LC_TIME
فرمت نمایش زمان و تاریخ:
LC_NUMERIC
فرمت اعداد:
LC_MONETARY
فرمت پول:
LC_MESSAGES
زبان پیامهای برنامهها:
—————-
🔤 حالا Encoding چیست؟
اینجا باید یک تفاوت مهم را بفهمی:
Locale ≠ Encoding
Locale میگوید:
Encoding میگوید:
————-
1️⃣ ASCII
قدیمیترین ساختار معروف برای نمایش کاراکترهاست.
مثلاً:
ASCII عمدتاً برای حروف انگلیسی، اعداد و تعدادی علامت طراحی شده.
❌ مشکل:
فارسی، عربی، چینی و بسیاری زبانهای دیگر را پوشش نمیدهد.
2️⃣ ISO-8859
برای گسترش ASCII مجموعههایی از استانداردهای 8 بیتی ایجاد شدند.
مثلاً:
برای بسیاری از کاراکترهای زبانهای اروپای غربی استفاده میشد.
اما هر نسخه مجموعه متفاوتی از کاراکترها را پوشش میدهد.
پس هنوز مشکل چندزبانه بودن کامل وجود داشت.
3️⃣ Unicode
Unicode آمد تا برای تقریباً تمام زبانهای دنیا یک استاندارد واحد برای کاراکترها داشته باشیم.
مثلاً:
همگی میتوانند در Unicode تعریف شوند.
🧠 خیلی ساده:
4️⃣ UTF
اینجا یک نکته خیلی مهم:
Unicode و UTF یکی نیستند.
Unicode مشخص میکند چه کاراکتری چه کدی دارد.
UTF مشخص میکند این اطلاعات چطور در حافظه/فایل به صورت بایت ذخیره یا منتقل شود.
معروفترین آن:
مثلاً:
یعنی Locale انگلیسی آمریکا با Encoding مبتنی بر UTF-8.
——————
🔍 در لینوکس چطور ببینیم؟
مهمترین دستور:
برای دیدن Localeهای موجود:
مثلاً:
و برای دیدن مقدار یک متغیر:
یا:
مفهوم localization
——————-
Localization یا بومیسازی یعنی سیستمعامل بداند کاربر در چه زبان، کشور و منطقهای کار میکند و اطلاعات را متناسب با آن نمایش دهد.
مثلاً:
زبان: فارسی
کشور: ایران
تقویم/فرمت تاریخ: متناسب با تنظیمات منطقه
فرمت عدد: متناسب با Locale
کیبورد: فارسی / انگلیسی
—————
🌍 Locale چیست؟
Locale مجموعهای از تنظیمات مربوط به زبان و منطقه کاربر است.
در لینوکس این اطلاعات معمولاً از طریق Environment Variableها مشخص میشوند.
برای دیدن Locale فعلی:
locale
مثلاً ممکن است ببینی:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=
——————
🧠 مهمترین متغیرها
LANG
تنظیم پیشفرض Locale سیستم/کاربر است.
echo $LANG
مثلاً:
en_US.UTF-8
یعنی:
en → English
US → United States
UTF-8 → Encoding
—————
LC_ALL
اگر مقدار داشته باشد، میتواند تنظیمات سایر
LC_*ها را override کند.مثلاً:
echo $LC_ALL
معمولاً بهتر است برای تنظیم دائمی بیدلیل از آن استفاده نکنیم.
———————
LC_TIME
فرمت نمایش زمان و تاریخ:
echo $LC_TIME
LC_NUMERIC
فرمت اعداد:
echo $LC_NUMERIC
LC_MONETARY
فرمت پول:
echo $LC_MONETARY
LC_MESSAGES
زبان پیامهای برنامهها:
echo $LC_MESSAGES
—————-
🔤 حالا Encoding چیست؟
اینجا باید یک تفاوت مهم را بفهمی:
Locale ≠ Encoding
Locale میگوید:
«سیستم از چه زبان و منطقهای استفاده کند؟»
Encoding میگوید:
«کاراکترها را چطور به داده قابل ذخیره در کامپیوتر تبدیل کنیم؟»
————-
1️⃣ ASCII
قدیمیترین ساختار معروف برای نمایش کاراکترهاست.
مثلاً:
A → 65
B → 66
C → 67
ASCII عمدتاً برای حروف انگلیسی، اعداد و تعدادی علامت طراحی شده.
❌ مشکل:
فارسی، عربی، چینی و بسیاری زبانهای دیگر را پوشش نمیدهد.
2️⃣ ISO-8859
برای گسترش ASCII مجموعههایی از استانداردهای 8 بیتی ایجاد شدند.
مثلاً:
ISO-8859-1
برای بسیاری از کاراکترهای زبانهای اروپای غربی استفاده میشد.
اما هر نسخه مجموعه متفاوتی از کاراکترها را پوشش میدهد.
پس هنوز مشکل چندزبانه بودن کامل وجود داشت.
3️⃣ Unicode
Unicode آمد تا برای تقریباً تمام زبانهای دنیا یک استاندارد واحد برای کاراکترها داشته باشیم.
مثلاً:
A
ش
中
😀
همگی میتوانند در Unicode تعریف شوند.
🧠 خیلی ساده:
ASCII یک محله بود؛ Unicode یک شهر خیلی بزرگ برای کاراکترهای زبانهای مختلف است. 😄
4️⃣ UTF
اینجا یک نکته خیلی مهم:
Unicode و UTF یکی نیستند.
Unicode مشخص میکند چه کاراکتری چه کدی دارد.
UTF مشخص میکند این اطلاعات چطور در حافظه/فایل به صورت بایت ذخیره یا منتقل شود.
معروفترین آن:
UTF-8
مثلاً:
LANG=en_US.UTF-8
یعنی Locale انگلیسی آمریکا با Encoding مبتنی بر UTF-8.
——————
🔍 در لینوکس چطور ببینیم؟
مهمترین دستور:
locale
برای دیدن Localeهای موجود:
locale -a
مثلاً:
C
C.utf8
en_US.utf8
و برای دیدن مقدار یک متغیر:
echo $LANG
یا:
echo $LC_ALL
👏1
فصل ششم — قسمت شصت و پنجم 🐧
Remote Desktop — اتصال گرافیکی از راه دور به لینوکس
——————-
در این قسمت میخواهیم یاد بگیریم چطور از یک کامپیوتر دیگر به محیط گرافیکی لینوکس وصل شویم.
مثلاً:
————-
Remote Desktop چیست؟
یعنی بهجای اینکه جلوی خود سرور باشیم، از کامپیوتر خودمان به آن وصل شویم و محیط گرافیکی آن را ببینیم و کنترل کنیم.
مثلاً:
——————
2️⃣ X11 چیست؟
X11 یکی از سیستمهای قدیمی و معروف Linux/Unix برای نمایش GUI است.
نکته مهم:
مثلاً روی سرور:
و پنجره برنامه روی کامپیوتر کلاینت نمایش داده شود.
—————
3️⃣ X11 Forwarding چیست؟
یعنی اتصال گرافیکی یک برنامه را از طریق SSH منتقل کنیم.
ساختار:
مثلاً:
بعد روی سرور:
اگر X11 Forwarding درست تنظیم شده باشد، پنجره
—————-
4️⃣ فعال کردن X11 Forwarding در SSH
روی سرور فایل:
را باز کن.
دنبال این گزینه بگرد:
اگر
به:
تغییر بده.
بعد:
—————-
نصب X11 روی سیستم
در Debian/Ubuntu ممکن است نیاز داشته باشی:
بعد از کلاینت:
یا در بعضی شرایط:
🧠 تفاوت ساده:
——————
5️⃣ Remmina چیست؟
Remmina یک برنامه GUI برای اتصال Remote به سیستمهای دیگر است.
میتواند با پروتکلهایی مثل:
کار کند.
مثلاً در Ubuntu:
بعد Remmina را باز میکنی:
——————-
6️⃣ Remote Desktop واقعی با RDP
اگر میخواهی کل Desktop لینوکس را از راه دور ببینی، X11 Forwarding انتخاب مناسبی نیست.
برای این کار میتوانی از RDP استفاده کنی.
مثلاً روی بعضی سیستمهای Linux میتوانی
سپس:
بعد از Windows میتوانی برنامه:
را باز کنی و IP لینوکس را وارد کنی.
——————-
7️⃣ X11 Forwarding vs Remote Desktop
این تفاوت را حتماً بفهم:
X11 Forwarding
فقط یک یا چند برنامه گرافیکی را اجرا میکنی:
Remote Desktop
کل محیط دسکتاپ را میبینی:
——————-
Remote Desktop — اتصال گرافیکی از راه دور به لینوکس
——————-
در این قسمت میخواهیم یاد بگیریم چطور از یک کامپیوتر دیگر به محیط گرافیکی لینوکس وصل شویم.
مثلاً:
Windows / Linux
│
│ Network
↓
Linux Server
│
└── GUI
————-
Remote Desktop چیست؟
یعنی بهجای اینکه جلوی خود سرور باشیم، از کامپیوتر خودمان به آن وصل شویم و محیط گرافیکی آن را ببینیم و کنترل کنیم.
مثلاً:
PC خودت
↓
Remote Connection
↓
Linux Server
↓
GNOME / KDE / XFCE
——————
2️⃣ X11 چیست؟
X11 یکی از سیستمهای قدیمی و معروف Linux/Unix برای نمایش GUI است.
نکته مهم:
X11 خودش «Remote Desktop» نیست؛ ولی قابلیت اجرای برنامههای گرافیکی از راه دور را دارد.
مثلاً روی سرور:
gedit
و پنجره برنامه روی کامپیوتر کلاینت نمایش داده شود.
—————
3️⃣ X11 Forwarding چیست؟
یعنی اتصال گرافیکی یک برنامه را از طریق SSH منتقل کنیم.
ساختار:
Client
│
│ SSH
↓
SSH Server
│
↓
X11 Application
مثلاً:
ssh -X ali@192.168.1.10
بعد روی سرور:
xclock
اگر X11 Forwarding درست تنظیم شده باشد، پنجره
xclock روی سیستم کلاینت نمایش داده میشود.—————-
4️⃣ فعال کردن X11 Forwarding در SSH
روی سرور فایل:
nano /etc/ssh/sshd_config
را باز کن.
دنبال این گزینه بگرد:
X11Forwarding yes
اگر
# اولش بود:#X11Forwarding yes
به:
X11Forwarding yes
تغییر بده.
بعد:
systemctl restart sshd
—————-
نصب X11 روی سیستم
در Debian/Ubuntu ممکن است نیاز داشته باشی:
apt install xauth
بعد از کلاینت:
ssh -X user@server-ip
یا در بعضی شرایط:
ssh -Y user@server-ip
🧠 تفاوت ساده:
-X → X11 Forwarding معمولی
-Y → Trusted X11 Forwarding
——————
5️⃣ Remmina چیست؟
Remmina یک برنامه GUI برای اتصال Remote به سیستمهای دیگر است.
میتواند با پروتکلهایی مثل:
RDP
SSH
VNC
SPICE
کار کند.
مثلاً در Ubuntu:
sudo apt install remmina
بعد Remmina را باز میکنی:
Remmina
↓
New Connection
↓
Protocol: RDP
↓
Server: 192.168.1.10
↓
Username
↓
Password
↓
Connect
——————-
6️⃣ Remote Desktop واقعی با RDP
اگر میخواهی کل Desktop لینوکس را از راه دور ببینی، X11 Forwarding انتخاب مناسبی نیست.
برای این کار میتوانی از RDP استفاده کنی.
مثلاً روی بعضی سیستمهای Linux میتوانی
xrdp نصب کنی:sudo apt install xrdp
سپس:
systemctl enable --now xrdp
بعد از Windows میتوانی برنامه:
Remote Desktop Connection
را باز کنی و IP لینوکس را وارد کنی.
——————-
7️⃣ X11 Forwarding vs Remote Desktop
این تفاوت را حتماً بفهم:
X11 Forwarding
فقط یک یا چند برنامه گرافیکی را اجرا میکنی:
SSH
↓
xclock
↓
پنجره xclock روی Client
Remote Desktop
کل محیط دسکتاپ را میبینی:
RDP
↓
Linux Desktop
├── Files
├── Terminal
├── Browser
└── Settings
——————-
❤2👏1
فصل ششم —قسمت اخر - قسمت شصت و ششم 🐧
time and printer - زمان و پرینتر
——————-
در این قسمت دو موضوع مهم داریم:
🕐 مدیریت زمان در لینوکس
🖨 مدیریت پرینتر در لینوکس
———————
🕐 بخش اول — زمان در لینوکس
1️⃣
برای نمایش تاریخ و ساعت فعلی سیستم:
مثلاً:
یعنی سیستم تاریخ، ساعت و Time Zone را نشان میدهد.
——————-
2️⃣
این یکی خیلی مهم است.
یک عدد بزرگ میدهد، مثلاً:
این عدد Unix Timestamp است.
یعنی تعداد ثانیههایی که از:
گذشته است.
🧠 چرا 1970؟
سیستمهای Unix یک نقطه شروع استاندارد برای شمارش زمان انتخاب کردند که به آن:
Unix Epoch
میگوییم.
مثلاً:
به همین دلیل در برنامهنویسی و سیستمها خیلی زیاد Timestamp میبینی.
مثلاً:
یا در PHP:
———-
3️⃣ دستور
اینجا یک اشتباه رایج وجود دارد:
با
مثلاً:
خروجی ممکن است چیزی شبیه این باشد:
یعنی میگوید اجرای
مثال واقعی
اگر بخواهی ببینی یک اسکریپت چقدر طول میکشد:
🧠 پس:
——————-
4️⃣
یکی از مهمترین ابزارهای مدیریت زمان در Linux است.
اطلاعاتی مثل:
را نمایش میدهد.
———————
تغییر Time Zone
اول Time Zoneهای موجود:
مثلاً:
بعد:
را بزن.
————
🌍 Local Time و UTC
در لینوکس معمولاً چند مفهوم زمانی داریم:
Local Time
زمان محلی سیستم.
مثلاً:
UTC
زمان استاندارد جهانی.
مثلاً:
RTC
Real-Time Clock
ساعتی است که در سختافزار سیستم وجود دارد و حتی وقتی سیستمعامل خاموش است، زمان را نگه میدارد.
—————-
🧠 5️⃣ NTP چیست؟
NTP = Network Time Protocol
وظیفهاش این است که ساعت سیستم را با یک Time Server هماهنگ کند.
مثلاً:
چرا مهم است؟
چون ساعت اشتباه میتواند باعث مشکلاتی مثل:
اشتباه بودن زمان Logها
مشکل Certificate
مشکل Authentication
مشکل Kerberos
مشکل هماهنگی سرورها
شود.
برای دیدن وضعیت NTP:
ممکن است ببینی:
——————
🖨 بخش دوم — Printer در Linux
حالا برویم سراغ پرینتر.
در لینوکس سیستم معروفی برای مدیریت پرینتر وجود دارد:
CUPS
CUPS = Common UNIX Printing System
CUPS سیستم اصلی چاپ در بسیاری از توزیعهای Linux و Unix است.
ساختار ساده:
مثلاً Firefox میخواهد یک صفحه را چاپ کند:
—————-
🖨 نصب CUPS
در Debian/Ubuntu:
فعال کردن سرویس:
بررسی:
———
📋 دیدن پرینترها
یکی از ابزارهای مهم CUPS:
مثلاً:
برای دیدن Printerهای موجود.
و:
برای دیدن Printerهایی که درخواستهای چاپ را قبول میکنند.
—————
دستور:
یعنی فایل را برای چاپ ارسال کن.
مثلاً:
—————
❌ حذف یک Job چاپ
اگر اشتباهی فایل بزرگی را برای چاپ فرستادی:
مثلاً:
برای دیدن Jobها:
—————
🌐 پنل گرافیکی CUPS
CUPS یک Web Interface هم دارد.
معمولاً:
در آن میتوانی:
Printer اضافه کنی
Printer حذف کنی
Jobها را ببینی
Printer پیشفرض تعیین کنی
وضعیت Printer را بررسی کنی
time and printer - زمان و پرینتر
——————-
در این قسمت دو موضوع مهم داریم:
🕐 مدیریت زمان در لینوکس
🖨 مدیریت پرینتر در لینوکس
———————
🕐 بخش اول — زمان در لینوکس
1️⃣
dateبرای نمایش تاریخ و ساعت فعلی سیستم:
date
مثلاً:
Mon Aug 24 20:10:30 +0330 2026
یعنی سیستم تاریخ، ساعت و Time Zone را نشان میدهد.
——————-
2️⃣
date +%sاین یکی خیلی مهم است.
date +%s
یک عدد بزرگ میدهد، مثلاً:
1787582430
این عدد Unix Timestamp است.
یعنی تعداد ثانیههایی که از:
1970-01-01 00:00:00 UTC
گذشته است.
🧠 چرا 1970؟
سیستمهای Unix یک نقطه شروع استاندارد برای شمارش زمان انتخاب کردند که به آن:
Unix Epoch
میگوییم.
مثلاً:
1970
↓
شروع شمارش
↓
1 ثانیه
2 ثانیه
3 ثانیه
...
به همین دلیل در برنامهنویسی و سیستمها خیلی زیاد Timestamp میبینی.
مثلاً:
date +%s
یا در PHP:
time();
———-
3️⃣ دستور
timeاینجا یک اشتباه رایج وجود دارد:
time
با
date فرق دارد.time برای اندازهگیری مدت زمان اجرای یک دستور است.مثلاً:
time ls
خروجی ممکن است چیزی شبیه این باشد:
real 0m0.005s
user 0m0.001s
sys 0m0.004s
یعنی میگوید اجرای
ls چقدر زمان برده.مثال واقعی
اگر بخواهی ببینی یک اسکریپت چقدر طول میکشد:
time ./backup.sh
🧠 پس:
date → الان ساعت چند است؟
time → این برنامه چقدر طول کشید؟
——————-
4️⃣
timedatectlیکی از مهمترین ابزارهای مدیریت زمان در Linux است.
timedatectl
اطلاعاتی مثل:
Local time
Universal time
RTC time
Time zone
NTP
را نمایش میدهد.
———————
تغییر Time Zone
اول Time Zoneهای موجود:
timedatectl list-timezones
مثلاً:
sudo timedatectl set-timezone Asia/Tehran
بعد:
timedatectl
را بزن.
————
🌍 Local Time و UTC
در لینوکس معمولاً چند مفهوم زمانی داریم:
Local Time
UTC
RTC
Local Time
زمان محلی سیستم.
مثلاً:
20:30
UTC
زمان استاندارد جهانی.
مثلاً:
17:00 UTC
RTC
Real-Time Clock
ساعتی است که در سختافزار سیستم وجود دارد و حتی وقتی سیستمعامل خاموش است، زمان را نگه میدارد.
—————-
🧠 5️⃣ NTP چیست؟
NTP = Network Time Protocol
وظیفهاش این است که ساعت سیستم را با یک Time Server هماهنگ کند.
مثلاً:
Linux Server
│
│ NTP
↓
Time Server
│
↓
زمان صحیح
چرا مهم است؟
چون ساعت اشتباه میتواند باعث مشکلاتی مثل:
اشتباه بودن زمان Logها
مشکل Certificate
مشکل Authentication
مشکل Kerberos
مشکل هماهنگی سرورها
شود.
برای دیدن وضعیت NTP:
timedatectl
ممکن است ببینی:
System clock synchronized: yes
NTP service: active
——————
🖨 بخش دوم — Printer در Linux
حالا برویم سراغ پرینتر.
در لینوکس سیستم معروفی برای مدیریت پرینتر وجود دارد:
CUPS
CUPS = Common UNIX Printing System
CUPS سیستم اصلی چاپ در بسیاری از توزیعهای Linux و Unix است.
ساختار ساده:
Application
↓
CUPS
↓
Printer
مثلاً Firefox میخواهد یک صفحه را چاپ کند:
Firefox
↓
CUPS
↓
Printer
—————-
🖨 نصب CUPS
در Debian/Ubuntu:
sudo apt install cups
فعال کردن سرویس:
sudo systemctl enable --now cups
بررسی:
systemctl status cups
———
📋 دیدن پرینترها
یکی از ابزارهای مهم CUPS:
lpstat
مثلاً:
lpstat -p
برای دیدن Printerهای موجود.
و:
lpstat -a
برای دیدن Printerهایی که درخواستهای چاپ را قبول میکنند.
—————
دستور:
lp file.txt
یعنی فایل را برای چاپ ارسال کن.
مثلاً:
lp report.pdf
—————
❌ حذف یک Job چاپ
اگر اشتباهی فایل بزرگی را برای چاپ فرستادی:
cancel JOB-ID
مثلاً:
cancel printer-123
برای دیدن Jobها:
lpstat -o
—————
🌐 پنل گرافیکی CUPS
CUPS یک Web Interface هم دارد.
معمولاً:
http://localhost:631
در آن میتوانی:
Printer اضافه کنی
Printer حذف کنی
Jobها را ببینی
Printer پیشفرض تعیین کنی
وضعیت Printer را بررسی کنی
❤2👏2
خب خب فصل شش کاملا و کلا امروز تموم شد.
از فردا به امید خدا فصل هفت رو استارت میزنیم
از فردا به امید خدا فصل هفت رو استارت میزنیم
👏3🕊2❤1
Media is too big
VIEW IN TELEGRAM
حل چالش های Bndit
قسمت اول
————--
از چالش 1 تا 10
——————-
سایت
https://overthewire.org/wargames
—————————-
بابت صدا معذرت میخوام توی ویدیو های بعدی بهتر میشه
این ویدیو دلی بود گفتم بگیرم شما هم بتونید استفاده کنید❤️
#bandit #linux
قسمت اول
————--
از چالش 1 تا 10
——————-
سایت
https://overthewire.org/wargames
—————————-
بابت صدا معذرت میخوام توی ویدیو های بعدی بهتر میشه
این ویدیو دلی بود گفتم بگیرم شما هم بتونید استفاده کنید❤️
#bandit #linux
👏3🔥2❤1👍1🎉1
فصل هفتم — قسمت شصت و هفتم 🐧
مدیریت کردن سیستم — System Administration
——————-
فصل هفتم وارد بخش مدیریت واقعی یک Linux Server میشود. یعنی اینجا دیگر فقط با دستورات لینوکس کار نمیکنیم؛ یاد میگیریم یک سیستم را اداره و نگهداری کنیم.
چهار بخش اصلی این فصل:
———————-
1️⃣ مدیریت کاربران و گروهها 👤
در لینوکس هر کسی که وارد سیستم میشود یک User دارد.
مثلاً:
هر User میتواند عضو یک یا چند Group باشد.
مثلاً:
چرا Group داریم؟
فرض کن ۱۰ نفر در یک شرکت داریم و همه باید به یک پوشه دسترسی داشته باشند.
بهجای اینکه برای تکتک افراد Permission تنظیم کنیم:
یک گروه میسازیم:
و همه را عضو آن میکنیم.
———————
دستورات مهمی که در این بخش خواهیم داشت:
فایلهای مهم:
🧠 این چهار فایل را خیلی خوب یاد بگیر.
————————-
2️⃣ مدیریت زمان 🕐
این قسمت ادامه چیزی است که در فصل قبل خواندیم.
سرور باید ساعت صحیح داشته باشد.
چون زمان اشتباه باعث مشکل در:
Log
Authentication
Certificate
Kerberos
Cron
ارتباط بین سرورها
میشود.
ابزارهای مهم:
و مهمتر:
برای هماهنگ کردن ساعت سرور با Time Server.
——————
3️⃣ مدیریت Logها 📋
Log یعنی گزارش اتفاقاتی که در سیستم رخ داده است.
مثلاً:
فرض کن SSH کار نمیکند.
بهجای حدس زدن:
میرویم Logها را بررسی میکنیم.
در سیستمهای Linux دو روش مهم داریم:
سیستمهای سنتی
مثلاً:
در بعضی توزیعها:
systemd
ابزار بسیار مهم:
مثلاً:
یا برای SSH:
——————————
4️⃣ Mail Transfer Agent 📧
اینجا قرار نیست فعلاً Mail Server کامل بسازیم.
فقط مفهوم MTA را یاد میگیریم.
MTA چیست؟
Mail Transfer Agent
برنامهای است که مسئول انتقال Email بین Mail Serverها است.
مثلاً:
نمونه MTAها:
یکی از معروفترینها:
——————
🧠 فرق Mail Client و MTA
مثلاً:
Thunderbird
یک Mail Client است.
یعنی کاربر با آن Email را میخواند و ارسال میکند.
اما:
Postfix
یک MTA است.
یعنی وظیفه انتقال Mail را برعهده دارد.
—————-
مدیریت کردن سیستم — System Administration
——————-
فصل هفتم وارد بخش مدیریت واقعی یک Linux Server میشود. یعنی اینجا دیگر فقط با دستورات لینوکس کار نمیکنیم؛ یاد میگیریم یک سیستم را اداره و نگهداری کنیم.
چهار بخش اصلی این فصل:
System Administration
│
├── 👤 Users & Groups
├── 🕐 Time Management
├── 📋 Logs
└── 📧 Mail Transfer Agent
———————-
1️⃣ مدیریت کاربران و گروهها 👤
در لینوکس هر کسی که وارد سیستم میشود یک User دارد.
مثلاً:
root
ali
admin
هر User میتواند عضو یک یا چند Group باشد.
مثلاً:
ali
├── users
├── developers
└── docker
چرا Group داریم؟
فرض کن ۱۰ نفر در یک شرکت داریم و همه باید به یک پوشه دسترسی داشته باشند.
بهجای اینکه برای تکتک افراد Permission تنظیم کنیم:
ali
reza
mohammad
sara
...
یک گروه میسازیم:
developers
و همه را عضو آن میکنیم.
———————
دستورات مهمی که در این بخش خواهیم داشت:
useradd
usermod
userdel
passwd
id
who
whoami
groups
groupadd
groupmod
groupdel
فایلهای مهم:
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
🧠 این چهار فایل را خیلی خوب یاد بگیر.
————————-
2️⃣ مدیریت زمان 🕐
این قسمت ادامه چیزی است که در فصل قبل خواندیم.
سرور باید ساعت صحیح داشته باشد.
چون زمان اشتباه باعث مشکل در:
Log
Authentication
Certificate
Kerberos
Cron
ارتباط بین سرورها
میشود.
ابزارهای مهم:
date
timedatectl
و مهمتر:
NTP
برای هماهنگ کردن ساعت سرور با Time Server.
——————
3️⃣ مدیریت Logها 📋
Log یعنی گزارش اتفاقاتی که در سیستم رخ داده است.
مثلاً:
SSH login
Failed login
Service started
Service stopped
Kernel error
Disk error
فرض کن SSH کار نمیکند.
بهجای حدس زدن:
چرا SSH کار نمیکنه؟ 🤔
میرویم Logها را بررسی میکنیم.
در سیستمهای Linux دو روش مهم داریم:
سیستمهای سنتی
/var/log/
مثلاً:
/var/log/auth.log
/var/log/syslog
در بعضی توزیعها:
/var/log/secure
/var/log/messages
systemd
ابزار بسیار مهم:
journalctl
مثلاً:
journalctl
یا برای SSH:
journalctl -u ssh
——————————
4️⃣ Mail Transfer Agent 📧
اینجا قرار نیست فعلاً Mail Server کامل بسازیم.
فقط مفهوم MTA را یاد میگیریم.
MTA چیست؟
Mail Transfer Agent
برنامهای است که مسئول انتقال Email بین Mail Serverها است.
مثلاً:
User
↓
Mail Client
↓
Mail Server
↓
MTA
↓
Internet
↓
Destination Mail Server
نمونه MTAها:
Postfix
Sendmail
Exim
یکی از معروفترینها:
Postfix
——————
🧠 فرق Mail Client و MTA
مثلاً:
Thunderbird
یک Mail Client است.
یعنی کاربر با آن Email را میخواند و ارسال میکند.
اما:
Postfix
یک MTA است.
یعنی وظیفه انتقال Mail را برعهده دارد.
—————-
❤2🔥1
فصل هفتم — قسمت شصت و هشتم 🐧
مدیریت کاربران در لینوکس
——————-
در این قسمت میخواهیم بفهمیم User در لینوکس دقیقاً چیست، چطور ساخته میشود، کجا اطلاعاتش ذخیره میشود و چطور Permission و Group آن را مدیریت کنیم.
——————
1️⃣ چرا User ایجاد میکنیم؟
یکی از اشتباهات بزرگ در Linux این است که همه با
مثلاً اگر با root اشتباهی بزنی:
ممکن است اطلاعات مهمی از بین برود.
پس برای هر شخص یا سرویس یک User جدا میسازیم.
مثلاً:
هر User میتواند Permission متفاوتی داشته باشد.
——————
2️⃣ آیا Root را حذف میکنیم؟
❌ معمولاً root را حذف نمیکنیم.
Root یک حساب سیستمی ضروری است.
کاری که معمولاً انجام میدهیم این است که:
مثلاً:
در Red Hat و خانواده آن، گروه
در Debian/Ubuntu معمولاً گروه مهم:
است.
مثلاً:
—————————-
3️⃣ User و Group
هر User یک UID دارد.
هر Group یک GID دارد.
مثلاً:
ممکن است ببینی:
یعنی:
——————-
4️⃣ دستور
برای دیدن گروههای کاربر:
مثلاً:
———————
5️⃣ دستور
اطلاعات کاملتری میدهد:
مثلاً:
🧠 برای امتحان:
————————-
6️⃣ Login Shell چیست؟
وقتی User ایجاد میشود، برای او یک Shell مشخص میشود.
مثلاً:
اما بعضی Userها اصلاً برای Login کردن ساخته نشدهاند.
مثلاً User مربوط به سرویسها:
ممکن است Shell آنها:
باشد.
یعنی:
مثلاً:
ممکن است ببینی:
——————
7️⃣ ساخت User
دستور اصلی:
بعد برایش Password:
اما بهتر است هنگام ساخت User گزینههای موردنیاز را هم مشخص کنیم.
مثلاً:
یعنی:
بعد:
——————
8️⃣ هنگام ساخت User چه اتفاقی میافتد؟
وقتی:
میزنی، چند اتفاق مهم میافتد.
1. UID ایجاد میشود
مثلاً:
2. Group ساخته/تنظیم میشود
3. Home ساخته میشود:
4. فایلهای اولیه از
5. اطلاعات User در فایلهای سیستم ثبت میشود.
——————
9️⃣
یعنی یک قالب اولیه برای Home User.
مثلاً:
وقتی User جدید میسازی:
فایلهای موجود در
کپی میشوند.
🧠 مثال واقعی:
مثل این است که برای هر کارمند جدید، یک پوشه آماده با تنظیمات اولیه داشته باشی.
—————-
🔟
اطلاعات عمومی Userها در:
قرار دارد.
مثلاً:
یک خط ممکن است این شکلی باشد:
ساختار:
نکته مهم
در سیستمهای مدرن، Password واقعی داخل
آن
————————-
1️⃣1️⃣
این فایل اطلاعات حساس مربوط به Password را نگه میدارد.
مثلاً:
Password به صورت Hash ذخیره میشود، نه Password خام.
⚠️ دسترسی این فایل بسیار محدود است.
——————-
1️⃣2️⃣
مثلاً:
میتوانی تنظیماتی مربوط به:
محدوده UID
محدوده GID
عمر Password
تنظیمات Password
Home Directory
را در آن ببینی.
————
1️⃣3️⃣
برای دیدن Defaultهای useradd:
مثلاً ممکن است:
ببینی.
یعنی وقتی User جدید میسازی،
——————
1️⃣4️⃣ مدیریت Password با
ساخت/تغییر Password:
چند Option مهم:
قفل کردن حساب:
باز کردن:
منقضی کردن Password:
دیدن وضعیت:
حذف Password:
⚠️
———————-
1️⃣5️⃣
برای تغییر مشخصات User:
مثلاً تغییر Shell:
تغییر Home:
اضافه کردن User به Group:
⚠️ نکته خیلی مهم
این:
یعنی User را به Groupهای اضافی اضافه کن.
حتماً
چون:
ممکن است عضویتهای قبلی کاربر در گروههای supplementary را جایگزین کند.
——————-
1️⃣6️⃣ ساخت Group
اگر بخواهی GID مشخص بدهی:
بررسی:
——————-
1️⃣7️⃣ اضافه کردن User به Group
مثلاً:
بعد:
یا:
——————-
1️⃣8️⃣ Wheel چیست؟
در سیستمهای Red Hat / Fedora / AlmaLinux گروه:
معمولاً برای دسترسی مدیریتی با
مثلاً:
بعد کاربر
در Debian/Ubuntu معمولاً:
🧠 حفظ کن:
————————
مدیریت کاربران در لینوکس
——————-
در این قسمت میخواهیم بفهمیم User در لینوکس دقیقاً چیست، چطور ساخته میشود، کجا اطلاعاتش ذخیره میشود و چطور Permission و Group آن را مدیریت کنیم.
——————
1️⃣ چرا User ایجاد میکنیم؟
یکی از اشتباهات بزرگ در Linux این است که همه با
root کار کنند.root قدرت بسیار زیادی دارد:root
↓
دسترسی تقریباً کامل به سیستم
مثلاً اگر با root اشتباهی بزنی:
rm -rf /some/path
ممکن است اطلاعات مهمی از بین برود.
پس برای هر شخص یا سرویس یک User جدا میسازیم.
مثلاً:
root
├── ali
├── reza
└── apache
هر User میتواند Permission متفاوتی داشته باشد.
——————
2️⃣ آیا Root را حذف میکنیم؟
❌ معمولاً root را حذف نمیکنیم.
Root یک حساب سیستمی ضروری است.
کاری که معمولاً انجام میدهیم این است که:
استفاده مستقیم از root را محدود میکنیم و به کاربران عادی در صورت نیاز دسترسی مدیریتی میدهیم.
مثلاً:
sudo usermod -aG wheel ali
در Red Hat و خانواده آن، گروه
wheel معمولاً برای دسترسی sudo استفاده میشود.در Debian/Ubuntu معمولاً گروه مهم:
sudo
است.
مثلاً:
sudo usermod -aG sudo ali
—————————-
3️⃣ User و Group
هر User یک UID دارد.
هر Group یک GID دارد.
مثلاً:
id ali
ممکن است ببینی:
uid=1000(ali) gid=1000(ali) groups=1000(ali),10(wheel)
یعنی:
UID → شناسه کاربر
GID → گروه اصلی
groups → گروههایی که کاربر عضو آنهاست
——————-
4️⃣ دستور
groupsبرای دیدن گروههای کاربر:
groups ali
مثلاً:
ali : ali wheel developers
———————
5️⃣ دستور
idاطلاعات کاملتری میدهد:
id ali
مثلاً:
uid=1001(ali)
gid=1001(ali)
groups=1001(ali),10(wheel)
🧠 برای امتحان:
groups → گروهها
id → UID + GID + Groups
————————-
6️⃣ Login Shell چیست؟
وقتی User ایجاد میشود، برای او یک Shell مشخص میشود.
مثلاً:
/bin/bash
اما بعضی Userها اصلاً برای Login کردن ساخته نشدهاند.
مثلاً User مربوط به سرویسها:
apache
nginx
mysql
ممکن است Shell آنها:
/usr/sbin/nologin
باشد.
یعنی:
این حساب برای اجرای سرویس است، نه ورود تعاملی کاربر.
مثلاً:
grep nginx /etc/passwd
ممکن است ببینی:
nginx:x:...:/usr/sbin/nologin
——————
7️⃣ ساخت User
دستور اصلی:
useradd ali
بعد برایش Password:
passwd ali
اما بهتر است هنگام ساخت User گزینههای موردنیاز را هم مشخص کنیم.
مثلاً:
useradd -m -s /bin/bash ali
یعنی:
-m → Home Directory بساز
-s → Shell مشخص کن
بعد:
passwd ali
——————
8️⃣ هنگام ساخت User چه اتفاقی میافتد؟
وقتی:
useradd -m ali
میزنی، چند اتفاق مهم میافتد.
1. UID ایجاد میشود
مثلاً:
1001
2. Group ساخته/تنظیم میشود
3. Home ساخته میشود:
/home/ali
4. فایلهای اولیه از
/etc/skel کپی میشوند.5. اطلاعات User در فایلهای سیستم ثبت میشود.
——————
9️⃣
/etc/skel چیست؟skel مخفف Skeleton است.یعنی یک قالب اولیه برای Home User.
مثلاً:
/etc/skel/
├── .bashrc
├── .profile
└── ...
وقتی User جدید میسازی:
useradd -m ali
فایلهای موجود در
/etc/skel معمولاً به:/home/ali/
کپی میشوند.
🧠 مثال واقعی:
مثل این است که برای هر کارمند جدید، یک پوشه آماده با تنظیمات اولیه داشته باشی.
—————-
🔟
/etc/passwdاطلاعات عمومی Userها در:
/etc/passwd
قرار دارد.
مثلاً:
cat /etc/passwd
یک خط ممکن است این شکلی باشد:
ali:x:1001:1001:Ali:/home/ali:/bin/bash
ساختار:
username
:
password placeholder
:
UID
:
GID
:
GECOS
:
Home
:
Shell
نکته مهم
در سیستمهای مدرن، Password واقعی داخل
/etc/passwd نیست.آن
x معمولاً یعنی اطلاعات Password در:/etc/shadow
————————-
1️⃣1️⃣
/etc/shadowاین فایل اطلاعات حساس مربوط به Password را نگه میدارد.
sudo cat /etc/shadow
مثلاً:
ali:$6$........:...
Password به صورت Hash ذخیره میشود، نه Password خام.
⚠️ دسترسی این فایل بسیار محدود است.
——————-
1️⃣2️⃣
/etc/login.defsمثلاً:
cat /etc/login.defs
میتوانی تنظیماتی مربوط به:
محدوده UID
محدوده GID
عمر Password
تنظیمات Password
Home Directory
را در آن ببینی.
————
1️⃣3️⃣
useradd -Dبرای دیدن Defaultهای useradd:
useradd -D
مثلاً ممکن است:
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
ببینی.
یعنی وقتی User جدید میسازی،
useradd از این Defaultها استفاده میکند.——————
1️⃣4️⃣ مدیریت Password با
passwdساخت/تغییر Password:
passwd ali
چند Option مهم:
قفل کردن حساب:
passwd -l ali
باز کردن:
passwd -u ali
منقضی کردن Password:
passwd -e ali
دیدن وضعیت:
passwd -S ali
حذف Password:
passwd -d ali
⚠️
passwd -d یعنی Password حساب را حذف میکنی و از نظر امنیتی باید با احتیاط استفاده شود.———————-
1️⃣5️⃣
usermodبرای تغییر مشخصات User:
usermod
مثلاً تغییر Shell:
sudo usermod -s /bin/bash ali
تغییر Home:
sudo usermod -d /home/newali -m ali
اضافه کردن User به Group:
sudo usermod -aG project42 ali
⚠️ نکته خیلی مهم
این:
-aG
یعنی User را به Groupهای اضافی اضافه کن.
حتماً
-a را یادت باشد.چون:
usermod -G project42 ali
ممکن است عضویتهای قبلی کاربر در گروههای supplementary را جایگزین کند.
——————-
1️⃣6️⃣ ساخت Group
sudo groupadd project42
اگر بخواهی GID مشخص بدهی:
sudo groupadd -g 1042 project42
بررسی:
getent group project42
——————-
1️⃣7️⃣ اضافه کردن User به Group
مثلاً:
sudo usermod -aG project42 ali
بعد:
groups ali
یا:
id ali
——————-
1️⃣8️⃣ Wheel چیست؟
در سیستمهای Red Hat / Fedora / AlmaLinux گروه:
wheel
معمولاً برای دسترسی مدیریتی با
sudo استفاده میشود.مثلاً:
sudo usermod -aG wheel ali
بعد کاربر
ali میتواند در صورت تنظیم صحیح sudoers از sudo استفاده کند.در Debian/Ubuntu معمولاً:
sudo usermod -aG sudo ali
🧠 حفظ کن:
Red Hat family → wheel
Debian family → sudo
————————
فصل هفتم — قسمت شصت و نهم 🐧
پیاده سازی su و sudo
————————————
در این قسمت دو مفهوم خیلی مهم برای مدیریت دسترسی کاربران داریم:
——————
1️⃣
یعنی از یک User وارد User دیگری شویم.
مثلاً:
→ وارد حساب
برای رفتن به root:
→ وارد root میشوی و محیط Login مربوط به root را هم دریافت میکنی.
🧠 تفاوت مهم:
—————————
2️⃣
مثلاً کاربر
ولی میخواهد یک Package نصب کند:
دستور با دسترسی root اجرا میشود، ولی خود User تبدیل به root نمیشود.
مثلاً:
فقط همان دستور با دسترسی مناسب اجرا میشود.
————————
3️⃣ چرا
فرض کن:
فقط زمانی که نیاز دارد:
اجرا میکند.
بنابراین لازم نیست دائماً داخل root باشی.
این موضوع از نظر امنیت و Audit هم بهتر است.
————————
4️⃣
قوانین
اما ❌ نباید معمولاً با
از:
استفاده میکنیم.
———————-
5️⃣ ساختار یک قانون sudoers
مثلاً:
یعنی:
پس:
⚠️ این دسترسی بسیار قدرتمند است و عملاً تقریباً معادل دسترسی کامل مدیریتی است.
——————
6️⃣ یک مثال محدودتر
مثلاً فقط اجازه بدهیم
یعنی:
کاربر نمیتواند با همین Rule مثلاً این را اجرا کند:
————-
7️⃣ یک مثال کاربردی دیگر
فرض کنیم کاربر
پس:
مجاز است، اما مثلاً:
مجاز نیست.
🧠 این همان اصل Least Privilege است:
————-
8️⃣ مثال برای
Rule خودت:
یعنی
را با دسترسی root اجرا کند.
اما یک نکته مهم:
⚠️ مسیر Binary را دقیق بررسی کن
ممکن است در سیستم مسیر
با:
مسیر واقعی را پیدا کن.
مثلاً:
و همان را در sudoers بنویس.
—————
9️⃣
در خانواده Red Hat:
گروه معروف مدیریتی:
است.
مثلاً:
یعنی
بعد اگر sudoers سیستم اجازه داده باشد،
————-
🔟 در Debian/Ubuntu
در Debian و Ubuntu معمولاً گروه:
است.
مثلاً:
پیاده سازی su و sudo
————————————
در این قسمت دو مفهوم خیلی مهم برای مدیریت دسترسی کاربران داریم:
su
↓
تغییر کاربر
sudo
↓
اجرای یک دستور با دسترسی کاربر دیگر، معمولاً root
——————
1️⃣
su چیست؟su مخفف Switch User است.یعنی از یک User وارد User دیگری شویم.
مثلاً:
su ali
→ وارد حساب
ali میشوی و Password او را میخواهد.برای رفتن به root:
su -
→ وارد root میشوی و محیط Login مربوط به root را هم دریافت میکنی.
🧠 تفاوت مهم:
su
→ تغییر User
sudo
→ اجرای یک دستور با دسترسی User دیگر
—————————
2️⃣
sudo چیست؟sudo یعنی:این دستور را با دسترسی مدیریتی اجرا کن.
مثلاً کاربر
ali کاربر معمولی است:whoami
ali
ولی میخواهد یک Package نصب کند:
sudo dnf install nginx
دستور با دسترسی root اجرا میشود، ولی خود User تبدیل به root نمیشود.
مثلاً:
sudo systemctl restart sshd
فقط همان دستور با دسترسی مناسب اجرا میشود.
————————
3️⃣ چرا
sudo بهتر از استفاده دائمی از root است؟فرض کن:
ali → User معمولی
فقط زمانی که نیاز دارد:
sudo command
اجرا میکند.
بنابراین لازم نیست دائماً داخل root باشی.
این موضوع از نظر امنیت و Audit هم بهتر است.
————————
4️⃣
sudoers چیست؟قوانین
sudo در این قسمت مدیریت میشوند:/etc/sudoers
اما ❌ نباید معمولاً با
nano مستقیماً فایل را ویرایش کنیم.از:
visudo
استفاده میکنیم.
visudo فایل sudoers را با بررسی Syntax ویرایش میکند.———————-
5️⃣ ساختار یک قانون sudoers
مثلاً:
admin1 ALL=(ALL) NOPASSWD: ALL
یعنی:
admin1
↓
نام کاربر
ALL
↓
از هر Host
(ALL)
↓
میتواند به عنوان Userهای مجاز اجرا کند
NOPASSWD
↓
Password نمیخواهد
ALL
↓
تمام دستورات
پس:
admin1میتواند تمام دستورات sudo را بدون درخواست Password اجرا کند.
⚠️ این دسترسی بسیار قدرتمند است و عملاً تقریباً معادل دسترسی کامل مدیریتی است.
——————
6️⃣ یک مثال محدودتر
مثلاً فقط اجازه بدهیم
ali سرویس SSH را Restart کند:ali ALL=(root) /usr/bin/systemctl restart sshd
یعنی:
ali
↓
sudo
↓
فقط systemctl restart sshd
↓
با دسترسی root
کاربر نمیتواند با همین Rule مثلاً این را اجرا کند:
sudo dnf install nginx
————-
7️⃣ یک مثال کاربردی دیگر
فرض کنیم کاربر
backup فقط اجازه داشته باشد Backup را اجرا کند:backup ALL=(root) /usr/local/bin/backup.sh
پس:
sudo /usr/local/bin/backup.sh
مجاز است، اما مثلاً:
sudo rm -rf /important
مجاز نیست.
🧠 این همان اصل Least Privilege است:
هر User فقط به اندازهای که لازم دارد دسترسی داشته باشد.
————-
8️⃣ مثال برای
dnfRule خودت:
admin2 ALL=(root) /usr/bin/dnf update
یعنی
admin2 اجازه دارد:sudo /usr/bin/dnf update
را با دسترسی root اجرا کند.
اما یک نکته مهم:
⚠️ مسیر Binary را دقیق بررسی کن
ممکن است در سیستم مسیر
dnf متفاوت باشد.با:
which dnf
مسیر واقعی را پیدا کن.
مثلاً:
/usr/bin/dnf
و همان را در sudoers بنویس.
—————
9️⃣
wheel در Red Hatدر خانواده Red Hat:
RHEL
Fedora
AlmaLinux
Rocky Linux
گروه معروف مدیریتی:
wheel
است.
مثلاً:
usermod -aG wheel ali
یعنی
ali را عضو wheel کن.بعد اگر sudoers سیستم اجازه داده باشد،
ali میتواند از sudo استفاده کند.————-
🔟 در Debian/Ubuntu
در Debian و Ubuntu معمولاً گروه:
sudo
است.
مثلاً:
usermod -aG sudo ali
فصل هفتم — قسمت هفتاد 🐧
Install Mail server
—————————
در قسمت قبل با MTA آشنا شدیم. اینجا یک قدم عملیتر میشویم و یک Mail Server ساده را با Postfix راهاندازی میکنیم.
————————-
1️⃣ ساختار کلی Mail Server
وقتی یک Email میفرستی، چند جزء میتوانند درگیر باشند:
📩 MUA — Mail User Agent
برنامهای که کاربر با آن Email را میخواند یا میفرستد.
مثلاً:
یعنی رابط کاربر با سیستم Mail.
——————
🚚 MTA — Mail Transfer Agent
وظیفهاش انتقال Email بین Mail Serverها است.
مثلاً:
مثال:
———————-
📥 MDA — Mail Delivery Agent
وقتی Mail به سرور مقصد رسید، MDA آن را در محل مناسب Mailbox کاربر تحویل میدهد.
مثلاً:
———-
2️⃣ انتخاب MTA
در Linux چند MTA معروف داریم:
در این آموزش از:
⭐️ Postfix
استفاده میکنیم.
Postfix یکی از MTAهای معروف Linux است و برای ارسال و دریافت SMTP استفاده میشود.
——————————
3️⃣ نصب Postfix
در Red Hat / Fedora / AlmaLinux:
بعد سرویس را فعال و اجرا کن:
بررسی:
——————
4️⃣ فایل تنظیمات Postfix
فایلی که باید بشناسی:
⚠️ در جزوهات نوشته بودی:
درستش:
5️⃣
در:
گزینه:
یعنی Postfix روی تمام Interfaceهای شبکه سیستم گوش بدهد.
مثلاً اگر سرور چند IP داشته باشد:
با:
Postfix روی Interfaceهای مناسب سیستم Listen میکند.
🧠 برای سرور واقعی باید این تنظیم را با توجه به نیاز و مدل شبکه انجام داد؛ باز گذاشتن سرویس SMTP روی همه Interfaceها بدون تنظیمات امنیتی میتواند خطرناک باشد.
—————
6️⃣ پورت SMTP
پروتکل اصلی ارسال Mail:
پورت استاندارد:
برای Submission معمولاً:
و SMTPS:
در این قسمت فعلاً مفهوم اصلی را با 25 یاد بگیر.
بررسی:
ممکن است ببینی:
یعنی Postfix روی پورت SMTP در حال Listen است.
————————
7️⃣ Firewall
اگر سرور باید از بیرون SMTP دریافت کند، پورت موردنظر باید در Firewall مجاز باشد.
مثلاً در سیستمهای دارای firewalld:
بررسی:
——————
8️⃣ ارسال Email از Command Line
یکی از ابزارهای ساده:
نصب:
بعد میتوانی Mail بفرستی.
مثلاً:
ساختار:
——————
9️⃣ Mail محلی در Linux
یکی از بهترین تمرینها برای فهم Mail Server این است که اول Mail داخلی خود Linux را امتحان کنی.
مثلاً یک User بساز:
بعد:
اینجا Email از طریق Mail System محلی تحویل User میشود.
بعد با:
میتوانی Mailهای محلی را ببینی.
—————
10️⃣ لاگ Mail را کجا ببینیم؟
یکی از مهمترین چیزها در عیبیابی Mail Server، Log است.
در Red Hat-basedها معمولاً:
مثلاً:
حالا در یک Terminal دیگر Mail بفرست:
و در Terminal اول Log را ببین.
این فوقالعاده مهم است چون میتوانی ببینی:
——————-
1️⃣1️⃣ در Debian/Ubuntu
ممکن است Mail Log را در این مسیر ببینی:
پس:
————-
Install Mail server
—————————
در قسمت قبل با MTA آشنا شدیم. اینجا یک قدم عملیتر میشویم و یک Mail Server ساده را با Postfix راهاندازی میکنیم.
————————-
1️⃣ ساختار کلی Mail Server
وقتی یک Email میفرستی، چند جزء میتوانند درگیر باشند:
MUA → MTA → MTA → MDA
📩 MUA — Mail User Agent
برنامهای که کاربر با آن Email را میخواند یا میفرستد.
مثلاً:
Thunderbird
Outlook
Webmail
یعنی رابط کاربر با سیستم Mail.
——————
🚚 MTA — Mail Transfer Agent
وظیفهاش انتقال Email بین Mail Serverها است.
مثلاً:
Postfix
Exim
Sendmail
OpenSMTPD
مثال:
MUA
↓
Postfix
↓
Internet
↓
Postfix مقص
———————-
📥 MDA — Mail Delivery Agent
وقتی Mail به سرور مقصد رسید، MDA آن را در محل مناسب Mailbox کاربر تحویل میدهد.
مثلاً:
MTA
↓
MDA
↓
Mailbox
———-
2️⃣ انتخاب MTA
در Linux چند MTA معروف داریم:
Postfix
Sendmail
Exim
OpenSMTPD
در این آموزش از:
⭐️ Postfix
استفاده میکنیم.
Postfix یکی از MTAهای معروف Linux است و برای ارسال و دریافت SMTP استفاده میشود.
——————————
3️⃣ نصب Postfix
در Red Hat / Fedora / AlmaLinux:
dnf install postfix
بعد سرویس را فعال و اجرا کن:
systemctl enable --now postfix
بررسی:
systemctl status postfix
——————
4️⃣ فایل تنظیمات Postfix
فایلی که باید بشناسی:
/etc/postfix/main.cf
⚠️ در جزوهات نوشته بودی:
/etc/postfix/main.cfg
درستش:
/etc/postfix/main.cf
5️⃣
inet_interfacesدر:
nano /etc/postfix/main.cf
گزینه:
inet_interfaces = all
یعنی Postfix روی تمام Interfaceهای شبکه سیستم گوش بدهد.
مثلاً اگر سرور چند IP داشته باشد:
eth0 → 192.168.1.10
eth1 → 10.0.0.10
با:
inet_interfaces = all
Postfix روی Interfaceهای مناسب سیستم Listen میکند.
🧠 برای سرور واقعی باید این تنظیم را با توجه به نیاز و مدل شبکه انجام داد؛ باز گذاشتن سرویس SMTP روی همه Interfaceها بدون تنظیمات امنیتی میتواند خطرناک باشد.
—————
6️⃣ پورت SMTP
پروتکل اصلی ارسال Mail:
SMTP
پورت استاندارد:
25
برای Submission معمولاً:
587
و SMTPS:
465
در این قسمت فعلاً مفهوم اصلی را با 25 یاد بگیر.
بررسی:
ss -lntp | grep :25
ممکن است ببینی:
LISTEN ... :25
یعنی Postfix روی پورت SMTP در حال Listen است.
————————
7️⃣ Firewall
اگر سرور باید از بیرون SMTP دریافت کند، پورت موردنظر باید در Firewall مجاز باشد.
مثلاً در سیستمهای دارای firewalld:
firewall-cmd --permanent --add-service=smtp
firewall-cmd --reload
بررسی:
firewall-cmd --list-services
——————
8️⃣ ارسال Email از Command Line
یکی از ابزارهای ساده:
s-nail
نصب:
dnf install s-nail
بعد میتوانی Mail بفرستی.
مثلاً:
echo "Hello from Linux" | mail -s "Test Mail" user@example.com
ساختار:
echo
↓
متن Email
↓
↓
Postfix
↓
SMTP
——————
9️⃣ Mail محلی در Linux
یکی از بهترین تمرینها برای فهم Mail Server این است که اول Mail داخلی خود Linux را امتحان کنی.
مثلاً یک User بساز:
useradd ali
passwd ali
بعد:
echo "Hello Ali" | mail -s "Test" ali
اینجا Email از طریق Mail System محلی تحویل User میشود.
بعد با:
میتوانی Mailهای محلی را ببینی.
—————
10️⃣ لاگ Mail را کجا ببینیم؟
یکی از مهمترین چیزها در عیبیابی Mail Server، Log است.
در Red Hat-basedها معمولاً:
/var/log/maillog
مثلاً:
tail -f /var/log/maillog
حالا در یک Terminal دیگر Mail بفرست:
echo "Test" | mail -s "Test Mail" ali
و در Terminal اول Log را ببین.
این فوقالعاده مهم است چون میتوانی ببینی:
Mail received
Mail queued
Mail delivered
Connection failed
Relay denied
Authentication failed
——————-
1️⃣1️⃣ در Debian/Ubuntu
ممکن است Mail Log را در این مسیر ببینی:
/var/log/mail.log
پس:
Red Hat
→ /var/log/maillog
Debian
→ /var/log/mail.log
————-
فصل هفتم — قسمت هفتاد و یکم 🐧
مدیریت لاگها در لینوکس
————————————
این قسمت خیلی مهمه، چون در لینوکس تقریباً هر اتفاق مهمی را میتوان از روی Logها بررسی کرد؛ از ورود کاربر گرفته تا Crash شدن سرویس، خطای SSH یا مشکل شبکه.
————————————
1️⃣ Process چیست؟
Process یا پردازش یعنی یک برنامهای که در حال اجراست.
مثلاً وقتی میزنی:
برنامه Firefox اجرا میشود و سیستم برای آن یک Process ایجاد میکند.
هر Process معمولاً یک PID دارد:
برای دیدنش:
یا:
—————————————
2️⃣ Daemon چیست؟
Daemon یک Process است که معمولاً در پسزمینه اجرا میشود و منتظر درخواست یا رویداد میماند.
مثلاً:
مثال واقعی:
وقتی SSH Server اجراست:
پس:
معمولاً اسم بسیاری از Daemonها به
————————-
3️⃣ Log چیست و چرا مهم است؟
Log یعنی گزارش اتفاقاتی که در سیستم رخ دادهاند.
مثلاً:
مثال واقعی
فرض کن کاربر میگوید:
به جای حدس زدن:
را میزنی و Log را بررسی میکنی.
ممکن است مشخص شود:
یا:
یا:
پس Log برای Troubleshooting، Security و Auditing بسیار مهم است.
————————————-
4️⃣ ساختار کلی Logging در Linux
در Linux دو سیستم مهم را زیاد میبینی:
یعنی ممکن است سیستم هم از:
استفاده کند و هم:
—————————
5️⃣ Syslog چیست؟
Syslog یک استاندارد و معماری برای ارسال و مدیریت پیامهای Log است.
برنامهها میتوانند پیامهای خودشان را به Syslog بفرستند.
مثلاً:
یکی از پیادهسازیهای معروف Syslog:
است.
فایل تنظیمات آن معمولاً:
است.
——————————-
6️⃣ Facility چیست؟
Facility مشخص میکند Log مربوط به چه نوع بخشی از سیستم است.
چند نمونه:
مثلاً:
→ پیامهای مربوط به Authentication
→ پیامهای Kernel
→ پیامهای Mail
→ پیامهای Cron
———————————
7️⃣ Severity چیست؟
Severity مشخص میکند شدت یا اهمیت یک Log چقدر است.
از کماهمیتتر به بحرانیتر:
مثلاً:
→ اطلاعات عادی
→ هشدار
→ خطا
→ خطای بسیار مهم
→ وضعیت اضطراری
🧠 برای دفتر:
————————————
8️⃣ Log Rotation چیست؟
فرض کن یک سرور داری و:
هر روز هزاران Log تولید میکند.
اگر این فایل را کنترل نکنی، ممکن است:
اینجاست که Log Rotation وارد میشود.
ابزار معروف:
است.
کارش این است که Logهای قدیمی را:
مدیریت کند و در صورت نیاز فشرده یا حذف کند.
———————————————
9️⃣ فایل
فایل اصلی تنظیمات:
و تنظیمات برنامههای مختلف معمولاً در:
قرار دارند.
مثلاً:
——————————
🔟 systemd-journald چیست؟
در سیستمهای مبتنی بر systemd، سرویس:
وظیفه جمعآوری و مدیریت Journalها را دارد.
یعنی:
———————
1️⃣1️⃣ فایل تنظیمات journald
فایل:
است.
——————————
1️⃣2️⃣
مهمترین ابزار برای خواندن Journal:
است.
اگر فقط بزنی:
تعداد زیادی Log نمایش داده میشود.
———————————
1️⃣3️⃣ آخرین 50 Log
یعنی:
————————
1️⃣4️⃣ دنبال کردن Log به صورت لحظهای
مثل:
مثلاً:
حالا در Terminal دیگری SSH Login کن.
Log همان لحظه نمایش داده میشود.
———————-
1️⃣5️⃣ Log مربوط به یک سرویس
مثلاً SSH:
یعنی:
در Ubuntu ممکن است نام سرویس:
باشد.
————————-
1️⃣6️⃣ Log مربوط به Boot فعلی
یعنی:
خیلی کاربردی است وقتی سیستم Boot شده ولی مثلاً یک سرویس بالا نیامده.
———————————
1️⃣7️⃣ فقط Errorها
یعنی فقط پیامهایی با Priority برابر یا بالاتر از
برای محدوده:
یعنی Logهای:
را نمایش بده.
———————-
1️⃣8️⃣ Log از یک زمان مشخص
از دیروز:
از دو ساعت قبل:
مثلاً:
→ Logهای بعد از ساعت 15 را نشان میدهد.
———————-
1️⃣9️⃣ ترکیب چند Filter
اینجا قدرت
مثلاً:
یعنی:
یا:
یعنی:
——————-
2️⃣0️⃣ تغییر Format خروجی
خروجی معمولی:
برای خروجی JSON:
JSON برای زمانی مفید است که بخواهی Log را با ابزارها و برنامهها پردازش کنی.
——————————————
2️⃣1️⃣ ابزار
با
مثلاً:
بعد میتوانی Log را پیدا کنی.
حتی Facility و Severity هم مشخص کنی:
یعنی:
یک مثال امنیتی:
————————-
2️⃣2️⃣
این ابزار خروجی یک برنامه را وارد Journal میکند.
مثلاً:
یا:
بعد:
را بزن و پیام را پیدا کن.
حتی میتوانی Priority بدهی:
——————-
2️⃣3️⃣
یکی از مهمترین مسیرهای Log در Linux:
است.
برای دیدنش:
ممکن است فایلهایی مثل این ببینی:
البته نام و محل Logها بسته به Distribution و تنظیمات سیستم متفاوت است.
————————
🧠 یک مثال واقعی خیلی مهم
فرض کن SSH کار نمیکند.
به جای اینکه کورکورانه تنظیمات را تغییر بدهی:
اول:
بعد:
journalctl -u sshd -n 50
اگر فقط Error میخواهی:
journalctl -u sshd -p err
اگر مشکل بعد از Reboot ایجاد شده:
journalctl -b
این یعنی Log خواندن یکی از اصلیترین مهارتهای Linux Administrator است.
—————————
مدیریت لاگها در لینوکس
————————————
این قسمت خیلی مهمه، چون در لینوکس تقریباً هر اتفاق مهمی را میتوان از روی Logها بررسی کرد؛ از ورود کاربر گرفته تا Crash شدن سرویس، خطای SSH یا مشکل شبکه.
————————————
1️⃣ Process چیست؟
Process یا پردازش یعنی یک برنامهای که در حال اجراست.
مثلاً وقتی میزنی:
firefox
برنامه Firefox اجرا میشود و سیستم برای آن یک Process ایجاد میکند.
هر Process معمولاً یک PID دارد:
Firefox
↓
PID = 2451
برای دیدنش:
ps aux
یا:
top
—————————————
2️⃣ Daemon چیست؟
Daemon یک Process است که معمولاً در پسزمینه اجرا میشود و منتظر درخواست یا رویداد میماند.
مثلاً:
sshd
cron
systemd-journald
rsyslogd
مثال واقعی:
وقتی SSH Server اجراست:
sshd
↓
منتظر اتصال SSH
↓
کاربر وصل شد
↓
درخواست را پردازش میکند
پس:
Daemon = برنامهای که معمولاً در پسزمینه اجرا میشود و یک سرویس را ارائه میدهد.
معمولاً اسم بسیاری از Daemonها به
d ختم میشود:sshd
rsyslogd
systemd-journald
————————-
3️⃣ Log چیست و چرا مهم است؟
Log یعنی گزارش اتفاقاتی که در سیستم رخ دادهاند.
مثلاً:
18:30 → User ali وارد شد
18:31 → sshd اجرا شد
18:32 → Login ناموفق
18:35 → nginx Restart شد
18:40 → Disk error
مثال واقعی
فرض کن کاربر میگوید:
«من رمز SSH را درست میزنم ولی وارد نمیشوم.»
به جای حدس زدن:
journalctl -u sshd
را میزنی و Log را بررسی میکنی.
ممکن است مشخص شود:
Failed password
یا:
Connection refused
یا:
User not allowed
پس Log برای Troubleshooting، Security و Auditing بسیار مهم است.
————————————-
4️⃣ ساختار کلی Logging در Linux
در Linux دو سیستم مهم را زیاد میبینی:
Traditional Syslog
↓
rsyslog
systemd
↓
systemd-journald
↓
journalctl
یعنی ممکن است سیستم هم از:
rsyslog
استفاده کند و هم:
systemd-journald
—————————
5️⃣ Syslog چیست؟
Syslog یک استاندارد و معماری برای ارسال و مدیریت پیامهای Log است.
برنامهها میتوانند پیامهای خودشان را به Syslog بفرستند.
مثلاً:
sshd ─────┐
nginx ────┤
cron ─────┤──→ rsyslog ──→ /var/log/...
kernel ───┘
یکی از پیادهسازیهای معروف Syslog:
rsyslog
است.
فایل تنظیمات آن معمولاً:
/etc/rsyslog.conf
است.
——————————-
6️⃣ Facility چیست؟
Facility مشخص میکند Log مربوط به چه نوع بخشی از سیستم است.
چند نمونه:
auth
authpriv
cron
daemon
kern
user
local0 ... local7
مثلاً:
auth
→ پیامهای مربوط به Authentication
kern
→ پیامهای Kernel
→ پیامهای Mail
cron
→ پیامهای Cron
———————————
7️⃣ Severity چیست؟
Severity مشخص میکند شدت یا اهمیت یک Log چقدر است.
از کماهمیتتر به بحرانیتر:
debug
info
notice
warning
err
crit
alert
emerg
مثلاً:
info
→ اطلاعات عادی
warning
→ هشدار
err
→ خطا
crit
→ خطای بسیار مهم
emerg
→ وضعیت اضطراری
🧠 برای دفتر:
Facility → این Log مربوط به کدام بخش است؟
Severity → این Log چقدر جدی است؟
————————————
8️⃣ Log Rotation چیست؟
فرض کن یک سرور داری و:
/var/log/messages
هر روز هزاران Log تولید میکند.
اگر این فایل را کنترل نکنی، ممکن است:
100 MB
↓
1 GB
↓
10 GB
↓
Disk Full 💀
اینجاست که Log Rotation وارد میشود.
ابزار معروف:
logrotate
است.
کارش این است که Logهای قدیمی را:
messages
messages.1
messages.2
messages.3.gz
مدیریت کند و در صورت نیاز فشرده یا حذف کند.
———————————————
9️⃣ فایل
logrotate.confفایل اصلی تنظیمات:
/etc/logrotate.conf
و تنظیمات برنامههای مختلف معمولاً در:
/etc/logrotate.d/
قرار دارند.
مثلاً:
ls /etc/logrotate.d/
——————————
🔟 systemd-journald چیست؟
در سیستمهای مبتنی بر systemd، سرویس:
systemd-journald
وظیفه جمعآوری و مدیریت Journalها را دارد.
یعنی:
Application
↓
systemd-journald
↓
Journal
↓
journalctl
———————
1️⃣1️⃣ فایل تنظیمات journald
فایل:
/etc/systemd/journald.conf
است.
——————————
1️⃣2️⃣
journalctlمهمترین ابزار برای خواندن Journal:
journalctl
است.
اگر فقط بزنی:
journalctl
تعداد زیادی Log نمایش داده میشود.
———————————
1️⃣3️⃣ آخرین 50 Log
journalctl -n 50
یعنی:
50 خط آخر Journal را نمایش بده.
————————
1️⃣4️⃣ دنبال کردن Log به صورت لحظهای
journalctl -f
-f یعنی Follow.مثل:
tail -f
مثلاً:
journalctl -f
حالا در Terminal دیگری SSH Login کن.
Log همان لحظه نمایش داده میشود.
———————-
1️⃣5️⃣ Log مربوط به یک سرویس
مثلاً SSH:
journalctl -u sshd
یعنی:
فقط Logهای Unit مربوط به sshd را نشان بده.
در Ubuntu ممکن است نام سرویس:
journalctl -u ssh
باشد.
————————-
1️⃣6️⃣ Log مربوط به Boot فعلی
journalctl -b
یعنی:
Logهای Boot فعلی سیستم را نمایش بده.
خیلی کاربردی است وقتی سیستم Boot شده ولی مثلاً یک سرویس بالا نیامده.
———————————
1️⃣7️⃣ فقط Errorها
journalctl -p err
یعنی فقط پیامهایی با Priority برابر یا بالاتر از
err را نشان بده.برای محدوده:
journalctl -p crit..err
یعنی Logهای:
crit
alert
emerg
err
را نمایش بده.
———————-
1️⃣8️⃣ Log از یک زمان مشخص
از دیروز:
journalctl --since yesterday
از دو ساعت قبل:
journalctl --since "2 hours ago"
مثلاً:
journalctl --since "2026-08-26 15:00"
→ Logهای بعد از ساعت 15 را نشان میدهد.
———————-
1️⃣9️⃣ ترکیب چند Filter
اینجا قدرت
journalctl را میبینی.مثلاً:
journalctl -u sshd --since yesterday
یعنی:
Logهای SSH از دیروز تا الان.
یا:
journalctl -u sshd -p err
یعنی:
خطاهای مهم سرویس SSH.
——————-
2️⃣0️⃣ تغییر Format خروجی
خروجی معمولی:
journalctl -o short
برای خروجی JSON:
journalctl -o json-pretty
JSON برای زمانی مفید است که بخواهی Log را با ابزارها و برنامهها پردازش کنی.
——————————————
2️⃣1️⃣ ابزار
loggerبا
logger میتوانیم خودمان یک پیام به Syslog ارسال کنیم.مثلاً:
logger "Hello from Alireza"
بعد میتوانی Log را پیدا کنی.
حتی Facility و Severity هم مشخص کنی:
logger -p user.info "Test message"
یعنی:
Facility → user
Severity → info
یک مثال امنیتی:
logger -p auth.warning "Suspicious login detected"
————————-
2️⃣2️⃣
systemd-catاین ابزار خروجی یک برنامه را وارد Journal میکند.
مثلاً:
echo "Hello Journal" | systemd-cat
یا:
systemd-cat echo "Test message"
بعد:
journalctl
را بزن و پیام را پیدا کن.
حتی میتوانی Priority بدهی:
echo "Something went wrong" | systemd-cat -p err
——————-
2️⃣3️⃣
/var/logیکی از مهمترین مسیرهای Log در Linux:
cd /var/log/
است.
برای دیدنش:
ls -lh /var/log/
ممکن است فایلهایی مثل این ببینی:
messages
secure
maillog
cron
boot.log
البته نام و محل Logها بسته به Distribution و تنظیمات سیستم متفاوت است.
————————
🧠 یک مثال واقعی خیلی مهم
فرض کن SSH کار نمیکند.
به جای اینکه کورکورانه تنظیمات را تغییر بدهی:
اول:
systemctl status sshd
بعد:
journalctl -u sshd -n 50
اگر فقط Error میخواهی:
journalctl -u sshd -p err
اگر مشکل بعد از Reboot ایجاد شده:
journalctl -b
این یعنی Log خواندن یکی از اصلیترین مهارتهای Linux Administrator است.
—————————
فصل هفتم — جلسه آخر - قسمت هفتاد و دوم 🐧
مدیریت زمان در لینوکس
————————————
زمان در لینوکس فقط برای نمایش ساعت نیست؛ برای Logها، Cron، Certificateها، احراز هویت، Kerberos و ارتباط بین سرورها خیلی مهم است.
مثلاً اگر ساعت سرور ۱۰ دقیقه اشتباه باشد، ممکن است بررسی Logها یا حتی بعضی Authenticationها به مشکل بخورد.
==============
1️⃣ دو نوع ساعت در سیستم
در لینوکس با دو مفهوم مهم روبهرو هستیم:
🖥 Hardware Clock
ساعتی که داخل سختافزار/RTC سیستم نگهداری میشود.
حتی وقتی سیستمعامل خاموش است، RTC میتواند زمان را نگه دارد.
———————-
System Clock
ساعتی که Kernel لینوکس هنگام اجرای سیستم استفاده میکند.
پس:
————————-
2️⃣
برای مشاهده و مدیریت Hardware Clock:
مثلاً:
→ نمایش ساعت سختافزاری.
برای نمایش دقیقتر:
تغییر Hardware Clock
مثلاً:
یعنی:
برعکس:
یعنی:
🧠 حفظ کن:
————————————
3️⃣
فرمان اصلی مدیریت زمان در سیستمهای جدید Linux:
وضعیت زمان:
مثلاً میبینی:
—————————-
4️⃣ تنظیم Timezone
لیست Timezoneها:
مثلاً:
تنظیم:
بعد:
را بزن.
—————————-
5️⃣ تنظیم دستی ساعت
اگر NTP فعال نباشد میتوانی ساعت را دستی تنظیم کنی:
یا:
اما در Server معمولاً بهتر است ساعت را دستی تنظیم نکنی و از NTP استفاده کنی.
——————————-
6️⃣ NTP چیست؟
NTP مخفف:
است.
وظیفهاش این است که ساعت سیستم را از طریق شبکه با یک Time Server هماهنگ کند.
مثلاً:
مثلاً چند سرور:
NTP کمک میکند ساعت سیستمها با یک مرجع زمانی هماهنگ بماند.
————————
7️⃣ چرا NTP مهم است؟
فرض کن 100 سرور داری.
اگر هر کدام ساعت متفاوتی داشته باشند:
حالا Logها را بررسی کنی، ترتیب واقعی اتفاقات ممکن است گیجکننده شود.
NTP باعث میشود سرورها زمان هماهنگتری داشته باشند.
—————————————
8️⃣
احتمالاً منظورت از
است.
NTPsec یک پیادهسازی مدرنتر و سختگیریشدهتر از NTP است که برای امنیت و سادگی بیشتر کد طراحی شده است.
اما در Linuxهای امروزی ممکن است اصلاً NTPsec استفاده نکنی.
دو گزینه بسیار رایج:
هستند.
در بسیاری از سرورهای RHEL/Fedora/AlmaLinux، chrony گزینه رایج است.
———————
9️⃣ Chrony چیست؟
Chrony یک مجموعه ابزار برای Synchronization زمان است.
معمولاً شامل:
است.
بررسی وضعیت:
یا:
——————-
🔟 فعال کردن NTP با
در سیستمهایی که سرویس NTP مناسب را فراهم کردهاند:
بررسی:
ممکن است ببینی:
یعنی:
—————————
1️⃣1️⃣ یک مثال واقعی
فرض کن سرور Ubuntu داری و ساعتش اشتباه است.
اول:
بررسی میکنی.
اگر Timezone اشتباه بود:
بعد:
و دوباره:
بررسی میکنی که:
باشد.
مدیریت زمان در لینوکس
————————————
زمان در لینوکس فقط برای نمایش ساعت نیست؛ برای Logها، Cron، Certificateها، احراز هویت، Kerberos و ارتباط بین سرورها خیلی مهم است.
مثلاً اگر ساعت سرور ۱۰ دقیقه اشتباه باشد، ممکن است بررسی Logها یا حتی بعضی Authenticationها به مشکل بخورد.
==============
1️⃣ دو نوع ساعت در سیستم
در لینوکس با دو مفهوم مهم روبهرو هستیم:
🖥 Hardware Clock
ساعتی که داخل سختافزار/RTC سیستم نگهداری میشود.
Hardware Clock
→ ساعت سختافزاری
حتی وقتی سیستمعامل خاموش است، RTC میتواند زمان را نگه دارد.
———————-
System Clock
ساعتی که Kernel لینوکس هنگام اجرای سیستم استفاده میکند.
System Clock
→ ساعت مورد استفاده Linux
پس:
Hardware Clock
↓
Linux Boot
↓
System Clock
————————-
2️⃣
hwclockبرای مشاهده و مدیریت Hardware Clock:
hwclock
مثلاً:
sudo hwclock --show
→ نمایش ساعت سختافزاری.
برای نمایش دقیقتر:
sudo hwclock --verbose
تغییر Hardware Clock
مثلاً:
sudo hwclock --systohc
یعنی:
ساعت System را روی Hardware Clock بنویس.
برعکس:
sudo hwclock --hctosys
یعنی:
ساعت Hardware Clock را روی System Clock تنظیم کن.
🧠 حفظ کن:
systohc
system → hardware
hctosys
hardware → system
————————————
3️⃣
timedatectlفرمان اصلی مدیریت زمان در سیستمهای جدید Linux:
timedatectl
وضعیت زمان:
timedatectl status
مثلاً میبینی:
Local time
Universal time
RTC time
Time zone
System clock synchronized
NTP service
RTC in local TZ
—————————-
4️⃣ تنظیم Timezone
لیست Timezoneها:
timedatectl list-timezones
مثلاً:
timedatectl list-timezones | grep Tehran
تنظیم:
sudo timedatectl set-timezone Asia/Tehran
بعد:
timedatectl
را بزن.
—————————-
5️⃣ تنظیم دستی ساعت
اگر NTP فعال نباشد میتوانی ساعت را دستی تنظیم کنی:
sudo timedatectl set-time "18:30:00"
یا:
sudo timedatectl set-time "2026-08-26 18:30:00"
اما در Server معمولاً بهتر است ساعت را دستی تنظیم نکنی و از NTP استفاده کنی.
——————————-
6️⃣ NTP چیست؟
NTP مخفف:
Network Time Protocol
است.
وظیفهاش این است که ساعت سیستم را از طریق شبکه با یک Time Server هماهنگ کند.
مثلاً:
Linux Server
↓
NTP Client
↓
NTP Server
↓
زمان دقیق
مثلاً چند سرور:
server1 → 18:30:01
server2 → 18:30:02
server3 → 18:30:01
NTP کمک میکند ساعت سیستمها با یک مرجع زمانی هماهنگ بماند.
————————
7️⃣ چرا NTP مهم است؟
فرض کن 100 سرور داری.
اگر هر کدام ساعت متفاوتی داشته باشند:
Server 1 → 12:00
Server 2 → 12:05
Server 3 → 11:58
Server 4 → 12:10
حالا Logها را بررسی کنی، ترتیب واقعی اتفاقات ممکن است گیجکننده شود.
NTP باعث میشود سرورها زمان هماهنگتری داشته باشند.
—————————————
8️⃣
ntpsec چیست؟احتمالاً منظورت از
nptsec همان:NTPsec
است.
NTPsec یک پیادهسازی مدرنتر و سختگیریشدهتر از NTP است که برای امنیت و سادگی بیشتر کد طراحی شده است.
اما در Linuxهای امروزی ممکن است اصلاً NTPsec استفاده نکنی.
دو گزینه بسیار رایج:
chrony
systemd-timesyncd
هستند.
در بسیاری از سرورهای RHEL/Fedora/AlmaLinux، chrony گزینه رایج است.
———————
9️⃣ Chrony چیست؟
Chrony یک مجموعه ابزار برای Synchronization زمان است.
معمولاً شامل:
chronyd
chronyc
است.
chronyd:سرویس Daemon مربوط به زمان است.
chronyc:ابزار Command Line برای بررسی و مدیریت Chrony است.
بررسی وضعیت:
chronyc tracking
یا:
chronyc sources
——————-
🔟 فعال کردن NTP با
timedatectlدر سیستمهایی که سرویس NTP مناسب را فراهم کردهاند:
sudo timedatectl set-ntp true
بررسی:
timedatectl status
ممکن است ببینی:
System clock synchronized: yes
NTP service: active
یعنی:
NTP فعال است
↓
ساعت سیستم
↓
با Time Server هماهنگ میشود
—————————
1️⃣1️⃣ یک مثال واقعی
فرض کن سرور Ubuntu داری و ساعتش اشتباه است.
اول:
timedatectl
بررسی میکنی.
اگر Timezone اشتباه بود:
sudo timedatectl set-timezone Asia/Tehran
بعد:
sudo timedatectl set-ntp true
و دوباره:
timedatectl
بررسی میکنی که:
System clock synchronized: yes
باشد.
❤1