จัดเตรียมสคริปต์ที่ทำการแก้ไขที่คุณต้องการตัวอย่างเช่นสคริปต์ที่เขียนไฟล์ที่ถูกต้องด้วย IP คงที่ (สิ่งที่จะใส่ในสคริปต์นี้อยู่นอกขอบเขตของคำถาม & คำตอบนี้) มาเรียกสคริปต์นี้/root/set_static_ip
กัน (1)
แก้ไข/etc/sudoers
(2) (ด้วยvisudo
ดีกว่าจะตรวจสอบสติมันเป็นเรื่องยากมากที่จะกู้คืนระบบด้วยไฟล์ sudoers ที่ไม่ถูกต้องแม้จะเป็นไปไม่ได้จากระยะไกล (3)) และเพิ่ม
user_name_to_authorize ALL=NOPASSWD: /root/set_static_ip
ตอนนี้ผู้ใช้สามารถใช้งานได้sudo /root/set_static_ip
โดยไม่ต้องมีรหัสผ่านถามและสคริปต์จะทำงานด้วยสิทธิ์ทั้งหมด; จะไม่อนุญาตให้ใช้คำสั่งอื่น
หากคุณต้องการให้ผู้ใช้เพียงแค่เปลี่ยนไฟล์ที่มีสิ่งที่พวกเขาต้องการเพียงแค่สคริปต์ที่อาจจะ (เรียกว่า/root/unsafe-overwrite-interface
)
#! /bin/bash -e
#
cp /tmp/temp-iface.txt /etc/network/interfaces
exit 0
... และคุณบอกให้ผู้ใช้แก้ไข/tmp/temp-iface.txt
แล้วเรียกใช้sudo /root/unsafe-overwrite-interface
--- เปิดใช้งานใน sudoers ตามที่ระบุไว้ข้างต้น หรือคุณสามารถเพิ่มผู้ใช้ไปยังรายการ ACL และให้สิทธิ์เขียนในไฟล์ที่ระบุ
แต่โปรดสังเกตว่าถ้าคุณไม่ตรวจสอบเนื้อหาของไฟล์เพื่อความปลอดภัยความเสียหายจะเกิดขึ้นไม่ว่าจะโดยเจตนาหรือไม่ตั้งใจ
เชิงอรรถ :
(1) สคริปต์นี้จะต้องปลอดภัยที่สุดเท่าที่จะทำได้ ตรวจสอบอินพุตและอื่น ๆ มันจะถูกดำเนินการด้วยสิทธิ์อย่างเต็มที่
(2) ในการติดตั้ง sudo ที่ทันสมัยคุณสามารถเพิ่มไฟล์ลงในไดเรคทอรี/etc/sudoers.d/
ซึ่งดีกว่า --- จะรอดจากการอัปเดต
(3) โดยปกติแล้วฉันจะเก็บเทอร์มินัลไว้พร้อมกับเปิดเซสชันรูท ( sudo -i
) เมื่อฉันแก้ไขกลไก sudoers และทำการสำรองข้อมูลให้สะดวก
/var/tmp/foo
=/etc/network/interfaces
? ไม่เคยเห็นสิ่งที่คุณพยายามจะพูดที่นั่นฉันค่อนข้างใหม่กับ Linux