พื้นหลัง
ทางเลือกของ OpenBSD sudo
คือdoas
แม้ว่ามันจะไม่ทำงานเหมือนกับ sudo และต้องการการกำหนดค่าบางอย่าง มันเป็นตัวย่อสำหรับ "ผู้ดูแลระบบแอปพลิเคชัน openbsd เฉพาะ" OpenBSD 5.8 ได้รับการปล่อยตัวในปี 2015 doas
เป็นครั้งแรกที่จะรวม มันถูกสร้างขึ้นโดย Ted Unangst หลังจากที่เขาไม่พอใจกับความซับซ้อนของ sudo และมีปัญหากับการกำหนดค่า sudo เริ่มต้น
doas
คำสั่งเป็นเรื่องง่ายโดยการออกแบบและไม่ได้มีคุณสมบัติขั้นสูงที่จำเป็นสำหรับโครงสร้างพื้นฐานดูแลระบบที่ซับซ้อน สำหรับคนส่วนใหญ่แล้วมันก็มากเกินพอ หากคุณต้องการsudo
ให้ติดตั้งพร้อมกับpkg_add sudo
รูท
การติดตั้ง
OpenBSD เวอร์ชั่น 5.8 ขึ้นไปdoas
ติดตั้งไว้ล่วงหน้าแล้ว
องค์ประกอบ
ในการให้สิทธิ์ผู้ใช้ในกลุ่มล้อเข้าถึงให้doas
เพิ่มสิ่งต่อไป/etc/doas.conf
นี้ คุณจะต้องเข้าใช้งานรูทเพื่อแก้ไขไฟล์นี้
permit :wheel
สิ่งนี้จะทำให้ผู้ใช้ทุกคนในกลุ่มได้รับอนุญาตให้ใช้คำสั่งในฐานะผู้ใช้ทุกคน
หากคุณต้องการให้ผู้ใช้สามารถป้อนรหัสผ่านของพวกเขาหนึ่งครั้งจากนั้นไม่จำเป็นต้องป้อนรหัสผ่านในขณะที่ใช้persist
ตัวเลือก นี่คือตัวอย่างที่ให้สิทธิ์กับกลุ่มล้อเท่านั้น:
permit persist :wheel
คุณอาจใช้nopass
ตัวเลือกแทนหากคุณไม่ต้องการให้พวกเขาป้อนรหัสผ่าน:
permit nopass :wheel
หากคุณต้องการให้ผู้ใช้ "mynewuser" มีสิทธิ์เป็นผู้ดูแลระบบคุณสามารถเพิ่มพวกเขาไปยังกลุ่มล้อได้โดยใช้usermod -G wheel mynewuser
เป็นรูทหรือเพิ่มบรรทัดลงในของคุณ/etc/doas.conf
เพื่อให้มีลักษณะดังต่อไปนี้:
permit nopass :wheel
permit nopass mynewuser
doas
ตัวอย่างนี้อนุมานว่าคุณไม่จำเป็นต้องให้ผู้ใช้ป้อนรหัสผ่านเมื่อใช้ หากคุณต้องการตั้งค่าเพื่อให้ mynewuser ได้รับอนุญาตให้รันคำสั่งในฐานะผู้ใช้ www เท่านั้นการกำหนดค่าจะเป็นดังนี้:
permit nopass :wheel
permit nopass mynewuser as www
หากคุณต้องการให้ mynewuser ใช้คำสั่ง "vim" กับ doas เท่านั้นให้ใช้การกำหนดค่าต่อไปนี้:
permit nopass :wheel
permit nopass mynewuser as www cmd vim
มีตัวเลือกการกำหนดค่าอื่น ๆ แต่ตัวเลือกที่ครอบคลุมที่นี่เป็นเรื่องธรรมดาที่สุด หากคุณต้องการอ่านเพิ่มเติมคุณสามารถใช้คำสั่งman doas.conf
เพื่ออ่าน manas doconf.conf (5)
ทดสอบไฟล์กำหนดค่า
ในการทดสอบไฟล์กำหนดค่าให้ใช้doas -C /etc/doas.conf
คำสั่ง หากคุณให้คำสั่งหลังจากนั้นเช่นdoas -C /etc/doas.conf vim
จะแจ้งให้คุณทราบว่าคุณมีสิทธิ์เรียกใช้คำสั่งหรือไม่โดยไม่พยายามเรียกใช้คำสั่ง
การใช้
ผู้ใช้อาจเรียกใช้คำสั่งecho "test"
ในฐานะรูทโดยใช้คำสั่ง: doas echo "test"
ผู้ใช้ที่มีสิทธิ์ใช้งาน doas เพื่อยกระดับตัวเองให้กับผู้ใช้ "www" อาจเรียกใช้คำสั่งvim /var/www/http/index.html
ในฐานะผู้ใช้ "www" โดยใช้คำสั่ง: doas -u www vim index.html
สิ่งนี้มีประโยชน์สำหรับผู้ที่จัดการเว็บเซิร์ฟเวอร์ แต่ไม่มีสิทธิ์ superuser เต็มรูปแบบ
ปฏิบัติที่ดีที่สุด
ขอแนะนำให้คุณใช้ใบอนุญาตแทนการปฏิเสธหากเป็นไปได้ หากคุณปฏิเสธผู้ใช้จากการใช้คำสั่งเฉพาะพวกเขาอาจสามารถหนีด้วยการใช้พา ธ สำรองหรือชื่อของคำสั่งนั้นหากมีอยู่ พวกเขายังสามารถคัดลอกคำสั่งที่สามารถเรียกใช้งานได้ไปยังโฮมไดเร็กตอรี่ของพวกเขาและจากนั้นเรียกใช้ไฟล์ปฏิบัติการนั้นเพื่อเอาชนะระบบการอนุญาตของคุณ
โดยทั่วไปแล้วจะเป็นการดีกว่าถ้าจะใช้ doas มากกว่าใช้ su เพราะไม่มีใครต้องแชร์รหัสผ่านรูท ไม่มีโอกาสที่คนอื่นจะเปลี่ยนลืมและล็อกทุกคนออกจากระบบหากทุกคนใช้รหัสผ่านของตนเองสำหรับการเข้าถึงรูท /var/log/secure
บันทึกจะถูกเก็บไว้ใน
เคล็ดลับและลูกเล่น
คุณสามาร���เก็บตัวแปรสภาพแวดล้อมทั้งหมดของคุณด้วย keepenv ซึ่งมีประโยชน์หากคุณตั้งค่าตัวแก้ไขเป็นอะไรและไม่ต้องการให้เปลี่ยนแปลงเมื่อคุณเป็นผู้ใช้รายอื่น นี่คือตัวอย่างของ mynewuser:
permit nopass keepenv mynewuser
บางครั้งมีสถานการณ์ที่การเขียนทับตัวแปรสภาพแวดล้อมทุกตัวสามารถทำลายสิ่งต่าง ๆ แต่ด้วย setenv คุณสามารถเลือกและเลือกสิ่งที่จะดำเนินการได้ นี่คือตัวอย่างที่จะทำให้ตัวแก้ไขของคุณตั้งค่าเป็นสิ่งที่คุณต้องการใช้กับ git และสิ่งอื่น ๆ
permit nopass setenv { VISUAL EDITOR } mynewuser
นอกจากนี้คุณยังสามารถใช้ setenv เพื่อลบตัวแปรสภาพแวดล้อม (โดยใส่เครื่องหมายขี��กลางหน้าแต่ละอันที่คุณต้องการลบ) หรือตั้งค่าเป็นสิ่งเฉพาะที่มีเครื่องหมายเท่ากับ ตัวอย่างเช่นหากคุณต้องการให้ลบตัวแปรสภาพแวดล้อม VISUAL และตั้งค่า EDITOR เป็นกลุ่มคุณจะใช้บรรทัดการกำหนดค่านี้:
permit nopass setenv { -VISUAL EDITOR=vim } mynewuser
หากdoas
จำรหัสผ่านของคุณได้คุณสามารถทำได้doas -L
เพื่อให้ลืมรหัสผ่าน