วิธีจัดการและแสดงรายชื่อผู้ใช้บน Ubuntu: คู่มือครบถ้วนเกี่ยวกับบัญชีผู้ใช้ สิทธิ์การเข้าถึง และคำสั่ง

.

目次

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. ชื่อผู้ใช้
  2. รหัสผ่าน (ปัจจุบันแสดงเป็น x)
  3. UID (User ID)
  4. GID (Group ID)
  5. ข้อมูลผู้ใช้ (ฟิลด์คอมเมนต์)
  6. ไดเรกทอรีบ้าน
  7. เชลล์ล็อกอินเริ่มต้น

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

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 สำหรับ SSH)
  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

คำอธิบายฟิลด์

  • อายุการทำงานของระบบ
  • จำนวนผู้ใช้ที่ล็อกอินอยู่
  • ค่าเฉลี่ยการโหลด CPU
  • ชื่อผู้ใช้
  • เทอร์มินัล
  • โฮสต์ระยะไกล
  • เวลาล็อกอิน
  • เวลาว่าง (idle)
  • การใช้ CPU
  • กระบวนการที่กำลังทำงาน

ที่อยู่ IP ในฟิลด์ FROM ช่วยยืนยันการล็อกอิน SSH จากระยะไกล ทำให้เป็นประโยชน์สำหรับการเฝ้าระวังและการจัดการความปลอดภัย

3.3 แสดงผู้ใช้ที่ล็อกอินอยู่โดยใช้ users

If you want a simplified list showing only the usernames of logged-in users, the users command is useful.

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

users

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

user1 user2

This command is a simplified version of who and shows only the logged-in usernames.

3.4 ระบุผู้ใช้ปัจจุบันด้วย whoami

To check which user is executing the current session, use the whoami command.

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

whoami

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

user1

This command simply displays the username of the current session’s user, making it helpful for verifying the execution context.

3.5 ตรวจสอบประวัติการเข้าสู่ระบบด้วย last

The last command allows you to review the login history of users.

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

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)
  • ชื่อผู้ใช้
  • เทอร์มินัลที่ใช้
  • ที่อยู่ IP ระยะไกล
  • เวลาเริ่มต้นการเข้าสู่ระบบ
  • เวลาออกจากระบบ (หรือยังคงเข้าสู่ระบบ)
  • ระยะเวลาการเซสชันทั้งหมด

This command helps administrators monitor previous access and detect suspicious logins.

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

Ubuntu provides several commands to retrieve detailed information about registered users. Reviewing details such as UID, group membership, and login shell helps administrators manage permissions accurately. This section explains methods using id, groups, finger, and chage.

4.1 ตรวจสอบ UID, GID, และกลุ่มโดยใช้ id

The id command displays the user’s UID (User ID), GID (Group ID), and group membership.

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

4.2 ตรวจสอบการเป็นสมาชิกกลุ่มผ่าน groups

The groups command quickly lists the groups a user belongs to.

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

groups is useful when you want to see only group names without detailed IDs.

4.3 ดึงรายละเอียดผู้ใช้โดยใช้ finger

The finger command provides detailed user information such as full name, login directory, and shell type.

คำสั่งติดตั้ง
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 → เวลาเข้าสู่ระบบครั้งล่าสุด

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

The chage command allows administrators to review the password expiration period and last password change.

ตัวอย่างคำสั่ง
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 changes
  • Maximum number of days between password changes
  • Warning days 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]
  • User account
  • Dedicated group
  • Home directory (/home/newuser)
  • Password for login
  • Basic account information

5.1.2 คำสั่ง useradd (ขั้นสูง)

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

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

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

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

คุณสามารถลบผู้ใช้โดยใช้ deluser หรือ userdel

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

คำสั่ง deluser ลบบัญชีผู้ใช้

sudo deluser newuser
ลบไดเรกทอรีโฮมด้วย
sudo deluser --remove-home newuser

นี่จะลบบัญชีและไดเรกทอรี /home/newuser

5.2.2 คำสั่ง userdel (ขั้นสูง)

คำสั่ง userdel ให้การควบคุมที่มากกว่า

sudo userdel newuser
sudo userdel -r newuser

5.3 การแก้ไขผู้ใช้ที่มีอยู่

ใช้คำสั่ง usermod เพื่อแก้ไขข้อมูลผู้ใช้ที่มีอยู่

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

sudo usermod -l newname oldname

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

sudo usermod -d /new/home/path user1
sudo usermod -d /home/newuser -m user1

5.3.3 แก้ไขการเป็นสมาชิกกลุ่ม

sudo usermod -aG sudo user1
groups user1

5.3.4 เปลี่ยนรหัสผ่าน

sudo passwd user1
Enter new UNIX password: ********
Retype new UNIX password: ********
passwd: password updated successfully

6. สถานการณ์ปฏิบัติสำหรับการจัดการผู้ใช้

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

6.1 ค้นหาผู้ใช้ที่ตรงตามเกณฑ์เฉพาะ

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

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

getent group sudo

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

sudo:x:27:user1,user2
  • sudo:x:27: → ข้อมูลกลุ่ม
  • 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
  • รวมเฉพาะผู้ใช้ที่มี shell เช่น /bin/bash หรือ /bin/sh
  • บัญชีระบบที่ใช้ /usr/sbin/nologin หรือ /bin/false จะถูกยกเว้น

6.1.3 แสดงผู้ใช้ระบบ (บัญชีที่ไม่สามารถเข้าสู่ระบบได้)

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

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

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
  • ไม่เคยเข้าสู่ระบบ → ผู้ใช้ไม่เคยเข้าสู่ระบบ
    sudo deluser user2 --remove-home
    

6.2.2 ตรวจสอบการเปลี่ยนรหัสผ่านครั้งล่าสุด

sudo chage -l user1
sudo passwd --expire user1

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

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

who | grep pts

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

user1    pts/0        192.168.1.10     11:30

ช่วยระบุผู้ใช้ระยะไกลและที่อยู่ IP ของพวกเขา

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

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, และไดเรกทอรีโฮม
  • ข้อมูลสามารถวิเคราะห์ได้โดยใช้ Excel หรือโปรแกรมสเปรดชีต

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

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

คำตอบ: การแก้ไขโดยตรง ไม่แนะนำ การแก้ไขที่ไม่ถูกต้องอาจป้องกันการเข้าสู่ระบบหรือทำให้ระบบเสียหาย

วิธีที่ปลอดภัยกว่า:

sudo vipw

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

CommandDescription
whoDisplays detailed login information
usersDisplays only usernames of logged-in users

7.3 วิธีตรวจสอบประวัติการเข้าสู่ระบบสำหรับผู้ใช้เฉพาะ

last user1

7.4 วิธีเปลี่ยนรหัสผ่านของผู้ใช้

sudo passwd user1

7.5 วิธีปิดใช้งานผู้ใช้ชั่วคราว

sudo usermod -L user1
sudo usermod -U user1

7.6 เพิ่มผู้ใช้ลงในกลุ่ม sudo

sudo usermod -aG sudo user1

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

sudo usermod -d /new/home/path -m user1

7.8 ลบผู้ใช้และข้อมูลของพวกเขาออกอย่างสมบูรณ์

sudo deluser --remove-home user1

หรือ

sudo userdel -r user1

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

w
  • ผู้ใช้ที่เข้าสู่ระบบ
  • ที่อยู่ IP ระยะไกล
  • กระบวนการปัจจุบัน
  • โหลดระบบ

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