การจัดการผู้ใช้ในระบบปฏิบัติการใด ๆ เป็นหนึ่งในงานประจำพื้นฐานของผู้ดูแลระบบ
สำหรับระบบปฏิบัติการที่ใช้ Linux มักจะเกี่ยวข้องกับการสร้างบัญชีผู้ใช้ การแก้ไขบัญชีที่มีอยู่ เช่น การเปลี่ยนโฮมไดเร็กทอรี เชลล์เริ่มต้น การล็อก/ปลดล็อกบัญชีอย่างน้อยหนึ่งบัญชี และการลบบัญชีผู้ใช้
ก่อนที่เราจะตรวจสอบคำสั่งและกระบวนการเพื่อดำเนินงานเหล่านี้ เรามาเจาะลึกกันสั้นๆ ว่าบัญชีผู้ใช้สามารถจำแนกประเภทใน Linux ได้อย่างไร นอกจากนี้ โปรดทราบว่าเว้นแต่จะระบุไว้อย่างชัดเจน คำสั่งที่กำหนดจะทำงานในลีนุกซ์รุ่นทั่วไปส่วนใหญ่
ประเภทผู้ใช้
ผู้ใช้รูท
ผู้ใช้รูทเป็นผู้ดูแลระบบของระบบปฏิบัติการที่มีสิทธิ์ทั้งหมดในการดำเนินการ โดยปกติ เฉพาะรูทเท่านั้นที่สามารถติดตั้ง/ถอนการติดตั้งหรืออัปเดตโปรแกรมและไลบรารีระบบพื้นฐานได้ เป็นบัญชีผู้ใช้เดียวที่มีสิทธิ์ทั่วทั้งระบบ
ดังนั้น ผู้ใช้รูทจึงเป็นผู้ใช้ที่ทรงพลังที่สุดของระบบ
ผู้ใช้พิเศษ
นี่คือผู้ใช้ที่ไม่มีการเข้าสู่ระบบ พวกเขาไม่มีสิทธิ์ทั้งหมดของผู้ใช้รูท ขึ้นอยู่กับบัญชี พวกเขารับบทบาทพิเศษที่แตกต่างกัน
สิ่งเหล่านี้ถูกสร้างขึ้นโดยอัตโนมัติเมื่อทำการติดตั้งแอปพลิเคชันใดๆ bin, sync, lp, mail, operator, squid คือตัวอย่างบางส่วนของผู้ใช้พิเศษ
ผู้ใช้ทั่วไป
ผู้ใช้ทั่วไปมีสิทธิ์เต็มที่ในไดเร็กทอรีการทำงานของพวกเขาเท่านั้น ซึ่งมักจะเป็นโฮมไดเร็กทอรีของพวกเขา พวกเขาไม่มีสิทธิ์ในการจัดการระบบหรือติดตั้งซอฟต์แวร์ พวกเขาไม่สามารถทำงานเหล่านี้ได้หากไม่มีสิทธิพิเศษผ่าน sudo
การเพิ่มผู้ใช้
เดเบียน/อูบุนตู
บนระบบที่ใช้ Debian หรือ Ubuntu มีสองตัวเลือกในการเพิ่มผู้ใช้จาก CLI คำสั่งแรกคือ adduser ซึ่งเป็นสคริปต์ Perl และใช้คำสั่ง useradd ในแบ็กเอนด์ซึ่งเราจะเห็นการใช้งานในภายหลัง
เนื่องจากการเพิ่มผู้ใช้เป็นงานที่มีสิทธิพิเศษ คุณจะต้องใช้ sudo เป็นคำนำหน้าและชื่อผู้ใช้เป็นอาร์กิวเมนต์ สามารถระบุรายละเอียดอื่นๆ ตามที่แจ้ง ยกเว้นชื่อผู้ใช้และรหัสผ่าน รายละเอียดที่เหลือเป็นทางเลือก เราสามารถยืนยันได้ว่าผู้ใช้ถูกสร้างขึ้นโดยใช้คำสั่ง id
$ sudo adduser johndoe Adding user `johndoe' ... Adding new group `johndoe' (1003) ... Adding new user `johndoe' (1003) with group `johndoe' ... Creating home directory `/home/johndoe' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for johndoe Enter the new value, or press ENTER for the default Full Name []: John Doe Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y $ $ id johndoe uid=1003(johndoe) gid=1003(johndoe) groups=1003(johndoe) $
CentOS/RHEL/Fedora (รวมถึงเดเบียน/อูบุนตู)
คำสั่งถัดไป useradd จะทำงานข้ามการกระจายระบบปฏิบัติการที่ใช้ RHEL และทำงานได้ดีบนโฮสต์ Ubuntu/Debian ไวยากรณ์ที่ง่ายที่สุด (ไม่มีตัวเลือกเพิ่มเติม) ในการสร้างผู้ใช้ใหม่คือ:
$ sudo useradd <username>
ตัวอย่าง:
$ sudo useradd janedoe
คำสั่ง useradd รองรับหลายตัวเลือกที่สามารถระบุได้ในขณะที่สร้างผู้ใช้ โดยทั่วไปคือ ID ผู้ใช้ (UID), ID กลุ่ม (GID), เชลล์เริ่มต้นและโฮมไดเร็กทอรี ฯลฯ ตัวอย่างหนึ่งได้รับด้านล่าง:
$ sudo useradd -s /bin/sh -d /data/newhome -c "Jane Doe" -u 1005 janedoe
คุณสามารถตรวจสอบผู้ใช้ที่สร้างขึ้นใหม่โดยใช้คำสั่ง id:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $
กำลังแก้ไขผู้ใช้
เรามักจะต้องแก้ไขคุณสมบัติบางอย่างของผู้ใช้ที่มีอยู่ตามข้อกำหนดขององค์กร คำขอของผู้ใช้ หรือการย้ายระบบ คุณสมบัติเหล่านี้ส่วนใหญ่ปรับเปลี่ยนได้ง่าย แม้ว่าเราจำเป็นต้องตรวจสอบให้แน่ใจว่าจะส่งผลต่อสภาพแวดล้อมของผู้ใช้และการเข้าถึงไฟล์ที่ผู้ใช้เป็นเจ้าของหรือเข้าถึงอย่างไร
เชลล์เริ่มต้น
เชลล์เริ่มต้นคือ CLI เชลล์ที่สร้างขึ้นเมื่อผู้ใช้เปิดเซสชัน CLI ใหม่ทั้งภายในเครื่องหรือผ่าน SSH ระบบที่ทันสมัยส่วนใหญ่มี Bash ผู้ใช้เริ่มต้น แม้ว่าอาจแตกต่างกันไปตามการแจกจ่าย Linux หรือสภาพแวดล้อมของผู้ใช้ ในการแก้ไขเชลล์เริ่มต้นของผู้ใช้ ให้ใช้:
$ sudo usermod -s <shell> <username>
ตัวอย่าง:
$ getent passwd janedoe janedoe:x:1005:1005::/data/newhome:/bin/sh $ sudo usermod -s /bin/bash janedoe $ getent passwd janedoe janedoe:x:1005:1005::/data/newhome:/bin/bash $
ดังที่คุณเห็นในผลลัพธ์ด้านบน เชลล์ได้เปลี่ยนจาก /bin/sh เป็น /bin/bash สำหรับผู้ใช้ janedoe
หน้าแรก ไดเรกทอรี
เช่นเดียวกับเชลล์เริ่มต้น โฮมไดเร็กทอรีของผู้ใช้สามารถปรับเปลี่ยนไปยังตำแหน่งอื่นได้โดยใช้:
$ sudo usermod -d <new_directory_path> <username>
ในตัวอย่างด้านล่าง โฮมไดเร็กทอรีของผู้ใช้ของผู้ใช้ janedoe ถูกเปลี่ยนเป็น /data/janedoe:
$ getent passwd janedoe janedoe:x:1005:1005::/data/newhome:/bin/bash $ sudo usermod -d /data/janedoe janedoe $ getent passwd janedoe janedoe:x:1005:1005::/data/janedoe:/bin/bash $
ก่อนทำการเปลี่ยน ตรวจสอบให้แน่ใจว่าไดเร็กทอรีใหม่มีความเป็นเจ้าของและการอนุญาตที่ถูกต้อง มิฉะนั้น ผู้ใช้อาจประสบปัญหาระหว่างการเข้าสู่ระบบหรือทำงานในโฮมไดเร็กตอรี่ใหม่
ID ผู้ใช้
คุณสามารถเปลี่ยน ID ผู้ใช้ของผู้ใช้ที่มีอยู่โดยใช้:
$ sudo usermod -u <new_uid> <username>
ตัวอย่าง:
$ getent passwd janedoe janedoe:x:1005:1005::/data/janedoe:/bin/bash $ sudo usermod -u 1010 janedoe $ getent passwd janedoe janedoe:x:1010:1005::/data/janedoe:/bin/bash $
อีกครั้ง การเปลี่ยน UID จะเปลี่ยนวิธีที่ระบบไฟล์ Linux แมปความเป็นเจ้าของและการอนุญาตไปยังไฟล์หรือไดเร็กทอรี ตรวจสอบให้แน่ใจว่าโฮมไดเร็กทอรีของผู้ใช้ เนื้อหา และไฟล์อื่นๆ ทั้งหมดทุกที่ในระบบ ซึ่งเดิมของผู้ใช้เป็นเจ้าของ (ที่มี UID แบบเก่า) ถูกเปลี่ยนเป็น UID ที่แมป การไม่ทำเช่นนั้นอาจทำให้เกิดปัญหาในเซสชัน CLI และการเข้าถึงไฟล์โดยผู้ใช้
กลุ่มเริ่มต้น
กลุ่มเริ่มต้นมักจะเป็น ID กลุ่มเริ่มต้นของผู้ใช้ ซึ่งสร้างขึ้นระหว่างการสร้างผู้ใช้ เว้นแต่จะระบุ GID อื่นไว้ Linux อนุญาตให้คุณแก้ไขกลุ่มเริ่มต้นของผู้ใช้โดยใช้คำสั่ง usermod เช่นกัน นี่คือไวยากรณ์ที่จะใช้:
$ sudo usermod -g <new_gid or group_name> <username>
นี่คือตัวอย่างหนึ่ง:
$ getent passwd janedoe janedoe:x:1010:1005::/data/janedoe:/bin/bash $ sudo usermod -g 1001 janedoe $ getent passwd janedoe janedoe:x:1010:1001::/data/janedoe:/bin/bash $
อีกครั้ง ตรวจสอบให้แน่ใจว่าได้ตั้งค่า ID กลุ่มใหม่บนไดเร็กทอรีโฮมของผู้ใช้ เนื้อหา และไฟล์หรือไดเร็กทอรีอื่นๆ ทั้งหมดที่เกี่ยวข้องกับการโยกย้ายสิทธิ์การเป็นเจ้าของอย่างถูกต้อง
การเพิ่ม/ลบกลุ่ม
นอกจากกลุ่มเริ่มต้นแล้ว ผู้ใช้ใน Linux สามารถเป็นส่วนหนึ่งของกลุ่มรองได้ เราสามารถเพิ่มหรือลบกลุ่มเพิ่มเติมที่ผู้ใช้เป็นสมาชิกได้เสมอโดยใช้คำสั่ง usermod
$ sudo usermod -a -G <group_id or group_name> <username>
ตัวอย่าง:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $ sudo usermod -a -G docker janedoe $ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker) $
ในทำนองเดียวกัน หากต้องการลบผู้ใช้ออกจากกลุ่มรอง ให้ใช้คำสั่ง gpasswd ดังที่แสดงด้านล่าง:
$ sudo gpasswd -d <username> <groupname>
ตัวอย่าง:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker) $ sudo gpasswd -d janedoe docker Removing user janedoe from group docker $ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $
GECOS ความคิดเห็น
ฟิลด์ GECOS ใน /etc/passwd มีข้อมูลผู้ใช้หรือความคิดเห็น เราสามารถแก้ไขข้อมูลนี้สำหรับผู้ใช้ที่มีอยู่เป็น:
$ sudo usermod -c <comment> <username>
ตัวอย่าง:
$ getent passwd janedoe janedoe:x:1005:1005::/data/janedoe:/bin/bash $ sudo usermod -c "Jane Doe - System Admin" janedoe $ getent passwd janedoe janedoe:x:1005:1005:Jane Doe - System Admin:/data/janedoe:/bin/bash $
โปรดทราบว่าหากความคิดเห็นหรือรายละเอียดผู้ใช้ของคุณมีช่องว่าง ให้ใส่ฟิลด์นั้นในเครื่องหมายคำพูดตามตัวอย่างด้านบน
ชื่อล็อกอิน
ชื่อล็อกอินของผู้ใช้ยังสามารถเปลี่ยนแปลงได้โดยใช้คำสั่ง usermod โดยใช้แฟล็ก -l:
$ sudo usermod -l <new_username> <old_username>
ตัวอย่าง:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $ sudo usermod -l jane_doe janedoe $ id jane_doe uid=1005(jane_doe) gid=1005(janedoe) groups=1005(janedoe) $
อย่าลืมอัปเดตการอ้างอิงผู้ใช้ตามชื่อใหม่ทุกที่ที่ใช้ แม้แต่ในคำสั่งเช่น id ก็ควรระบุชื่อผู้ใช้ใหม่
การลบผู้ใช้
ผู้ใช้สามารถลบผู้ใช้ออกจาก Linux ได้โดยใช้คำสั่ง userdel
$ sudo userdel <username>
ตัวอย่าง:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $ sudo userdel janedoe $ id janedoe id: ‘janedoe’: no such user $
หากต้องการลบผู้ใช้พร้อมกับโฮมไดเร็กทอรีและสปูลเมล ให้เพิ่มแฟล็ก -r ด้วย
$ sudo userdel -r <username>
โดยเฉพาะสำหรับระบบที่ใช้ Ubuntu คุณยังสามารถใช้คำสั่งผู้ใช้ deluser เพื่อลบผู้ใช้:
$ sudo deluser <username>
ในทำนองเดียวกัน ในการลบโฮมไดเร็กทอรีและสปูลเมลด้วย ให้ใช้:
$ sudo deluser --remove-home <username>
สำหรับข้อมูลโดยละเอียดและตัวเลือกอื่นๆ ที่รองรับ โปรดดูที่หน้าหลักของคำสั่งต่างๆ โดยใช้:
$ man adduser $ man useradd $ man usermod $ man deluser $ man userdel
บทสรุป
บทความนี้แสดงแง่มุมต่างๆ ของการจัดการผู้ใช้ในระบบ Linux ซึ่งรวมถึงคำอธิบายเกี่ยวกับหมวดหมู่ต่างๆ ของผู้ใช้และวิธีเพิ่มและลบออก นอกจากนี้ยังครอบคลุมถึงตัวเลือกต่างๆ ที่ช่วยในการแก้ไขพารามิเตอร์ของผู้ใช้ที่มีอยู่ แม้ว่าจะไม่ครอบคลุมความเป็นไปได้ทั้งหมดที่ได้รับการสนับสนุนจากคำสั่งต่างๆ แต่ครอบคลุมงานการดูแลระบบทั่วไปจำนวนมากที่ผู้ดูแลระบบจะพบในการทำงานประจำวัน
คุณอาจสนใจอ่าน: จะลบไฟล์และไดเรกทอรีใน Linux ได้อย่างไร