Doas เป็นโปรแกรมยกระดับสิทธิ์ที่คล้ายกับ sudo ออกแบบมาให้มีน้ำหนักเบาและเรียบง่ายที่สุด เป็นโปรแกรมยกระดับสิทธิ์เริ่มต้นสำหรับ OpenBSD แต่ยังใช้ได้กับระบบปฏิบัติการที่คล้าย UNIX อื่นๆ ผ่านโปรแกรม OpenDoas
ปัญหาเกี่ยวกับ sudo
ในช่วงหลายปีที่ผ่านมา sudo ได้กลายเป็นโปรแกรมยกระดับสิทธิ์โดยพฤตินัยในโลก UNIX อย่างไรก็ตาม นี่หมายความว่า sudo ต้องตอบสนองทุกกรณีการใช้งานสำหรับทุกคนที่ใช้เครื่องที่เหมือนยูนิกซ์ แนวทางในการพัฒนาโปรแกรมทำให้ sudo เป็นโปรแกรมเทอะทะที่เข้าใจยากและใช้งานยาก
ตัวอย่างเช่น หากต้องการแก้ไขพฤติกรรมของ sudo คุณต้องเรียกใช้คำสั่งชื่อ visudo
. นี่เป็นโปรแกรมตัวโหลดพิเศษที่เปิดไฟล์ “/etc/sudoers” ใน “เซฟโหมด”
Visudo ทำสองสามสิ่ง:ตรวจสอบข้อผิดพลาดทางไวยากรณ์ในไฟล์ “/etc/sudoers” เป็นประจำ และล็อคไฟล์ “/etc/sudoers” เพื่อไม่ให้ผู้อื่นแก้ไขไฟล์ได้นอกจากผู้ใช้ปัจจุบัน สิ่งเหล่านี้อาจดูเหมือนมีประโยชน์บนพื้นผิว แต่ visudo เป็นอาการของความซับซ้อนที่เพิ่มขึ้นของ sudo
ซึ่งหมายความว่าไวยากรณ์ของไฟล์ sudoers มีความซับซ้อนมากพอจนจำเป็นต้องตรวจสอบข้อผิดพลาดทางไวยากรณ์ที่อาจเกิดขึ้น นอกจากนี้ยังหมายความว่า sudo ต้องรองรับทั้งสภาพแวดล้อมแบบผู้ใช้คนเดียวและผู้ใช้หลายคน ดังนั้นจึงจำเป็นต้องล็อกไฟล์ sudoers สำหรับผู้ใช้ปัจจุบัน
Sudo เป็นโปรแกรมที่ยอดเยี่ยม ไวยากรณ์การกำหนดค่าที่ซับซ้อนสามารถสร้างระบบการอนุญาตที่ซับซ้อนซึ่งอาจเป็นประโยชน์สำหรับผู้ดูแลระบบที่มีประสบการณ์
อย่างไรก็ตาม สำหรับผู้ใช้ส่วนใหญ่ เราใช้ sudo เพื่อรันรูทเชลล์เพื่อติดตั้งโปรแกรมและปรับแต่งระบบของเราเท่านั้น ความซับซ้อนของ Sudo ดูเหมือนจะเป็นอุปสรรคมากกว่าที่จะเป็นคุณลักษณะในกรณีเหล่านั้น
เหตุใดจึงต้องใช้ doas
ความตั้งใจของ Doas คือการแก้ความซับซ้อนของ sudo ได้รับการพัฒนาสำหรับ OpenBSD และถูกย้ายไปยังระบบลีนุกซ์แทบทุกระบบอย่างรวดเร็ว โดยมีจุดมุ่งหมายเพื่อให้ใช้งานง่ายและรวดเร็ว แต่ยังง่ายต่อการบำรุงรักษาและปลอดภัย
ไวยากรณ์ของ doas ก็แตกต่างจาก sudo การกำหนดค่าจะคล้ายกับการเขียนในภาษาอังกฤษธรรมดา ตัวอย่างเช่น ใน sudo ไวยากรณ์ที่อนุญาตให้ผู้ใช้วงล้อดำเนินการในฐานะรูทโดยไม่ต้องใช้รหัสผ่านคือ:
%wheel ALL=(ALL) NOPASSWD: ALL
ใน doas ไวยากรณ์นั้นเข้าใจง่ายกว่ามาก:
permit nopass :wheel as root
นอกจากนี้ doas ไม่ต้องการโปรแกรมตัวโหลดพิเศษเช่น visudo เพื่อแก้ไขการกำหนดค่า ผู้ใช้จำเป็นต้องแก้ไขไฟล์การกำหนดค่าด้วยโปรแกรมแก้ไขข้อความเท่านั้น และตราบใดที่ผู้ใช้มีสิทธิ์เพียงพอ พวกเขาจะสามารถทำการเปลี่ยนแปลงการกำหนดค่าได้
ทำให้ doas เข้าใจและเข้าใจได้ง่ายขึ้น แนวทางที่เรียบง่ายและเรียบง่ายในการสร้างผู้ใช้และกลุ่มที่ได้รับสิทธิพิเศษทำให้กระบวนการนี้โปร่งใสและปราศจากข้อผิดพลาดสำหรับผู้ใช้
วิธีตั้งค่า doas ด้วย sudo
หากคุณกำลังใช้ระบบ Linux มีโอกาสดีที่คุณจะใช้ sudo เป็นโปรแกรมยกระดับสิทธิ์ของคุณอยู่แล้ว และทำให้การติดตั้ง doas ค่อนข้างตรงไปตรงมา
ใน Debian และ Ubuntu คุณสามารถติดตั้ง doas โดยใช้ apt:
sudo apt install doas
ใน Arch Linux คุณสามารถใช้ pacman:
sudo pacman -Syu opendoas
ด้วย Fedora คุณสามารถใช้ dnf:
sudo dnf install opendoas
สำหรับ Void Linux คุณสามารถใช้ xbps:
sudo xbps-install opendoas
ในกรณีของฉัน ฉันกำลังติดตั้ง doas บน Void Linux ดังนั้นฉันจึงใช้ XBPS
ไฟล์การกำหนดค่า doas
เมื่อติดตั้ง doas แล้ว คุณจะแก้ไขไฟล์ “/etc/doas.conf” ได้โดยเปลี่ยนเป็นผู้ใช้รูทโดยใช้ su
su --command="nano /etc/doas.conf"
Su จะถามรหัสผ่านรูทของคุณ และหลังจากนั้นจะเปิดหรือสร้างไฟล์การกำหนดค่าโดยใช้ nano
เมื่อเสร็จแล้ว คุณอาจสังเกตเห็นว่า “doas.conf” ว่างเปล่า สิ่งนี้แตกต่างอย่างสิ้นเชิงเมื่อเทียบกับ visudo แต่ดังที่เราได้กล่าวไปแล้วข้างต้น การกำหนดค่า doas นั้นค่อนข้างไม่สำคัญ
รูปแบบการกำหนดค่า
ไวยากรณ์สำหรับ doas.conf มีดังนี้:
permit|deny [options] identity [as target] [cmd command [args ...]]
- อนุญาต และ ปฏิเสธ จะกำหนดว่า doas จะอนุญาตให้ใช้กฎหรือไม่
- ตัวเลือก เป็นการกำหนดค่าเพิ่มเติมสำหรับ doas ตัวเลือกที่มีประโยชน์ที่สุดสำหรับผู้ใช้ทั่วไปคือ คงอยู่ และ ไม่ผ่าน .
- ตัวตน คือผู้ใช้หรือกลุ่มที่กำลังดำเนินการ doas
- ในฐานะ เป้าหมาย คือผู้ใช้ที่ “ตัวตน” สามารถหรือไม่สามารถเรียกใช้ได้
- cmd เป็นคำสั่งที่ “Identity” สามารถหรือไม่สามารถเรียกใช้ “เป็นเป้าหมาย” ค่าเริ่มต้นคือโปรแกรมทั้งหมด แต่คุณสามารถระบุโปรแกรมเฉพาะในฟิลด์นี้ได้
- อาร์กิวเมนต์ เป็นอาร์กิวเมนต์เฉพาะสำหรับคำสั่งที่คุณระบุ
ตัวอย่างเช่น การเขียนสิ่งต่อไปนี้จะทำให้ผู้ใช้ในกลุ่มล้อดำเนินการคำสั่งในฐานะรูทได้ รูทเชลล์จะยังคงอยู่จนกว่าหน้าต่างจะปิด
permit persist :wheel as root
คุณยังสร้างกฎที่กำหนดเป้าหมายผู้ใช้เฉพาะสำหรับคำสั่งเฉพาะได้อีกด้วย ตัวอย่างเช่น คุณสามารถใช้กฎต่อไปนี้เพื่ออนุญาตให้ผู้ใช้ "bob" เรียกใช้โปรแกรม "apt" เป็น root โดยไม่ต้องถามรหัสผ่านใดๆ
permit nopass bob as root cmd apt
ในกรณีของฉัน ฉันต้องการให้กลุ่ม “วงล้อ” ทำงานเป็นรูทโดยไม่ต้องใช้รหัสผ่าน ฉันไม่ต้องการให้ผู้ใช้ aga ซึ่งเป็นส่วนหนึ่งของกลุ่ม wheel รันคำสั่งใด ๆ ในฐานะ root ดังนั้นฉันจะเขียนสิ่งต่อไปนี้ใน “/etc/doas.conf” ของฉัน:
permit nopass :wheel as root deny aga as root
หลังการกำหนดค่า
หลังจากนั้น คุณต้องรันคำสั่งสองสามคำสั่งเพื่อให้แน่ใจว่า doas ทำงานตามที่ตั้งใจไว้ ขั้นแรก คุณจะต้องตั้งค่าเจ้าของ doas.conf เป็นรูทอย่างถูกต้อง:
sudo chown -c root:root /etc/doas.conf
คุณจะต้องตั้งค่าการอนุญาตไฟล์ของไฟล์การกำหนดค่าเป็น 0644 เพื่อให้แน่ใจว่าไฟล์จะสามารถเข้าถึงได้โดยผู้ใช้รูทเท่านั้น
sudo chmod -c 0644 /etc/doas.conf
สุดท้าย คุณจะต้องตรวจสอบ doas เองเพื่อหาข้อผิดพลาดทางไวยากรณ์ภายในการกำหนดค่า ในการดำเนินการนี้ ให้เรียกใช้คำสั่งต่อไปนี้:
sudo doas -C /etc/doas.conf && echo "OK" || echo "ERROR"
ยินดีด้วย! คุณได้ติดตั้งและกำหนดค่า doas สำหรับระบบของคุณสำเร็จแล้ว ตอนนี้คุณสามารถเริ่มใช้ doas แทน sudo หรือปรับแต่งไฟล์ doas.conf ตามที่คุณต้องการ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการดูแลระบบใน Linux คุณสามารถอ่านบทความนี้
คำถามที่พบบ่อย
1. การกำหนดค่าของฉันดูเหมือนจะไม่ทำงาน ฉันได้เพิ่มกฎสำหรับผู้ใช้เฉพาะและกฎทั่วไป แต่กฎสำหรับผู้ใช้ดูเหมือนจะไม่ทำงาน
ไฟล์คอนฟิกูเรชัน doas ทำงานตั้งแต่กฎทั่วไปไปจนถึงกฎเกณฑ์ที่เฉพาะเจาะจงที่สุด เพื่อให้การกำหนดค่าของคุณทำงาน คุณต้องระบุกฎที่ใช้กับผู้ใช้ทั้งหมดก่อน จากนั้นคุณสามารถระบุกฎที่กำหนดเป้าหมายผู้ใช้รายเดียวภายใต้กฎนั้นได้
2. เป็นไปได้ไหมที่จะเก็บ sudo และ doas ไว้ในระบบเดียวกัน?
ใช่! Doas และ sudo เป็นสองโปรแกรมที่แตกต่างกัน พวกเขาไม่ขัดแย้งกันเอง และเป็นการดีที่จะปล่อยให้ sudo อยู่ในระบบและใช้ doas
3. เป็นไปได้ไหมที่จะได้รับรูทเชลล์โดยใช้ doas?
ใช่ หากคุณได้กำหนดค่าไฟล์การกำหนดค่าของคุณอย่างถูกต้องแล้ว คุณสามารถเริ่มต้นรูทเชลล์ได้ด้วยการเรียกใช้ doas -s
.