ฉันมีสถาปัตยกรรมที่ใช้เนมสเปซเครือข่าย (netns) ฉันต้องการอนุญาตให้ผู้ใช้ทั่วไปทำการดำเนินการบางอย่างในเน็ตเหล่านี้
ฉันสามารถเขียนสคริปต์netns-exec.shซึ่งได้รับแรงบันดาลใจจากโพสต์นี้ดำเนินการโดยsudoมี:
ip netns exec $1 su $USER -c "$2"
และเพิ่มลงในไฟล์ sudoer ของฉัน:
user ALL=(ALL) /path/to/netns-exec.sh
แต่ฉันคิดว่ามันน่าเกลียดมากจนฉันสามารถฝันร้ายได้โดยสิ้นเชิง มีวิธีแก้ปัญหาที่ดีกว่าเพื่อให้ผู้ใช้ทั่วไปสามารถใช้เนมสเปซหรือไม่ เป็นไปได้ไหมที่จะนำผู้ใช้ไปสู่กลุ่มที่มีประโยชน์บางกลุ่ม? ฉันค้นหามัน แต่ไม่พบอะไรเลย
sudoสิ่งsuที่ทำให้ฉันรำคาญไม่ใช่สคริปต์ อย่างไรก็ตามฉันจะเขียนสคริปต์เพื่อห่อสิ่งนั้น มันทำให้สวิตช์ของผู้ใช้ 2 อันมันน่าเกลียดจริง ๆ คุณไม่คิดเหรอ?
sudoมีตัวแปรเฉพาะ$SUDO_USERซึ่งปลอดภัยกว่า แต่นั่นก็ยังน่าเกลียด
Cmd_Alias CMD_NETNS = ip netns exec [regexp matching your namespace] su [regexp matching allowed used] -c [regexp matching allowed namespace command]ในไฟล์ sudoers ของคุณแล้วสร้างกลุ่มที่คุณใส่ผู้ใช้ที่ได้รับอนุญาตของคุณและเชื่อมโยงกลุ่มนี้กับนามแฝงคำสั่งนี้