ใน Filesystem Hierarchy Standard ที่ใช้โดยระบบปฏิบัติการ Linux ไฟล์และไดเรกทอรีทั้งหมดปรากฏภายใต้ไดเรกทอรีรูท "/" แต่การเข้าถึงมักถูกจำกัดเพื่อเหตุผลด้านความปลอดภัย ในการแจกแจง Linux เช่น Debian คุณสามารถได้รับการเข้าถึงเต็มรูปแบบจาก SSH โดยใช้คำสั่ง "sudo" บทช่วยสอนนี้อธิบายวิธีเพิ่มผู้ใช้เข้ากลุ่ม Sudoers เพื่อให้ผู้ใช้นั้นได้รับอนุญาตให้รันคำสั่ง sudo
การล็อกอินเป็น superuser หรือ root user ช่วยให้คุณทำการแก้ไขระดับระบบได้ "sudo" ยังสามารถใช้ล็อกอินเป็นผู้ใช้อื่นได้ – ซึ่งบางครั้งจำเป็นสำหรับผู้ดูแลระบบและช่างเทคนิค
รายการผู้ใช้ (และกลุ่มผู้ใช้) ที่ได้รับอนุญาตให้รันคำสั่งต่างๆ ถูกเก็บในไฟล์ "/etc/sudoers" ดังนั้น ผู้ดูแลระบบจึงต้องรู้วิธีให้สิทธิ์ล็อกอิน root แก่ผู้ใช้ใหม่โดยเพิ่มชื่อของพวกเขาลงในไฟล์นี้ มีสองวิธีในการทำ หนึ่งคือแก้ไขไฟล์ด้วยตนเอง เมื่อคุณทำเช่นนี้ คุณยังสามารถกำหนดชุดย่อยของสิทธิ์ที่พวกเขาได้รับอนุญาตให้รันเมื่อใช้การล็อกอิน root ของพวกเขา วิธีที่รวดเร็วกว่าคือเพิ่มพวกเขาเข้าไปในกลุ่มผู้ใช้ "sudo" จากบรรทัดคำสั่ง
เพิ่มผู้ใช้เข้ากลุ่ม sudo
โดยธรรมชาติ คุณจะต้องล็อกอินเป็น superuser ก่อนที่จะเพิ่มคนอื่นเข้ากลุ่ม sudo เพื่อล็อกอินเข้าระบบเซิร์ฟเวอร์ Debian เป็น root user –
ssh admin@wsxdn.com
สมมติว่าผู้ใช้ที่คุณต้องการเพิ่มมีอยู่ในระบบแล้ว คุณสามารถรันคำสั่งด้านล่างได้:
usermod -aG sudo username
เพื่อตรวจสอบอีกครั้งว่าคุณเพิ่มเข้าไปในกลุ่มสำเร็จแล้ว ให้พิมพ์คำสั่งต่อไปนี้และใส่รหัสผ่านของผู้ใช้:
sudo whoami
หากพวกเขาได้รับสิทธิ์ sudo จริง เอาต์พุทจะพิมพ์ "root" หากไม่มี หรือคุณใส่รายละเอียดผิด คุณจะได้รับข้อความแจ้งเตือนว่า "user is not in the sudoers file"
เพื่อสร้างผู้ใช้ใหม่โดยสมบูรณ์ คุณสามารถใช้คำสั่ง Linux "adduser":
adduser newusername
จากนั้นคุณจะถูกถามให้ใส่รายละเอียดเพิ่มเติมบางอย่างเกี่ยวกับพวกเขา รวมถึงกำหนดรหัสผ่านให้พวกเขา เมื่อคุณเสร็จสิ้น ข้อมูลผู้ใช้ใหม่จะถูกเขียนลงในไฟล์ sudoers
หากคุณต้องการกำหนดผู้ใช้ใหม่เข้ากลุ่มผู้ใช้ sudo จากบรรทัดคำสั่ง คุณสามารถใช้ "usermod" หรือ "gpasswd" ตัวอย่างเช่น –
usermod -aG sudo newusername
เพิ่มผู้ใช้ลงในไฟล์ sudoers ด้วยตนเอง
นี่คือตัวเลือกที่ดีกว่าเมื่อคุณต้องการตั้งค่านโยบายความปลอดภัยแบบกำหนดเองสำหรับ superuser ใหม่ คุณสามารถแก้ไขไฟล์ sudoers โดยตรง หรือสร้างไฟล์กำหนดค่าใหม่ภายในไดเรกทอรี /etc/sudoers.d ไฟล์ใดๆ ที่อยู่ในไดเรกทอรีนั้น จะถูกต่อกันอย่างมีประสิทธิภาพกับไฟล์ sudoers ในรันไทม์
การใช้ visudo:
เพื่อแก้ไขไฟล์ sudoers ต้องใช้คำสั่ง "visudo" เสมอ การเรียกใช้ editor ผ่าน visudo รับประกันว่า visudo จะตรวจสอบไวยากรณ์ไฟล์อย่างระมัดระวังก่อนบันทึก หากคุณแก้ไขไฟล์โดยไม่ใช้ visudo มันจะไม่ทำ – และนี่คือไฟล์ระบบสำคัญ! คุณยังสามารถใช้ visudo เพื่อแก้ไขไฟล์ที่คุณบันทึกลงใน /etc/sudoers.d ได้ แต่คุณอาจต้องใช้ตัวเลือก –f เพื่อระบุตำแหน่งของไฟล์ที่คุณต้องการแก้ไข
Editor จริงที่ visudo ใช้ ถูกระบุโดยตัวแปรสภาพแวดล้อม EDITOR โดยค่าเริ่มต้นถูกตั้งเป็น vim หากคุณต้องการเปลี่ยน editor ค่าเริ่มต้นเป็นตัวเลือกอื่น เช่น nano คุณสามารถแทนที่ค่าเริ่มต้นได้เช่นนี้ –
EDITOR=nano visudo
การกำหนดสิทธิ์:
ที่ใดที่หนึ่งในไฟล์ sudoers คุณอาจเห็นบรรทัดแบบนี้ –
root ALL=(ALL) ALL
นี่สาธิตไวยากรณ์ที่คุณใช้เพื่อกำหนดสิทธิ์ของผู้ใช้ ในกรณีนี้ ความหมายคือผู้ใช้ root สามารถรันจาก ALL (ใดๆ) เทอร์มินัล ทำหน้าที่เป็น ALL (ใดๆ) ผู้ใช้ และรัน ALL (ใดๆ) คำสั่ง
เพื่อให้ง่ายต่อการนำกลุ่มสิทธิ์ไปใช้กับชื่อในไฟล์ sudoers มักจะมีการกำหนด aliases คุณสามารถสร้าง aliases สำหรับกลุ่มผู้ใช้ ช่วงเทอร์มินัล หรือการเข้าถึงกลุ่มคำสั่ง ตัวอย่างเช่น ที่ด้านบนของไฟล์ sudoers ของคุณ คุณสามารถพิมพ์อย่างเช่นนี้;
User_Alias OPERATORS = amy, ben, chris Runas_Alias OP = root, operator Host_Alias NETWORK = 192.168.0.0/255.255.255.0 Cmnd_Alias PRINTING_CMDS = /usr/sbin/lpc, /usr/sbin/lprm
คุณสามารถเรียกใช้ทางลัดเหล่านี้เมื่อให้สิทธิ์การเข้าถึงผู้ใช้ ตัวอย่างเช่น;
ben ALL = PRINTING_CMDS
นี่อนุญาตให้ ben ใช้เทอร์มินัลใดๆ ภายในช่วงที่กำหนดของที่อยู่ IP และรันคำสั่งพิมพ์ lpc และ lprm (ซึ่งอยู่ใน /usr/sbin/)
สิทธิ์ root ใน Debian มีพลังมาก นั่นหมายความว่ามีโอกาสมากที่จะทำลายการควบคุมการเข้าถึง ทำลายเซิร์ฟเวอร์ หรือทำลายข้อมูล เพราะเหตุผลนั้น หลีกเลี่ยงการให้ทุกผู้ใช้สิทธิ์ root เต็มรูปแบบ และหลีกเลี่ยงนิสัยการล็อกอินเป็น superuser เมื่อคุณไม่จำเป็น