目次

1. บทนำ

Ubuntu เป็นระบบปฏิบัติการ Linux ยอดนิยมที่ผู้ใช้จำนวนมากเลือกใช้ ตั้งแต่การใช้งานส่วนตัวไปจนถึงสภาพแวดล้อมเซิร์ฟเวอร์ขององค์กร การจัดการบัญชีผู้ใช้เป็นสิ่งจำเป็นในการดูแลระบบ Ubuntu โดยเฉพาะอย่างยิ่ง การตรวจสอบรายชื่อผู้ใช้ที่ลงทะเบียนไว้ในระบบมีประโยชน์อย่างยิ่งต่อการจัดการความปลอดภัยและการจัดระเบียบบัญชี

บทความนี้จะอธิบายวิธีการตรวจสอบรายชื่อผู้ใช้ใน Ubuntu อย่างละเอียด โดยครอบคลุมตั้งแต่คำสั่งพื้นฐานไปจนถึงวิธีการรับข้อมูลเชิงลึก เพื่อให้เป็นประโยชน์สำหรับทั้งผู้เริ่มต้นและผู้ใช้งานขั้นสูง

2. วิธีการตรวจสอบรายชื่อผู้ใช้ใน Ubuntu

ใน Ubuntu คุณสามารถเรียกดูข้อมูลผู้ใช้ได้อย่างง่ายดายโดยใช้ไฟล์หรือคำสั่งเฉพาะ คุณสามารถตรวจสอบรายชื่อผู้ใช้ได้ด้วยวิธีดังต่อไปนี้:

2.1 การแสดงรายชื่อผู้ใช้ด้วย /etc/passwd

ใน Ubuntu ข้อมูลผู้ใช้ทั้งหมดจะถูกเก็บไว้ในไฟล์ /etc/passwd คุณสามารถตรวจสอบผู้ใช้ที่ลงทะเบียนทั้งหมดได้โดยการแสดงเนื้อหาของไฟล์นี้

ตัวอย่างคำสั่ง

cat /etc/passwd

เมื่อรันคำสั่งนี้ ข้อมูลจะแสดงในรูปแบบดังต่อไปนี้:

root:x:0:0:root:/root:/bin/bash
user1:x:1000:1000:User One,,,:/home/user1:/bin/bash
user2:x:1001:1001:User Two,,,:/home/user2:/bin/bash

แต่ละฟิลด์ในแต่ละบรรทัดจะถูกคั่นด้วยเครื่องหมาย “: (โคลอน)” และมีข้อมูลดังต่อไปนี้:

  1. ชื่อผู้ใช้ (Username)
  2. รหัสผ่าน (ปัจจุบันแสดงเป็น x) (Password (currently hidden as x))
  3. รหัสผู้ใช้ (UID) (User ID (UID))
  4. รหัสกลุ่ม (GID) (Group ID (GID))
  5. ข้อมูลผู้ใช้ (คอมเมนต์) (User Information (comment))
  6. ไดเรกทอรีโฮม (Home Directory)
  7. เชลล์เริ่มต้น (Default Shell)

ไฟล์นี้ยังรวมถึงผู้ใช้ระบบด้วย ดังนั้นหากคุณต้องการดึงเฉพาะผู้ใช้ที่สามารถเข้าสู่ระบบได้ตามปกติ ให้ใช้วิธีต่อไปนี้:

2.2 การรับเฉพาะชื่อผู้ใช้

หากคุณต้องการแสดงเฉพาะชื่อผู้ใช้ทั้งหมด คุณสามารถใช้คำสั่งต่อไปนี้:

cut -d: -f1 /etc/passwd

หรือคุณสามารถใช้คำสั่ง awk ได้เช่นกัน

awk -F':' '{ print $1 }' /etc/passwd

ตัวอย่างผลลัพธ์:

root
user1
user2

2.3 การค้นหาผู้ใช้เฉพาะ

หากต้องการตรวจสอบว่ามีผู้ใช้เฉพาะอยู่หรือไม่ ให้ใช้คำสั่ง grep

grep 'user1' /etc/passwd

เมื่อรันคำสั่งนี้ ข้อมูลเกี่ยวกับ user1 เท่านั้นที่จะปรากฏขึ้น

2.4 การรับรายชื่อกลุ่มโดยใช้ /etc/group

หากต้องการตรวจสอบกลุ่มที่ผู้ใช้สังกัดอยู่ ให้ดูที่ /etc/group

cat /etc/group | cut -d: -f1

นอกจากนี้ หากต้องการตรวจสอบกลุ่มที่ผู้ใช้เฉพาะสังกัดอยู่ ให้ใช้คำสั่งต่อไปนี้:

groups user1

ตัวอย่างผลลัพธ์:

user1 : user1 sudo

ซึ่งแสดงว่า user1 อยู่ในกลุ่ม sudo ด้วย

3. วิธีการตรวจสอบผู้ใช้ที่เข้าสู่ระบบอยู่ในปัจจุบัน

ใน Ubuntu มีหลายวิธีในการตรวจสอบผู้ใช้ที่กำลังเข้าสู่ระบบอยู่ในปัจจุบัน คุณสามารถรับรายชื่อผู้ใช้ที่กำลังเปิดเซสชันและข้อมูลการเข้าสู่ระบบโดยละเอียดได้โดยใช้คำสั่งเฉพาะ

3.1 การตรวจสอบผู้ใช้ที่เข้าสู่ระบบโดยใช้คำสั่ง who

คำสั่ง who จะแสดงรายชื่อผู้ใช้ทั้งหมดที่กำลังเข้าสู่ระบบอยู่ในปัจจุบัน

ตัวอย่างคำสั่ง

who

ตัวอย่างผลลัพธ์

user1     tty1          2025-02-16 10:05
user2     pts/0         2025-02-16 11:30

คำอธิบายแต่ละฟิลด์

  1. ชื่อผู้ใช้ (ผู้ใช้ที่เข้าสู่ระบบ)
  2. ชื่อเทอร์มินัล (คอนโซลจริง tty1 หรือการเชื่อมต่อระยะไกล pts/0)
  3. เวลาเข้าสู่ระบบ

คำสั่ง who เป็นคำสั่งที่เรียบง่ายและสะดวกเมื่อคุณต้องการตรวจสอบผู้ใช้ที่เข้าสู่ระบบอย่างรวดเร็ว

3.2 การตรวจสอบข้อมูลโดยละเอียดโดยใช้คำสั่ง w

คำสั่ง w จะให้ข้อมูลโดยละเอียดมากกว่าคำสั่ง who

ตัวอย่างคำสั่ง

w

ตัวอย่างผลลัพธ์

 11:35:25 up 2:15,  2 users,  load average: 0.03, 0.02, 0.00
USER      TTY       FROM                 LOGIN@   IDLE   JCPU   PCPU WHAT
user1     tty1                             10:05    1:30m  0.10s  0.10s -bash
user2     pts/0     192.168.1.10         11:30    0.00s  0.05s  0.02s sshd

คำอธิบายแต่ละฟิลด์

  • เวลาที่ระบบทำงาน (up 2:15)
  • จำนวนผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน (2 users)
  • โหลด CPU (load average)
  • ชื่อผู้ใช้ (USER)
  • เทอร์มินัลที่เชื่อมต่อ (TTY)
  • แหล่งที่มาของการเชื่อมต่อระยะไกล (FROM)
  • เวลาเข้าสู่ระบบ (LOGIN@)
  • เวลาที่ไม่ได้ใช้งาน (IDLE)
  • สถานะการใช้งาน CPU (JCPU, PCPU)
  • กระบวนการที่กำลังทำงาน (WHAT)

โดยเฉพาะอย่างยิ่ง ที่อยู่ IP ระยะไกลของผู้ใช้ที่เข้าสู่ระบบผ่าน SSH จะแสดงในฟิลด์ FROM ซึ่งเป็นประโยชน์สำหรับการจัดการและการตรวจสอบการเข้าถึงระยะไกล

3.3 การตรวจสอบผู้ใช้ที่เข้าสู่ระบบอย่างง่ายดายโดยใช้คำสั่ง users

หากคุณต้องการแสดงเฉพาะชื่อผู้ใช้ที่เข้าสู่ระบบอย่างง่ายดาย คำสั่ง users จะสะดวก

ตัวอย่างคำสั่ง

users

ตัวอย่างผลลัพธ์

user1 user2

คำสั่งนี้เป็นเวอร์ชันย่อของ who และจะแสดงเฉพาะชื่อผู้ใช้อย่างเรียบง่าย

3.4 การตรวจสอบผู้ใช้ปัจจุบันโดยใช้คำสั่ง whoami

หากคุณต้องการตรวจสอบผู้ใช้ที่กำลังทำงานอยู่ในเซสชันปัจจุบัน ให้ใช้คำสั่ง whoami

ตัวอย่างคำสั่ง

whoami

ตัวอย่างผลลัพธ์

user1

คำสั่งนี้จะแสดงเฉพาะชื่อผู้ใช้ที่กำลังทำงานอยู่ในเทอร์มินัลปัจจุบัน ซึ่งเป็นประโยชน์สำหรับการตรวจสอบว่าคุณกำลังรันคำสั่งในฐานะผู้ใช้เฉพาะหรือไม่

3.5 การตรวจสอบประวัติการเข้าสู่ระบบล่าสุดโดยใช้คำสั่ง last

คุณสามารถใช้คำสั่ง last เพื่อตรวจสอบประวัติการเข้าสู่ระบบของผู้ใช้ที่เข้าสู่ระบบในอดีตได้

ตัวอย่างคำสั่ง

last

ตัวอย่างผลลัพธ์

user1     pts/0          192.168.1.10      Mon Feb 15 10:20   still logged in
user2     tty1                               Mon Feb 15 09:30 - 10:00  (00:30)
root      tty1                               Sun Feb 14 22:15 - 23:45  (01:30)

คำอธิบายแต่ละฟิลด์

  • ชื่อผู้ใช้ (Username)
  • เทอร์มินัลที่เชื่อมต่อ (เช่น tty1, pts/0) (Connected terminal (e.g., tty1, pts/0))
  • แหล่งที่มาของการเชื่อมต่อระยะไกล (ที่อยู่ IP) (Remote connection source (IP address))
  • เวลาเริ่มต้นการเข้าสู่ระบบ (Login start time)
  • เวลาออกจากระบบ (still logged in หมายถึงยังคงเข้าสู่ระบบ) (Logout time (still logged in means currently logged in))
  • เวลารวมที่เข้าสู่ระบบ (00:30 = 30 นาที) (Total login duration (00:30 = 30 minutes))

คำสั่งนี้มีประโยชน์สำหรับการตรวจสอบผู้ใช้ที่เข้าสู่ระบบในอดีต หรือเพื่อตรวจจับการเข้าถึงที่ไม่ได้รับอนุญาต

4. วิธีการตรวจสอบข้อมูลผู้ใช้โดยละเอียด

ใน Ubuntu มีคำสั่งหลายคำสั่งสำหรับรับข้อมูลโดยละเอียดของผู้ใช้ที่ลงทะเบียนไว้ การตรวจสอบ UID, กลุ่ม, และเชลล์การเข้าสู่ระบบของผู้ใช้เฉพาะช่วยให้สามารถตั้งค่าและจัดการสิทธิ์ได้อย่างเหมาะสม
ในที่นี้จะอธิบายวิธีการตรวจสอบข้อมูลโดยละเอียดโดยใช้คำสั่งเช่น id, finger, และ chage

4.1 การตรวจสอบ UID, GID, และกลุ่มของผู้ใช้ด้วยคำสั่ง id

คุณสามารถใช้คำสั่ง id เพื่อตรวจสอบ UID (User ID), GID (Group ID), และ กลุ่มที่สังกัด ของผู้ใช้ได้

ตัวอย่างคำสั่ง
id user1
ตัวอย่างผลลัพธ์
uid=1001(user1) gid=1001(user1) groups=1001(user1),27(sudo),1002(docker)
คำอธิบายแต่ละรายการ
  • uid=1001(user1)รหัสผู้ใช้ (หมายเลขระบุผู้ใช้ในระบบ)
  • gid=1001(user1)รหัสกลุ่ม (กลุ่มหลัก)
  • groups=1001(user1),27(sudo),1002(docker)รายชื่อกลุ่มที่สังกัด

ข้อมูลนี้มีประโยชน์เมื่อคุณต้องการตรวจสอบว่าผู้ใช้เฉพาะอยู่ในกลุ่มใด

หากต้องการตรวจสอบข้อมูลของผู้ใช้ปัจจุบัน
id

เมื่อรันคำสั่งนี้ ข้อมูล ID ของผู้ใช้ปัจจุบันจะแสดงขึ้น

4.2 การตรวจสอบกลุ่มที่ผู้ใช้สังกัดด้วยคำสั่ง groups

หากต้องการตรวจสอบว่าผู้ใช้เฉพาะอยู่ในกลุ่มใดอย่างง่ายดาย ให้ใช้คำสั่ง groups

ตัวอย่างคำสั่ง
groups user1
ตัวอย่างผลลัพธ์
user1 : user1 sudo docker

แม้ว่าคำสั่ง id จะสามารถรับข้อมูลกลุ่มได้เช่นกัน แต่ หากคุณต้องการตรวจสอบเฉพาะชื่อกลุ่มอย่างกระชับ คำสั่ง groups จะสะดวกกว่า

หากต้องการตรวจสอบกลุ่มของผู้ใช้ปัจจุบัน
groups

เมื่อรันคำสั่งนี้ รายชื่อกลุ่มที่ผู้ใช้ปัจจุบันสังกัดอยู่จะแสดงขึ้น

4.3 การรับข้อมูลผู้ใช้โดยละเอียดด้วยคำสั่ง finger

คุณสามารถใช้คำสั่ง finger เพื่อรับข้อมูลโดยละเอียดมากขึ้น เช่น ชื่อเต็มของผู้ใช้ ข้อมูลการเข้าสู่ระบบ และประเภทของเชลล์

วิธีการติดตั้ง

finger ไม่ได้ถูกติดตั้งมาเป็นค่าเริ่มต้น ดังนั้นขั้นแรกให้ติดตั้งโดยใช้คำสั่งต่อไปนี้:

sudo apt install finger
ตัวอย่างคำสั่ง
finger user1
ตัวอย่างผลลัพธ์
Login: user1                     Name: User One
Directory: /home/user1           Shell: /bin/bash
Last login: Mon Feb 16 10:20 (UTC) on pts/0
คำอธิบายแต่ละรายการ
  • Login → ชื่อผู้ใช้
  • Name → ชื่อจริงที่ตั้งค่าไว้ (อาจว่างเปล่าได้)
  • Directory → ไดเรกทอรีโฮมของผู้ใช้
  • Shell → เชลล์ที่ใช้งานอยู่
  • Last login → วันที่และเวลาที่เข้าสู่ระบบล่าสุด

ผู้ดูแลระบบสามารถใช้คำสั่ง finger เพื่อตรวจสอบได้อย่างง่ายดายว่าผู้ใช้รายใดใช้เชลล์ใด

4.4 การตรวจสอบวันหมดอายุของรหัสผ่านด้วยคำสั่ง chage

ผู้ดูแลระบบสามารถใช้คำสั่ง chage เพื่อตรวจสอบ วันหมดอายุของรหัสผ่านและวันที่แก้ไขรหัสผ่านล่าสุด ของผู้ใช้เฉพาะได้

ตัวอย่างคำสั่ง
sudo chage -l user1
ตัวอย่างผลลัพธ์
Last password change          : Jan 15, 2025
Password expires              : Mar 15, 2025
Password inactive             : never
Account expires               : never
Minimum number of days between password change : 7
Maximum number of days between password change : 60
Number of days of warning before password expires : 5
คำอธิบายแต่ละรายการ
  • Last password change → วันที่แก้ไขรหัสผ่านล่าสุด
  • Password expires → วันหมดอายุของรหัสผ่าน
  • Password inactive → ระยะเวลาจนกว่ารหัสผ่านจะถูกปิดใช้งาน
  • Account expires → วันที่บัญชีจะถูกปิดใช้งาน
  • Minimum number of days between password change → ระยะเวลาขั้นต่ำระหว่างการเปลี่ยนรหัสผ่าน
  • Maximum number of days between password change → ระยะเวลาที่รหัสผ่านมีผล
  • Number of days of warning before password expires → จำนวนวันก่อนรหัสผ่านหมดอายุที่จะแสดงคำเตือน

ผู้ดูแลระบบสามารถใช้ข้อมูลนี้เพื่อ ตั้งค่านโยบายการจัดการรหัสผ่านและเสริมสร้างความปลอดภัย

5. การจัดการผู้ใช้ใน Ubuntu (เพิ่ม ลบ แก้ไข)

ใน Ubuntu การจัดการผู้ใช้อย่างเหมาะสมโดยผู้ดูแลระบบเป็นสิ่งสำคัญ การเพิ่มหรือลบผู้ใช้ใหม่ และการแก้ไขข้อมูลผู้ใช้ที่มีอยู่สามารถช่วยปรับปรุงความปลอดภัยและประสิทธิภาพการทำงานของระบบได้ ส่วนนี้จะอธิบายวิธีการจัดการผู้ใช้โดยใช้คำสั่งเช่น adduser, deluser, และ usermod

5.1 การเพิ่มผู้ใช้

หากต้องการสร้างผู้ใช้ใหม่ใน Ubuntu ให้ใช้คำสั่ง adduser หรือ useradd

5.1.1 คำสั่ง adduser (แนะนำ)

adduser เป็นคำสั่งที่สะดวกสำหรับการเพิ่มผู้ใช้ในโหมดโต้ตอบ

ตัวอย่างคำสั่ง
sudo adduser newuser
ขั้นตอนการโต้ตอบ
Adding user `newuser' ...
Adding new group `newuser' (1002) ...
Adding new user `newuser' (1002) with group `newuser' ...
Creating home directory `/home/newuser' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: ********
Retype new UNIX password: ********
passwd: password updated successfully
Changing the user information for newuser
Enter the new value, or press ENTER for the default
        Full Name []: 
        Room Number []: 
        Work Phone []: 
        Home Phone []: 
        Other []: 
Is the information correct? [Y/n] 
สิ่งที่ถูกสร้างขึ้น
  • บัญชีผู้ใช้
  • กลุ่มเฉพาะ
  • ไดเรกทอรีโฮม (/home/newuser)
  • รหัสผ่านสำหรับเข้าสู่ระบบ
  • ข้อมูลผู้ใช้พื้นฐาน

วิธีนี้เป็นวิธีที่นิยมที่สุดและใช้งานง่ายสำหรับผู้เริ่มต้น

5.1.2 คำสั่ง useradd (สำหรับผู้ใช้ขั้นสูง)

คำสั่ง useradd แตกต่างจาก adduser โดยถูกออกแบบมาให้เรียบง่ายและเหมาะสำหรับสคริปต์มากกว่า แต่จะไม่สร้างไดเรกทอรีโฮมโดยอัตโนมัติ

ตัวอย่างคำสั่ง
sudo useradd -m -s /bin/bash newuser
sudo passwd newuser
คำอธิบายตัวเลือก
  • -m → สร้างไดเรกทอรีโฮม
  • -s /bin/bash → ตั้งค่าเชลล์การเข้าสู่ระบบเป็น /bin/bash

เมื่อใช้คำสั่งนี้ คุณจะต้องตั้งค่ารหัสผ่านแยกต่างหาก

5.2 การลบผู้ใช้

หากต้องการลบบัญชีผู้ใช้ที่ไม่ต้องการ ให้ใช้คำสั่ง deluser หรือ userdel

5.2.1 คำสั่ง deluser (แนะนำ)

deluser เป็นเวอร์ชันการลบของ adduser ซึ่งสามารถลบผู้ใช้ได้อย่างง่ายดาย

ตัวอย่างคำสั่ง
sudo deluser newuser
หากต้องการลบไดเรกทอรีโฮมด้วย
sudo deluser --remove-home newuser

เมื่อรันคำสั่งนี้ ไดเรกทอรีโฮมของผู้ใช้ (/home/newuser) ก็จะถูกลบด้วย

5.2.2 คำสั่ง userdel (สำหรับผู้ใช้ขั้นสูง)

คำสั่ง userdel ช่วยให้สามารถควบคุมได้ละเอียดขึ้น

ตัวอย่างคำสั่ง
sudo userdel newuser
การลบพร้อมไดเรกทอรีโฮม
sudo userdel -r newuser

userdel เป็นวิธีที่ตรงกว่า deluser แต่ต้องใช้ด้วยความระมัดระวัง

5.3 การแก้ไขผู้ใช้

หากต้องการแก้ไขข้อมูลผู้ใช้ที่มีอยู่ ให้ใช้คำสั่ง usermod

5.3.1 การเปลี่ยนชื่อผู้ใช้

ตัวอย่างคำสั่ง
sudo usermod -l newname oldname

เมื่อรันคำสั่งนี้ oldname จะถูกเปลี่ยนเป็น newname

5.3.2 การเปลี่ยนไดเรกทอรีโฮม

หากต้องการเปลี่ยนไดเรกทอรีโฮมของผู้ใช้ ให้ใช้ตัวเลือก -d

ตัวอย่างคำสั่ง
sudo usermod -d /new/home/path user1
การย้ายไดเรกทอรีโฮมปัจจุบันไปยังตำแหน่งใหม่
sudo usermod -d /home/newuser -m user1

5.3.3 การเปลี่ยนกลุ่มที่ผู้ใช้สังกัด

หากต้องการเพิ่มผู้ใช้เฉพาะในกลุ่มอื่น หรือเปลี่ยนกลุ่มที่สังกัด ให้ใช้ usermod -aG

การเพิ่มผู้ใช้ในกลุ่ม sudo
sudo usermod -aG sudo user1
การตรวจสอบกลุ่มปัจจุบัน
groups user1

5.3.4 การเปลี่ยนรหัสผ่านของผู้ใช้

ผู้ดูแลระบบสามารถใช้คำสั่ง passwd เพื่อเปลี่ยนรหัสผ่านของผู้ใช้เฉพาะได้

ตัวอย่างคำสั่ง
sudo passwd user1
ตัวอย่างผลลัพธ์
Enter new UNIX password: ********
Retype new UNIX password: ********
passwd: password updated successfully

ด้วยคำสั่งนี้ รหัสผ่านของ user1 จะถูกเปลี่ยน

6. ตัวอย่างการใช้งานตามสถานการณ์

การจัดการผู้ใช้ใน Ubuntu ไม่ใช่แค่การตรวจสอบรายชื่อ หรือการเพิ่มและลบเท่านั้น แต่สิ่งสำคัญคือการรู้ วิธีการจัดการที่เหมาะสมกับสถานการณ์เฉพาะ ในส่วนนี้จะนำเสนอ ตัวอย่างการใช้งานคำสั่งตามสถานการณ์ที่พบบ่อย

6.1 การค้นหาผู้ใช้ที่ตรงตามเงื่อนไขเฉพาะ

6.1.1 การแสดงรายชื่อผู้ดูแลระบบ (ผู้ใช้ที่มีสิทธิ์ sudo)

หากผู้ดูแลระบบต้องการตรวจสอบผู้ใช้ที่มีสิทธิ์ sudo คุณสามารถค้นหาในไฟล์ /etc/group ด้วยคำสั่ง getent ได้

ตัวอย่างคำสั่ง
getent group sudo
ตัวอย่างผลลัพธ์
sudo:x:27:user1,user2

คำอธิบายผลลัพธ์

  • sudo:x:27: → ข้อมูลของกลุ่ม sudo
  • user1,user2 → ผู้ใช้ที่สังกัดกลุ่ม sudo

ด้วยวิธีนี้ คุณสามารถ ตรวจสอบผู้ใช้ที่มีสิทธิ์ดูแลระบบได้อย่างรวดเร็ว

6.1.2 การแสดงรายชื่อผู้ใช้ที่สามารถเข้าสู่ระบบได้

โดยปกติ /etc/passwd จะรวมถึงผู้ใช้ระบบด้วย แต่ หากต้องการตรวจสอบผู้ใช้ที่สามารถเข้าสู่ระบบได้จริง จะสะดวกในการค้นหาผู้ใช้ที่มีเชลล์เริ่มต้น

ตัวอย่างคำสั่ง
grep '/bin/bash' /etc/passwd
ตัวอย่างผลลัพธ์
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash

ข้อดีของวิธีนี้

  • แสดงเฉพาะผู้ใช้ที่มี /bin/bash หรือ /bin/sh
  • ไม่รวมผู้ใช้ที่ตั้งค่า nologin (เช่น บัญชีระบบ)

6.1.3 การแสดงรายชื่อผู้ใช้ระบบ (ไม่สามารถเข้าสู่ระบบได้)

ผู้ใช้ระบบมักจะถูกตั้งค่าให้ใช้ /usr/sbin/nologin หรือ /bin/false ดังนั้นคุณสามารถตรวจสอบได้ด้วยคำสั่งต่อไปนี้:

ตัวอย่างคำสั่ง
grep -E '/usr/sbin/nologin|/bin/false' /etc/passwd
ตัวอย่างผลลัพธ์
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
syslog:x:104:110::/home/syslog:/bin/false

การตรวจสอบบัญชีระบบช่วยให้คุณระมัดระวังไม่ให้ลบโดยไม่ตั้งใจ

6.2 วิธีการลบผู้ใช้ที่ไม่ต้องการเป็นประจำ

6.2.1 การแสดงรายชื่อผู้ใช้ที่เข้าสู่ระบบล่าสุด

หากต้องการลบผู้ใช้ที่ไม่ได้เข้าสู่ระบบมาเป็นเวลานาน ให้ใช้คำสั่ง lastlog เพื่อตรวจสอบประวัติการเข้าสู่ระบบ

ตัวอย่างคำสั่ง
lastlog
ตัวอย่างผลลัพธ์
Username         Port      From                Latest
root             tty1                          Mon Feb 12 14:02:08 +0000 2025
user1            pts/0     192.168.1.10      Mon Jan 15 10:30:12 +0000 2025
user2            pts/1     192.168.1.20      Never logged in
  • Never logged in → ผู้ใช้ที่ไม่เคยเข้าสู่ระบบเลย

จากข้อมูลนี้ คุณสามารถตัดสินใจได้ว่าจะลบบัญชีที่ไม่ต้องการหรือไม่

คำสั่งลบบัญชี
sudo deluser user2 --remove-home

6.2.2 การตรวจสอบวันที่แก้ไขรหัสผ่านล่าสุด

คุณสามารถใช้คำสั่ง chage เพื่อตรวจสอบ วันที่ผู้ใช้แก้ไขรหัสผ่านล่าสุด ได้

ตัวอย่างคำสั่ง
sudo chage -l user1
ตัวอย่างผลลัพธ์
Last password change          : Jan 15, 2025
Password expires              : Mar 15, 2025
Password inactive             : never

หากรหัสผ่านไม่ได้ถูกเปลี่ยนมาเป็นเวลานาน คุณสามารถ บังคับให้เปลี่ยน เพื่อความปลอดภัยได้

การบังคับเปลี่ยนรหัสผ่าน
sudo passwd --expire user1

ด้วยวิธีนี้ ผู้ใช้จะต้อง ตั้งรหัสผ่านใหม่ ในการเข้าสู่ระบบครั้งถัดไป

6.3 การตรวจสอบผู้ใช้ที่เชื่อมต่อผ่าน SSH

ในการจัดการระยะไกล การตรวจสอบ ผู้ใช้ที่เชื่อมต่อผ่าน SSH อยู่ในปัจจุบัน เป็นสิ่งสำคัญ

ตัวอย่างคำสั่ง
who | grep pts
ตัวอย่างผลลัพธ์
user1     pts/0          192.168.1.10      11:30

ด้วยวิธีนี้ คุณสามารถตรวจสอบ ผู้ใช้ที่เชื่อมต่อระยะไกลและที่อยู่ IP ของพวกเขา ได้

6.4 การส่งออกข้อมูลผู้ใช้ทั้งหมดเป็น CSV

หากผู้ดูแลระบบต้องการ สร้างรายการข้อมูลผู้ใช้ทั้งหมด และบันทึกไว้ คำสั่ง getent มีประโยชน์มาก

ตัวอย่างคำสั่ง
getent passwd | awk -F: '{print $1 "," $3 "," $4 "," $6}' > users.csv
ผลลัพธ์ (เนื้อหาของ users.csv)
root,0,0,/root
user1,1001,1001,/home/user1
user2,1002,1002,/home/user2
  • ส่งออกชื่อผู้ใช้, UID, GID, และไดเรกทอรีโฮมในรูปแบบ CSV
  • สามารถวิเคราะห์ได้ด้วย Excel หรือสเปรดชีต

7. FAQ (คำถามที่พบบ่อย)

รวบรวมคำถามที่พบบ่อยเกี่ยวกับการจัดการผู้ใช้ใน Ubuntu ข้อมูลนี้เป็นประโยชน์สำหรับการแก้ไขปัญหาและการจัดการ

7.1 สามารถแก้ไข /etc/passwd โดยตรงได้หรือไม่?

คำตอบ

การแก้ไขโดยตรง ไม่แนะนำ /etc/passwd เป็นไฟล์ระบบที่สำคัญ และการแก้ไขที่ผิดพลาดอาจทำให้ไม่สามารถเข้าสู่ระบบได้

วิธีที่แนะนำ

คุณสามารถแก้ไขได้อย่างปลอดภัยโดยใช้คำสั่ง usermod หรือ vipw

วิธีการแก้ไขที่ปลอดภัย
sudo vipw

ด้วยวิธีนี้ คุณสามารถแก้ไข /etc/passwd ในสภาพแวดล้อมที่ปลอดภัยและถูกล็อก

7.2 ความแตกต่างระหว่างคำสั่ง who และ users คืออะไร?

คำตอบ

คำสั่งคำอธิบาย
whoแสดงผู้ใช้ที่เข้าสู่ระบบในปัจจุบันโดยละเอียด (เวลาเข้าสู่ระบบ, เทอร์มินัล)
usersแสดงเฉพาะชื่อผู้ใช้ที่เข้าสู่ระบบอย่างเรียบง่าย

ตัวอย่างการรัน

who

ตัวอย่างผลลัพธ์

user1     tty1          2025-02-16 10:05
user2     pts/0         2025-02-16 11:30
users

ตัวอย่างผลลัพธ์

user1 user2

who ให้ข้อมูลโดยละเอียดมากกว่า

7.3 จะตรวจสอบประวัติการเข้าสู่ระบบของผู้ใช้เฉพาะได้อย่างไร?

คำตอบ

คุณสามารถใช้คำสั่ง last เพื่อตรวจสอบประวัติการเข้าสู่ระบบของผู้ใช้เฉพาะได้

ตัวอย่างคำสั่ง
last user1
ตัวอย่างผลลัพธ์
user1     pts/0          192.168.1.10      Mon Feb 15 10:20   still logged in
user1     tty1                               Mon Feb 10 09:30 - 10:00  (00:30)

ด้วยวิธีนี้ คุณสามารถตรวจสอบได้ว่า เข้าสู่ระบบจากเทอร์มินัล/ที่อยู่ IP ใด

7.4 จะเปลี่ยนรหัสผ่านของผู้ใช้ได้อย่างไร?

คำตอบ

ผู้ดูแลระบบสามารถใช้คำสั่ง passwd เพื่อเปลี่ยนรหัสผ่านของผู้ใช้เฉพาะได้

ตัวอย่างคำสั่ง
sudo passwd user1
ตัวอย่างผลลัพธ์
Enter new UNIX password: ********
Retype new UNIX password: ********
passwd: password updated successfully

ผู้ใช้ที่เปลี่ยนรหัสผ่านจะต้องใช้รหัสผ่านใหม่ในการเข้าสู่ระบบครั้งถัดไป

7.5 มีวิธีปิดใช้งานผู้ใช้ชั่วคราวหรือไม่?

คำตอบ

คุณสามารถใช้คำสั่ง usermod เพื่อปิดใช้งานผู้ใช้ชั่วคราวได้

การล็อกบัญชี
sudo usermod -L user1

เมื่อรันคำสั่งนี้ บัญชีของ user1 จะถูกล็อกชั่วคราวและไม่สามารถเข้าสู่ระบบได้

การปลดล็อกบัญชี
sudo usermod -U user1

ด้วยคำสั่งนี้ คุณสามารถเปิดใช้งานการเข้าสู่ระบบของ user1 ได้อีกครั้ง

7.6 จะเพิ่มผู้ใช้เฉพาะในกลุ่ม sudo ได้อย่างไร?

คำตอบ

คุณสามารถใช้คำสั่ง usermod เพื่อเพิ่มผู้ใช้เฉพาะในกลุ่ม sudo ได้

ตัวอย่างคำสั่ง
sudo usermod -aG sudo user1

หลังจากเพิ่มแล้ว ผู้ใช้ user1 จะสามารถใช้คำสั่ง sudo ได้

7.7 จะเปลี่ยนไดเรกทอรีโฮมของผู้ใช้ได้อย่างไร?

คำตอบ

คุณสามารถใช้ usermod -d เพื่อเปลี่ยนไดเรกทอรีโฮมของผู้ใช้ได้

ตัวอย่างคำสั่ง
sudo usermod -d /new/home/path -m user1
ตัวอย่างผลลัพธ์
user1 home directory has been moved to /new/home/path

ด้วยคำสั่งนี้ ไดเรกทอรีโฮมของ user1 จะถูกเปลี่ยนไปยังพาธใหม่

7.8 จะลบผู้ใช้และข้อมูลทั้งหมดอย่างสมบูรณ์ได้อย่างไร?

คำตอบ

คุณสามารถใช้ deluser หรือ userdel เพื่อลบผู้ใช้และไดเรกทอรีโฮมของพวกเขาได้

ตัวอย่างคำสั่ง
sudo deluser --remove-home user1

หรือ

sudo userdel -r user1

เมื่อรันคำสั่งนี้ ผู้ใช้ user1 และไดเรกทอรีโฮม /home/user1 จะถูกลบอย่างสมบูรณ์

7.9 จะตรวจสอบกิจกรรมโดยละเอียดของผู้ใช้ที่เข้าสู่ระบบอยู่ในปัจจุบันได้อย่างไร?

คำตอบ

คุณสามารถใช้คำสั่ง w เพื่อตรวจสอบ กิจกรรมโดยละเอียดของผู้ใช้ที่เข้าสู่ระบบ ได้

ตัวอย่างคำสั่ง
w
ตัวอย่างผลลัพธ์
 11:35:25 up 2:15,  2 users,  load average: 0.03, 0.02, 0.00
USER      TTY       FROM                 LOGIN@   IDLE   JCPU   PCPU WHAT
user1     tty1                             10:05    1:30m  0.10s  0.10s -bash
user2     pts/0     192.168.1.10         11:30    0.00s  0.05s  0.02s sshd
  • ผู้ใช้ที่เข้าสู่ระบบ
  • IP การเชื่อมต่อระยะไกล
  • กระบวนการปัจจุบัน (คอลัมน์ WHAT)
  • สถานะโหลดระบบ (load average)

ด้วยวิธีนี้ คุณสามารถ ตรวจสอบได้ว่าผู้ใช้รายใดกำลังทำงานอะไรอยู่