FHS، کاربران، مجوزها و Package Manager

فایل‌ها کجا هستند؟

Filesystem Hierarchy Standard (FHS) قراردادی برای محل قرارگیری فایل‌ها در Linux است. همهٔ توزیع‌ها دقیقاً یکسان نیستند، اما دانستن مسیرهای اصلی کمک می‌کند پیکربندی، لاگ و فایل اجرایی را در جای درست پیدا کنید.

  • /etc — پیکربندی سراسری سامانه و سرویس‌ها؛ مانند /etc/ssh/sshd_config
  • /var — داده‌ای که در طول کار سامانه تغییر می‌کند؛ مانند لاگ‌ها در /var/log
  • /home — دایرکتوری خانگی کاربران عادی
  • /tmp — فایل‌های موقت؛ برای نگهداری دادهٔ مهم مناسب نیست
  • /usr — برنامه‌ها، کتابخانه‌ها و دادهٔ مشترک نصب‌شده توسط توزیع
  • /usr/local — برنامه‌ها و اسکریپت‌هایی که مدیر سامانه به‌صورت محلی اضافه می‌کند
  • /opt — نرم‌افزارهای جانبی و مستقل از package manager توزیع
  • /proc — نمای مجازی از اطلاعات هسته و فرایندها، نه فایل‌های معمولی روی دیسک

برای اینکه بدانید یک برنامه از کجا اجرا می‌شود، از command -v استفاده کنید. برای مشاهدهٔ فضای فایل‌سیستم و mount point ها نیز df و mount مفیدند:

1command -v bash
2df -h
3mount | less

کاربران و گروه‌ها

هر فرایند با هویت یک کاربر اجرا می‌شود. این هویت تعیین می‌کند فرایند به کدام فایل‌ها و عملیات دسترسی دارد. گروه‌ها راهی برای اشتراک‌گذاری دسترسی بین چند کاربر هستند.

1whoami
2id
3groups
4getent passwd "$USER"

فایل‌های محلی اطلاعات کاربر و گروه معمولاً در /etc/passwd و /etc/group دیده می‌شوند، اما برای خواندن آن‌ها بهتر است از getent استفاده کنید؛ ممکن است سامانه هویت‌ها را از LDAP یا سرویس دیگری دریافت کند.

نمونهٔ ایجاد یک کاربر سرویس در محیط آزمایشی:

1sudo useradd --create-home --shell /bin/bash deploy
2sudo groupadd appteam
3sudo usermod -aG appteam deploy
4id deploy

گزینهٔ -aG کاربر را به گروه‌های جدید اضافه می‌کند. حذف -a می‌تواند گروه‌های فعلی کاربر را جایگزین کند و دسترسی او را ناخواسته تغییر دهد.

مالکیت و مجوزها

هر فایل یک مالک، یک گروه و سه مجموعه مجوز دارد: برای مالک (u)، گروه (g) و دیگران (o). خروجی ls -l این اطلاعات را نشان می‌دهد:

1ls -l deploy.sh
2# -rwxr-x--- 1 deploy appteam 842 Sep 4 12:00 deploy.sh

ده نویسهٔ ابتدایی به‌ترتیب نوع فایل و مجوزهای مالک، گروه و دیگران را نشان می‌دهند. r برای خواندن، w برای نوشتن و x برای اجرا یا عبور از دایرکتوری است.

با نمادها یا به‌صورت عددی مجوزها را تغییر دهید:

1chmod u+x deploy.sh
2chmod g-w secrets.txt
3chmod 640 app.conf
4sudo chown deploy:appteam /srv/app/app.conf

در حالت عددی، r برابر 4، w برابر 2 و x برابر 1 است. بنابراین 640 یعنی مالک خواندن و نوشتن (6)، گروه فقط خواندن (4) و دیگران هیچ دسترسی‌ای (0) ندارند.

هشدار: استفاده از sudo

sudo دستور را با دسترسی کاربر دیگر، معمولاً root، اجرا می‌کند. از آن فقط برای یک دستور مشخص استفاده کنید، نه برای اجرای shell دائمی. پیش از اجرای دستورهای دارای sudo، مسیر و اثر آن را بررسی کنید.

Package Manager

package manager، نرم‌افزار را همراه وابستگی‌ها و به‌روزرسانی‌های امنیتی مدیریت می‌کند. بسته‌ها را از مخزن‌های رسمی یا مورد اعتماد نصب کنید؛ اسکریپت‌های نصب ناشناس را مستقیم با دسترسی root اجرا نکنید.

در Debian و Ubuntu از apt استفاده می‌شود:

1sudo apt update
2apt search nginx
3apt show nginx
4sudo apt install nginx
5sudo apt remove nginx
6sudo apt upgrade

در Fedora و RHEL از dnf استفاده می‌شود:

1sudo dnf check-update
2dnf search nginx
3dnf info nginx
4sudo dnf install nginx
5sudo dnf remove nginx
6sudo dnf upgrade

ابتدا فهرست یا فرادادهٔ بسته را به‌روز کنید، سپس بسته را نصب کنید. تفاوت‌های نسخهٔ توزیع‌ها را در مستندات همان توزیع بررسی کنید و به جای حدس‌زدن، نام دقیق بسته را با search پیدا کنید.

منابع یادگیری

مستندات و مقالات

ویدیو