فصل هفتم — قسمت شصت و هشتم 🐧
مدیریت کاربران در لینوکس
——————-
در این قسمت میخواهیم بفهمیم 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 یک حساب سیستمی ضروری است.
کاری که معمولاً انجام میدهیم این است که:
مثلاً:
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
————————
مدیریت کاربران در لینوکس
——————-
در این قسمت میخواهیم بفهمیم 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
————————