← สารบัญบทเรียน M4 · Users & Groups
M4 · หัวข้อสอบ

จัดการผู้ใช้และกลุ่ม (Users & Groups)

เครื่อง Linux หนึ่งเครื่องมีคนใช้หลายคนได้ในเวลาเดียวกัน — บทนี้จะสอนวิธีสร้างผู้ใช้ ตั้งรหัสผ่าน จัดเข้ากลุ่ม และคุมว่าใครทำอะไรได้บ้าง ซึ่งเป็นหัวข้อที่ออกสอบ RHCSA แทบทุกครั้ง

🌱 บทนี้เขียนเพื่อคนที่ไม่เคยแตะ Linux มาก่อนเลย

1ทำไมต้องมีหลาย user?

ถ้าเคยใช้คอมส่วนตัวที่บ้าน คุณอาจชินกับการมีแค่ user เดียว — เปิดเครื่องมาก็ใช้ได้เลย แต่เครื่อง Linux โดยเฉพาะเซิร์ฟเวอร์ มักมี คนใช้พร้อมกันหลายคน เช่น ทีมงาน นักพัฒนา หรือโปรแกรมต่างๆ ที่รันอยู่เบื้องหลัง

การแยกผู้ใช้ออกจากกันให้ประโยชน์ 3 อย่าง:

💡 เปรียบเทียบให้เห็นภาพ

นึกถึง หอพักนักศึกษา ตึกหนึ่ง:

• แต่ละคนมี ห้องของตัวเอง (= home directory ใน /home)
• แต่ละคนมี กุญแจของตัวเอง (= รหัสผ่าน) เข้าได้แค่ห้องตัวเอง
• มี ผู้จัดการหอ ที่ถือกุญแจมาสเตอร์เข้าได้ทุกห้อง (= root)
• มี กลุ่ม เช่น “ชั้น 3 ใช้ห้องซักผ้าร่วมกันได้” (= group สิทธิ์ที่ใช้ร่วมกัน)

คุณจะไม่อยากให้ทุกคนในหอถือกุญแจมาสเตอร์ใช่ไหม? นั่นแหละเหตุผลที่เราแยก user และให้สิทธิ์ root เฉพาะคนที่จำเป็นจริงๆ

🎯 ทำไมหัวข้อนี้สำคัญในข้อสอบ

การจัดการ user/group เป็นงานพื้นฐานที่ผู้ดูแลระบบทำทุกวัน ข้อสอบ RHCSA จึงมักให้ “สร้าง user ชื่อนี้ ใส่กลุ่มนี้ ตั้งรหัสผ่าน กำหนดวันหมดอายุ” แล้ว reboot เครื่องไปตรวจ ว่าทำครบหรือไม่

2ไฟล์สำคัญ 3 ไฟล์

ข้อมูล user และ group ทั้งหมด ถูกเก็บเป็นไฟล์ข้อความธรรมดา 3 ไฟล์ในเครื่อง ไม่ได้ซ่อนอยู่ในฐานข้อมูลลึกลับที่ไหน เปิดอ่านได้เลย เข้าใจ 3 ไฟล์นี้แล้วจะเข้าใจทั้งบท

/etc/passwd — รายชื่อ user ทั้งหมด

ชื่ออาจชวนเข้าใจผิด แต่ไฟล์นี้ ไม่ได้เก็บรหัสผ่าน (สมัยก่อนเคยเก็บ จึงติดชื่อมา) มันเก็บข้อมูลพื้นฐานของแต่ละ user หนึ่งบรรทัดต่อหนึ่งคน คั่นแต่ละช่องด้วยเครื่องหมาย :

🖥️ หนึ่งบรรทัดในไฟล์ /etc/passwd
student:x:1000:1000:Student User:/home/student:/bin/bash

อ่านทีละช่อง (ซ้ายไปขวา) จะเห็นว่าแต่ละช่องบอกอะไร:

studentชื่อ login ของ user
xตรงนี้เคยเป็นรหัสผ่าน ตอนนี้เป็นแค่ x หมายถึง “รหัสจริงไปอยู่ใน /etc/shadow แล้ว”
1000UID — เลขประจำตัว user (ช่องที่ 3)
1000GID — เลขกลุ่มหลัก (primary group) ของ user
Student Userคำอธิบาย/ชื่อเต็ม (comment) ใส่อะไรก็ได้
/home/studenthome directory — “บ้าน” ของ user คนนี้
/bin/bashshell ที่ใช้ตอนล็อกอิน (ถ้าเป็น /sbin/nologin = ห้ามล็อกอิน)

/etc/shadow — รหัสผ่าน (เข้ารหัส) + นโยบายอายุรหัส

นี่คือที่เก็บรหัสผ่านจริง แต่ เข้ารหัสไว้ (hash) ไม่ใช่ตัวอักษรที่อ่านออก และไฟล์นี้ เปิดอ่านได้เฉพาะ root เพื่อความปลอดภัย

🔒 หนึ่งบรรทัดในไฟล์ /etc/shadow
student:$6$xT3z...HrK:19500:0:99999:7:::
studentชื่อ user (ตรงกับใน passwd)
$6$xT3z...รหัสผ่านที่เข้ารหัสแล้ว ถ้าเห็น ! หรือ * นำหน้า = บัญชีถูกล็อก ล็อกอินไม่ได้
19500วันที่เปลี่ยนรหัสครั้งล่าสุด (นับเป็นจำนวนวันตั้งแต่ 1 ม.ค. 1970)
0อายุขั้นต่ำ — ต้องใช้รหัสนี้กี่วันก่อนเปลี่ยนได้ (chage -m)
99999อายุสูงสุด — รหัสใช้ได้กี่วันก่อนต้องเปลี่ยน (chage -M)
7เตือนล่วงหน้ากี่วันก่อนรหัสหมดอายุ (chage -W)
📌 อย่าเพิ่งตกใจกับตัวเลขเยอะๆ

คุณไม่ต้องแก้ไฟล์นี้ด้วยมือ! เดี๋ยวข้อ 8 จะใช้คำสั่ง chage จัดการตัวเลขเหล่านี้ให้แบบไม่ต้องนับวันเอง — แค่รู้ว่าตัวเลขแต่ละช่องคืออะไรก็พอ

/etc/group — รายชื่อกลุ่ม

เก็บว่ามีกลุ่มอะไรบ้าง และใครเป็นสมาชิก

👥 หนึ่งบรรทัดในไฟล์ /etc/group
developers:x:1500:student,alice,bob
developersชื่อกลุ่ม
xช่องรหัสผ่านกลุ่ม (แทบไม่ได้ใช้)
1500GID — เลขประจำตัวกลุ่ม
student,alice,bobรายชื่อสมาชิก (secondary members) คั่นด้วยจุลภาค

3UID — เลขประจำตัว user

เครื่องไม่ได้สนใจ “ชื่อ” user เท่าไหร่ จริงๆ มันใช้ ตัวเลข ในการอ้างถึงแต่ละคน เรียกว่า UID (User ID) เหมือนเลขบัตรประชาชน

ช่วง UIDคือใคร
0root เสมอ — ผู้ดูแลระบบสูงสุด UID 0 คือเจ้านายของเครื่อง
1 – 999user ระบบ (system user) — ไม่ใช่คน แต่เป็นบัญชีของโปรแกรม/บริการ เช่น sshd, nginx
1000+user ทั่วไป (คนจริงๆ) — บน RHEL 9 user คนแรกที่สร้างจะได้ UID 1000 คนถัดไป 1001, 1002 ...
💡 เปรียบเทียบ

UID เหมือน เลขห้องในหอพัก — ห้อง 0 คือห้องผู้จัดการ (root), ห้อง 1–999 คือห้องเก็บของ/ห้องเครื่อง (โปรแกรมระบบ) ส่วนห้อง 1000 ขึ้นไปคือห้องของนักศึกษาจริงๆ (คนใช้งานทั่วไป)

⚠️ UID 0 = อำนาจเต็ม

ใครก็ตามที่มี UID 0 จะมีสิทธิ์เท่า root ทั้งหมด ดังนั้น อย่าตั้ง UID ของ user ทั่วไปให้เป็น 0 เด็ดขาด เพราะเท่ากับมอบกุญแจมาสเตอร์ให้

4ดูตัวเอง: id / whoami / groups

ก่อนจะไปจัดการคนอื่น เรามาดูตัวเองก่อนว่าเราเป็นใคร อยู่กลุ่มไหน มี 3 คำสั่งง่ายๆ

⌨️ ลองดู
[student@server1 ~]$ whoami
student

[student@server1 ~]$ id
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)

[student@server1 ~]$ groups
student wheel
whoamiบอกแค่ชื่อ user ที่กำลังใช้อยู่ตอนนี้
idบอกละเอียด: UID, GID (กลุ่มหลัก) และ groups (กลุ่มทั้งหมดที่อยู่)
groupsบอกแค่รายชื่อกลุ่มที่ user นี้เป็นสมาชิก
id aliceดูข้อมูลของ user คนอื่นก็ได้ แค่ใส่ชื่อต่อท้าย
💡 เกร็ด: กลุ่ม wheel คืออะไร

ในผลลัพธ์ข้างบนเห็น wheel ไหม? นั่นคือกลุ่มพิเศษที่สมาชิกใช้ sudo (ยกระดับเป็น root ชั่วคราว) ได้ จำชื่อนี้ไว้ เดี๋ยวจะเจ่อในบทเรื่องสิทธิ์

5สร้างและลบ user

งานเหล่านี้ต้องใช้สิทธิ์ root (ขึ้นต้นด้วย sudo หรือเป็น root อยู่แล้ว) เพราะเป็นการแก้ไฟล์ระบบ

useradd — สร้าง user ใหม่

⌨️ สร้าง user ชื่อ alice
[root@server1 ~]# useradd alice
[root@server1 ~]# id alice
uid=1001(alice) gid=1001(alice) groups=1001(alice)

แค่ useradd alice เครื่องจะทำให้เราอัตโนมัติหลายอย่าง:

UIDให้เลขถัดไปที่ว่าง (ในตัวอย่างคือ 1001)
homeสร้างโฟลเดอร์ /home/alice ให้
groupสร้างกลุ่มหลักชื่อเดียวกับ user (alice) ให้
shellตั้ง shell เริ่มต้นเป็น /bin/bash
⚠️ สร้างเสร็จแล้วยังล็อกอินไม่ได้!

user ที่เพิ่ง useradd มา ยังไม่มีรหัสผ่าน บัญชีจึงถูกล็อกอยู่ ต้องตั้งรหัสผ่านด้วย passwd ก่อนถึงจะล็อกอินได้ — ข้อนี้พลาดกันบ่อยมากในข้อสอบ!

passwd — ตั้ง/เปลี่ยนรหัสผ่าน

⌨️ ตั้งรหัสผ่านให้ alice
[root@server1 ~]# passwd alice
Changing password for user alice.
New password: (พิมพ์รหัส — จะไม่เห็นตัวอักษรขึ้นจอ ปกติ!)
Retype new password:
passwd: all authentication tokens updated successfully.
passwd aliceroot ตั้งรหัสให้ user คนอื่น (ไม่ต้องรู้รหัสเก่า)
passwdพิมพ์เฉยๆ = เปลี่ยนรหัส ของตัวเอง
📌 พิมพ์รหัสแล้วจอไม่ขึ้นอะไรเลย ไม่ใช่เครื่องค้าง!

เวลาพิมพ์รหัสผ่านใน Linux มันจะ ไม่แสดงดอกจันหรือตัวอักษรใดๆ เพื่อความปลอดภัย พิมพ์ไปตามปกติแล้วกด Enter ได้เลย

userdel — ลบ user

⌨️ ลบ user — สังเกตความต่างของ -r
[root@server1 ~]# userdel alice
# ลบ user แต่ บ้าน /home/alice ยังค้างอยู่!

[root@server1 ~]# userdel -r bob
# ลบ user พร้อมบ้าน /home/bob และเมลของเขา
userdel aliceลบบัญชีออกจากระบบ แต่ ทิ้งโฟลเดอร์บ้านไว้ (ไฟล์ของเขาจะกลายเป็นขยะค้างเครื่อง)
userdel -r bobเพิ่ม -r (remove) เพื่อ ลบบ้านและไฟล์ส่วนตัวไปด้วย สะอาดกว่า
💡 จำง่ายๆ: -r = remove บ้านด้วย

ถ้าโจทย์บอกว่า “ลบ user ให้หมดจด” หรือ “ลบทั้งบ้าน” ให้นึกถึง -r ทันที

6แก้ไข user: usermod

คำสั่ง usermod (user modify) ใช้แก้ไขข้อมูล user ที่มีอยู่แล้ว — เปลี่ยนกลุ่ม, ล็อกบัญชี, เปลี่ยน shell ฯลฯ จุดที่ออกสอบบ่อยที่สุดคือ การเพิ่ม user เข้ากลุ่ม

-aG — เพิ่มเข้ากลุ่มเสริม (ระวัง! ต้องมี a)

⌨️ เพิ่ม alice เข้ากลุ่ม developers
[root@server1 ~]# usermod -aG developers alice
[root@server1 ~]# id alice
uid=1001(alice) gid=1001(alice) groups=1001(alice),1500(developers)
-G(Group) บอกว่าจะใส่เข้ากลุ่มเสริม (secondary group)
-a(append) แปลว่า “เพิ่มต่อท้าย” ของเดิมที่มีอยู่
⚠️ ลืม -a = หายนะ! เตะ user ออกจากกลุ่มเดิมทั้งหมด

ถ้าพิมพ์ usermod -G developers alice (ไม่มี -a) มันจะ แทนที่ กลุ่มเสริมทั้งหมดของ alice ด้วย developers ตัวเดียว — กลุ่มอื่นๆ ที่เธอเคยอยู่ หลุดหมด!

กฎเหล็ก: จะเพิ่มเข้ากลุ่ม ใช้ -aG เสมอ (a มาคู่ G ตลอด)

-L และ -U — ล็อก / ปลดล็อกบัญชี

⌨️ ล็อกและปลดล็อก
[root@server1 ~]# usermod -L alice
# ล็อกบัญชี — alice ล็อกอินด้วยรหัสผ่านไม่ได้

[root@server1 ~]# usermod -U alice
# ปลดล็อก — ใช้งานได้ตามเดิม
-L(Lock) ล็อกบัญชี — เบื้องหลังคือใส่ ! หน้า hash รหัสใน /etc/shadow
-U(Unlock) ปลดล็อก

-s, -e, -c — เปลี่ยน shell / วันหมดอายุ / คำอธิบาย

⌨️ ตัวอย่างที่ออกสอบบ่อย
[root@server1 ~]# usermod -s /sbin/nologin alice
# เปลี่ยน shell เป็น nologin = ห้ามล็อกอินเข้า shell (แต่ใช้บริการอื่นได้)

[root@server1 ~]# usermod -e 2026-12-31 alice
# ตั้งวันหมดอายุของบัญชี — พ้นวันนี้แล้วบัญชีใช้ไม่ได้

[root@server1 ~]# usermod -c "Alice in Marketing" alice
# ใส่คำอธิบาย/ชื่อเต็ม (comment) ลงช่องที่ 5 ของ passwd
-s(shell) เปลี่ยน login shell /sbin/nologin ใช้บ่อยกับบัญชีที่ไม่อยากให้ใครล็อกอินเข้ามา
-e(expire) วันหมดอายุของ บัญชี รูปแบบ YYYY-MM-DD
-c(comment) ใส่ชื่อเต็มหรือคำอธิบาย
📌 อย่าสับสน: หมดอายุ “บัญชี” กับ หมดอายุ “รหัสผ่าน”

usermod -e = วันที่ทั้ง บัญชี หมดอายุ (ล็อกอินไม่ได้อีกเลย) ส่วนการตั้งวันหมดอายุของ รหัสผ่าน (ต้องเปลี่ยนรหัสใหม่) ใช้ chage ในข้อถัดไป

7กลุ่ม: สร้าง ลบ และ primary vs secondary

groupadd / groupdel

⌨️ สร้างและลบกลุ่ม
[root@server1 ~]# groupadd developers
[root@server1 ~]# groupadd -g 1600 testers
# -g กำหนด GID เองได้ (ถ้าไม่ใส่ ระบบเลือกให้)

[root@server1 ~]# groupdel testers
# ลบกลุ่ม
groupadd ชื่อสร้างกลุ่มใหม่
groupadd -g 1600 ชื่อสร้างกลุ่มพร้อมกำหนดเลข GID เอง
groupdel ชื่อลบกลุ่ม

กลุ่มหลัก (primary) vs กลุ่มเสริม (secondary)

user ทุกคนมีกลุ่ม 2 แบบ ฟังดูซับซ้อนแต่จริงๆ ง่ายมาก:

Primary
กลุ่มหลัก มีได้แค่ 1 กลุ่ม — เป็นกลุ่มที่ติดกับไฟล์ใหม่ที่ user สร้าง โดยปกติ RHEL จะสร้างกลุ่มชื่อเดียวกับ user ให้เป็น primary (เช่น user alice มี primary group ชื่อ alice)
Secondary
กลุ่มเสริม มีกี่กลุ่มก็ได้ — เป็นกลุ่มที่ใส่เพิ่มเพื่อ “ให้สิทธิ์เข้าถึงของส่วนกลาง” เช่นใส่เข้ากลุ่ม developers เพื่อแชร์โฟลเดอร์โปรเจกต์ร่วมกัน (ใช้ usermod -aG)
💡 เปรียบเทียบ

กลับไปที่หอพัก: primary group = ห้องส่วนตัวของคุณ (มีห้องเดียว) ส่วน secondary group = บัตรเข้าห้องส่วนกลางต่างๆ เช่น บัตรห้องฟิตเนส บัตรห้องซักผ้า — คุณถือได้หลายใบ แต่ละใบเปิดประตูคนละบาน

💡 เปลี่ยน primary group ด้วย -g (ตัวเล็ก)

ถ้าต้องการ เปลี่ยน กลุ่มหลัก ใช้ usermod -g ชื่อกลุ่ม alice (g เล็ก ไม่มี a) — ต่างจาก -aG (G ใหญ่) ที่เป็นกลุ่มเสริม

8นโยบายอายุรหัสผ่าน: chage

คำสั่ง chage (มาจาก “change age”) ใช้จัดการ “อายุ” ของรหัสผ่าน เช่นบังคับให้เปลี่ยนรหัสทุก 90 วัน หรือเตือนล่วงหน้า 7 วัน ตัวเลขพวกนี้คือช่องท้ายๆ ใน /etc/shadow ที่เราเห็นในข้อ 2 นั่นเอง

ดูสถานะปัจจุบัน: chage -l

⌨️ ดูนโยบายรหัสของ alice
[root@server1 ~]# chage -l alice
Last password change                : Jun 16, 2026
Password expires                    : never
Password inactive                   : never
Account expires                     : never
Minimum number of days ...          : 0
Maximum number of days ...          : 99999
Number of days of warning ...       : 7

-l (list) แสดงนโยบายปัจจุบันแบบอ่านง่าย เป็นวันที่จริง ไม่ต้องนับเลขเอง

ตั้งค่านโยบาย

⌨️ ออปชันที่ออกสอบบ่อย
[root@server1 ~]# chage -M 90 alice
# รหัสผ่านใช้ได้สูงสุด 90 วัน แล้วต้องเปลี่ยน

[root@server1 ~]# chage -m 7 alice
# เปลี่ยนรหัสได้อีกครั้งหลังผ่านไปอย่างน้อย 7 วัน

[root@server1 ~]# chage -W 10 alice
# เตือนล่วงหน้า 10 วันก่อนรหัสหมดอายุ

[root@server1 ~]# chage -E 2026-12-31 alice
# บัญชีหมดอายุวันที่ 31 ธ.ค. 2026
-M(Maximum, M ใหญ่) อายุสูงสุดของรหัส (วัน)
-m(minimum, m เล็ก) อายุขั้นต่ำก่อนเปลี่ยนได้อีก (วัน)
-W(Warning) เตือนล่วงหน้ากี่วัน
-E(Expire) วันหมดอายุของบัญชี (เหมือน usermod -e)
📌 /etc/login.defs — ค่าเริ่มต้นของทั้งระบบ

ไฟล์ /etc/login.defs เก็บ “ค่าตั้งต้น” ที่ใช้กับ user ใหม่ ทุกคน เช่น PASS_MAX_DAYS, PASS_MIN_DAYS, PASS_WARN_AGE — ถ้าโจทย์ขอให้ user ที่สร้างหลังจากนี้มีนโยบายแบบเดียวกันทั้งหมด ให้แก้ที่ไฟล์นี้ (ส่วน chage เป็นการแก้ทีละคน)

9/etc/skel — แม่แบบบ้านของ user ใหม่

เคยสงสัยไหมว่า ทำไม user ใหม่ที่เพิ่งสร้าง บ้านของเขาถึงมีไฟล์ตั้งค่าอย่าง .bashrc มาให้แล้ว? คำตอบคือ /etc/skel

💡 เปรียบเทียบ

/etc/skel (มาจาก “skeleton” = โครงร่าง) เหมือน “ห้องตัวอย่างของหอพัก” ที่จัดเฟอร์นิเจอร์พื้นฐานไว้แล้ว — เตียง โต๊ะ ตู้ พอมีนักศึกษาใหม่ย้ายเข้า ผู้จัดการก็ ก๊อปปี้ของในห้องตัวอย่างไปวางในห้องใหม่ให้ ทุกคนเลยได้ของเริ่มต้นเหมือนกัน

⌨️ ดูว่าใน /etc/skel มีอะไร
[root@server1 ~]# ls -a /etc/skel
.  ..  .bash_logout  .bash_profile  .bashrc

ทุกครั้งที่ useradd สร้าง user ใหม่ ระบบจะ ก๊อปปี้ทุกไฟล์ใน /etc/skel ไปไว้ในบ้านของ user นั้น ดังนั้นถ้าอยากให้ user ใหม่ทุกคนมีไฟล์อะไรติดตัวมาด้วย (เช่นไฟล์คู่มือต้อนรับ) ก็แค่เอาไปวางใน /etc/skel

10สลับเป็น user อื่น: su กับ su -

บางครั้งเราต้องการ “สวมรอย” เป็น user คนอื่น (หรือเป็น root) ชั่วคราว เพื่อทดสอบหรือทำงานในนามเขา ใช้คำสั่ง su (substitute user)

⌨️ ความต่างของ su กับ su -
[student@server1 ~]$ su - alice
Password:
[alice@server1 ~]$ pwd
/home/alice          ← เด้งมาที่บ้านของ alice เลย

[student@server1 ~]$ su alice
Password:
[alice@server1 student]$ pwd
/home/student        ← ยังค้างอยู่ที่เดิม สภาพแวดล้อมไม่ครบ
su - aliceมี ขีด - = สลับแบบ “ล็อกอินใหม่เต็มตัว” โหลด environment, เด้งเข้าบ้านของ alice — แบบนี้คือที่เราอยากได้เกือบทุกครั้ง
su aliceไม่มีขีด = สลับ user แต่ ยังใช้ environment เดิม ไม่เปลี่ยนโฟลเดอร์ มักทำให้ตัวแปร/PATH ไม่ครบ
su -ไม่ใส่ชื่อ = สลับเป็น root (ต้องรู้รหัส root)
exitออกจาก user ที่สวมรอย กลับเป็นตัวเองเดิม
💡 จำง่ายๆ: ใส่ขีด - ไว้ก่อน

เกือบทุกครั้งที่สลับ user คุณอยากได้ environment ที่ครบถ้วน ดังนั้นติดนิสัยพิมพ์ su - (มีขีด) ไว้จะปลอดภัยที่สุด

11การตั้งค่าอยู่ถาวรหรือไม่?

🎯 ข่าวดี: user/group เขียนลงไฟล์ระบบทันที = ถาวรอยู่แล้ว

ต่างจากการตั้งค่าบางอย่างใน Linux ที่ “หายตอน reboot” — ทุกคำสั่งในบทนี้ (useradd, passwd, usermod, groupadd, chage) เขียนผลลงไฟล์ /etc/passwd, /etc/shadow, /etc/group ทันที จึงอยู่ถาวรหลัง reboot โดยอัตโนมัติ ไม่ต้องสั่ง “save” อะไรเพิ่ม

แต่ “ถาวร” ไม่ได้แปลว่า “ถูกต้อง” — ข้อสอบ RHCSA จะ reboot เครื่องแล้วเข้ามาตรวจ ว่าคุณทำ ครบ ทุกขั้นหรือเปล่า จุดที่คนทำตกหล่นบ่อย:

✅ นิสัยที่ควรติด: ตรวจซ้ำด้วย id และ chage -l

หลังทำเสร็จทุกครั้ง พิมพ์ id ชื่อ เพื่อยืนยัน UID/กลุ่ม และ chage -l ชื่อ เพื่อยืนยันนโยบายรหัส — ใช้เวลาไม่กี่วินาที แต่กันพลาดได้เยอะมาก

12ข้อผิดพลาดที่มือใหม่เจอบ่อย

13สรุปคำสั่งบทนี้ (Cheat Sheet)

คำสั่งทำอะไร
id ชื่อดู UID, GID และกลุ่มของ user
whoamiบอกชื่อ user ที่ใช้อยู่ตอนนี้
groups ชื่อดูกลุ่มที่ user เป็นสมาชิก
useradd ชื่อสร้าง user ใหม่ (พร้อมบ้าน + กลุ่มหลัก)
passwd ชื่อตั้ง/เปลี่ยนรหัสผ่าน (อย่าลืมทำหลัง useradd!)
userdel ชื่อลบ user (บ้านยังค้างอยู่)
userdel -r ชื่อลบ user พร้อมบ้าน
usermod -aG กลุ่ม ชื่อเพิ่ม user เข้ากลุ่มเสริม (ต้องมี a)
usermod -g กลุ่ม ชื่อเปลี่ยนกลุ่มหลัก (primary)
usermod -L / -U ชื่อล็อก / ปลดล็อกบัญชี
usermod -s /sbin/nologin ชื่อเปลี่ยน shell (ห้ามล็อกอิน)
usermod -e YYYY-MM-DD ชื่อตั้งวันหมดอายุของบัญชี
usermod -c "ข้อความ" ชื่อใส่คำอธิบาย/ชื่อเต็ม
groupadd ชื่อกลุ่มสร้างกลุ่มใหม่
groupdel ชื่อกลุ่มลบกลุ่ม
chage -l ชื่อดูนโยบายอายุรหัสผ่าน
chage -M วัน ชื่ออายุรหัสสูงสุด (วัน)
chage -m วัน ชื่ออายุรหัสขั้นต่ำ (วัน)
chage -W วัน ชื่อเตือนล่วงหน้าก่อนรหัสหมดอายุ
chage -E YYYY-MM-DD ชื่อวันหมดอายุของบัญชี
su - ชื่อสลับเป็น user อื่นแบบล็อกอินเต็ม
su -สลับเป็น root
ไฟล์สำคัญเก็บอะไร
/etc/passwdรายชื่อ user, UID, home, shell
/etc/shadowรหัสผ่านเข้ารหัส + นโยบายอายุรหัส (root อ่านเท่านั้น)
/etc/groupรายชื่อกลุ่มและสมาชิก
/etc/skelแม่แบบไฟล์ที่ก๊อปให้ user ใหม่ทุกคน
/etc/login.defsค่าเริ่มต้นของนโยบายรหัสสำหรับ user ใหม่
✅ จบบทนี้คุณควรทำได้

สร้าง user ใหม่ (useradd) → ตั้งรหัสผ่าน (passwd) → ใส่เข้ากลุ่มถูกต้อง (usermod -aG) → กำหนดนโยบายรหัสและวันหมดอายุ (chage) → และตรวจซ้ำด้วย id กับ chage -l ก่อน reboot ได้อย่างมั่นใจ