สร้างผู้ใช้ใหม่และให้สิทธิ์ sudo บน Linux
เซิร์ฟเวอร์ใหม่มักให้เข้าสู่ระบบด้วยบัญชี root ซึ่งมีสิทธิ์ทำได้ทุกอย่าง พิมพ์คำสั่งผิดเพียงครั้งเดียวก็อาจลบข้อมูลทั้งระบบได้ และหาก root ถูกเจาะ ผู้โจมตีก็ได้สิทธิ์สูงสุดทันที แนวปฏิบัติที่ดีคือสร้างผู้ใช้ส่วนตัวสำหรับแต่ละคนที่ดูแลเซิร์ฟเวอร์ และให้ยกสิทธิ์ผ่าน sudo เฉพาะตอนที่จำเป็น ซึ่งยังช่วยให้ย้อนดูได้ว่าใครสั่งอะไรจาก Log
คู่มือนี้ใช้ได้กับ Ubuntu 22.04/24.04 และ AlmaLinux/Rocky Linux 8-9 สองกลุ่มนี้ต่างกันที่ชื่อกลุ่มผู้ใช้ที่ได้สิทธิ์ sudo คือ sudo บน Ubuntu และ wheel บน AlmaLinux/Rocky
สิ่งที่ต้องเตรียม
- เข้าสู่ระบบด้วย
rootหรือผู้ใช้ที่มีสิทธิ์ sudo อยู่แล้ว - ชื่อผู้ใช้ใหม่ ใช้ตัวพิมพ์เล็ก ตัวเลข และ
-หรือ_ไม่มีช่องว่าง ตัวอย่างในคู่มือนี้ใช้somchai - ถ้าจะให้ผู้ใช้ใหม่เข้าด้วย SSH Key ให้เตรียม Public Key ของผู้ใช้คนนั้นไว้ (ดู ตั้งค่า SSH Key)
คำสั่งในคู่มือนี้เขียนแบบมี sudo นำหน้า ถ้าคุณเข้าสู่ระบบเป็น root อยู่แล้ว จะพิมพ์ sudo หรือไม่ก็ได้
ขั้นตอนที่ 1: สร้างผู้ใช้ใหม่
Ubuntu
sudo adduser somchai
คำสั่งนี้สร้างผู้ใช้ สร้างโฮมไดเรกทอรี /home/somchai แล้วถามรหัสผ่านสองครั้ง จากนั้นถามข้อมูลเพิ่มเติม (Full Name, Room Number และอื่น ๆ) กด Enter ข้ามได้ทั้งหมด และตอบ Y เพื่อยืนยัน
AlmaLinux / Rocky Linux
บนระบบกลุ่มนี้ adduser เป็นชื่อเดียวกับ useradd ซึ่งไม่ถามรหัสผ่าน จึงต้องตั้งรหัสผ่านแยก
sudo useradd -m somchai
sudo passwd somchai
เมื่อสำเร็จ passwd จะแสดง passwd: all authentication tokens updated successfully.
ใช้รหัสผ่านที่ยาวและไม่ซ้ำกับที่อื่น แม้จะเข้า SSH ด้วย Key ก็ตาม เพราะ sudo จะถามรหัสผ่านนี้ทุกครั้งที่ยกสิทธิ์
ขั้นตอนที่ 2: เพิ่มผู้ใช้เข้ากลุ่ม sudo หรือ wheel
# Ubuntu
sudo usermod -aG sudo somchai
# AlmaLinux / Rocky Linux
sudo usermod -aG wheel somchai
ตัวเลือก -a สำคัญมาก หมายถึงเพิ่มเข้ากลุ่มโดยไม่ลบกลุ่มเดิม ถ้าลืม -a ผู้ใช้จะถูกถอดออกจากกลุ่มอื่นทั้งหมด ตรวจผลด้วย
groups somchai
ผลลัพธ์บน Ubuntu ควรเป็น somchai : somchai sudo และบน AlmaLinux/Rocky เป็น somchai : somchai wheel
ขั้นตอนที่ 3: ทดสอบสิทธิ์ sudo
สลับไปเป็นผู้ใช้ใหม่แล้วลองคำสั่งที่ต้องใช้สิทธิ์ root
su - somchai
sudo whoami
ระบบจะถาม [sudo] password for somchai: ให้ใส่รหัสผ่านของ somchai (ไม่ใช่ของ root) ผลลัพธ์ต้องเป็น root จากนั้นพิมพ์ exit เพื่อกลับเป็นผู้ใช้เดิม
ขั้นตอนที่ 4: ให้ผู้ใช้ใหม่เข้า SSH ด้วย Key
ถ้าเซิร์ฟเวอร์ปิดการเข้าด้วยรหัสผ่านไว้แล้ว ผู้ใช้ใหม่จะเข้า SSH ไม่ได้จนกว่าจะมี Public Key ของตัวเอง ให้สร้างไฟล์ authorized_keys แล้ววาง Public Key ของผู้ใช้คนนั้นลงไป (หนึ่ง Key ต่อหนึ่งบรรทัด)
sudo mkdir -p /home/somchai/.ssh
sudo nano /home/somchai/.ssh/authorized_keys
sudo chown -R somchai:somchai /home/somchai/.ssh
sudo chmod 700 /home/somchai/.ssh
sudo chmod 600 /home/somchai/.ssh/authorized_keys
ถ้าผู้ใช้ใหม่คือตัวคุณเอง และต้องการใช้ Key เดียวกับที่ใช้กับ root อยู่ ให้คัดลอกไฟล์แทนการวางเอง
sudo mkdir -p /home/somchai/.ssh
sudo cp /root/.ssh/authorized_keys /home/somchai/.ssh/
sudo chown -R somchai:somchai /home/somchai/.ssh
sudo chmod 700 /home/somchai/.ssh
sudo chmod 600 /home/somchai/.ssh/authorized_keys
บน AlmaLinux/Rocky ที่เปิด SELinux ให้รันเพิ่ม sudo restorecon -Rv /home/somchai/.ssh เพื่อให้ Context ของไฟล์ถูกต้อง
ตรวจสอบผลลัพธ์
เปิดหน้าต่างใหม่บนเครื่องของคุณ (อย่าปิด Session เดิม) แล้วเข้าด้วยผู้ใช้ใหม่
ssh [email protected]
sudo -v
sudo -l
sudo -v ถามรหัสผ่านแล้วไม่แสดงอะไรหากมีสิทธิ์ ส่วน sudo -l แสดงสิทธิ์ที่ได้รับ ควรมีบรรทัด (ALL : ALL) ALL บน Ubuntu หรือ (ALL) ALL บน AlmaLinux/Rocky ถ้าทั้งสองอย่างผ่าน ผู้ใช้ใหม่พร้อมใช้งานแล้ว
ขั้นตอนเพิ่มเติม: ปิดการเข้า SSH ด้วย root
เมื่อยืนยันแล้วว่าผู้ใช้ใหม่เข้า SSH และใช้ sudo ได้ ควรปิดไม่ให้ root เข้าทาง SSH โดยสร้างหรือแก้ไฟล์ /etc/ssh/sshd_config.d/00-hardening.conf ให้มีบรรทัดด้านล่าง (ถ้าไฟล์มีบรรทัด PermitRootLogin อยู่แล้ว ให้แก้บรรทัดเดิม อย่าเพิ่มซ้ำ)
PermitRootLogin no
แล้วตรวจไวยากรณ์และโหลดค่าใหม่
sudo sshd -t
# Ubuntu
sudo systemctl reload ssh
# AlmaLinux / Rocky Linux
sudo systemctl reload sshd
ทดสอบจากหน้าต่างใหม่ว่า ssh [email protected] ถูกปฏิเสธ และ ssh [email protected] ยังเข้าได้ ก่อนปิด Session เดิม ถ้าไฟล์ sshd_config หลักของ AlmaLinux/Rocky 8 ไม่มีบรรทัด Include /etc/ssh/sshd_config.d/*.conf ให้แก้ PermitRootLogin ในไฟล์หลักแทน
ขั้นตอนเพิ่มเติม: ให้สิทธิ์ sudo แบบเจาะจง
บางกรณีต้องการให้ผู้ใช้ เช่น บัญชีสำหรับ Deploy สั่งได้เฉพาะบางคำสั่งโดยไม่ต้องใส่รหัสผ่าน ให้สร้างไฟล์ใน /etc/sudoers.d/ ด้วย visudo เสมอ เพราะ visudo ตรวจไวยากรณ์ก่อนบันทึก
sudo visudo -f /etc/sudoers.d/deploy
ตัวอย่างให้ผู้ใช้ deploy รีโหลด Nginx ได้โดยไม่ถามรหัสผ่าน
deploy ALL=(root) NOPASSWD: /usr/bin/systemctl reload nginx
ระบุ Path เต็มของคำสั่งเสมอ ดูได้จาก command -v systemctl และหลีกเลี่ยงการให้ NOPASSWD: ALL กับบัญชีที่ใช้งานประจำ
ปัญหาที่พบบ่อย
somchai is not in the sudoers file
ผู้ใช้ยังไม่อยู่ในกลุ่ม sudo หรือ wheel หรือเพิ่มกลุ่มแล้วแต่ยังใช้ Session เดิมอยู่ สมาชิกภาพกลุ่มมีผลเมื่อเข้าสู่ระบบใหม่เท่านั้น ให้ออกจากระบบแล้วเข้าใหม่ หรือใช้ su - somchai ใหม่อีกครั้ง บน AlmaLinux/Rocky ให้ตรวจว่าบรรทัด %wheel ALL=(ALL) ALL ใน /etc/sudoers ไม่ได้ถูกใส่ # ไว้
แก้ sudoers ผิดแล้ว sudo ใช้ไม่ได้ทั้งระบบ
ถ้ายังมี Session root เปิดอยู่ ให้แก้ไฟล์ที่ผิดทันที ถ้าไม่มี ให้ลองใช้ pkexec visudo (ใช้ได้เมื่อติดตั้ง polkit ไว้) หรือเข้าผ่าน Console Server ผ่าน Web UI ในฐานะ root แล้วรัน visudo -c เพื่อดูว่าไฟล์ใดผิด นี่คือเหตุผลที่ควรแก้ด้วย visudo เท่านั้น
ผู้ใช้ใหม่เข้า SSH ไม่ได้ ขึ้น Permission denied (publickey)
ตรวจเจ้าของและสิทธิ์ของ /home/somchai/.ssh ด้วย ls -la /home/somchai/.ssh เจ้าของต้องเป็น somchai สิทธิ์ต้องเป็น 700 และ 600 ตามลำดับ และตรวจว่า Public Key อยู่ในบรรทัดเดียว ไม่ถูกตัดขึ้นบรรทัดใหม่ระหว่างการคัดลอก
หากต้องการความช่วยเหลือในการจัดการผู้ใช้หรือสิทธิ์บนเซิร์ฟเวอร์ ติดต่อทีมซัพพอร์ต THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
Related Posts
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี


