จำกัด ผู้ใช้ให้ดำเนินการคำสั่งที่เลือก (Linux)


14

ฉันจะ จำกัด ผู้ใช้ของฉันให้ดำเนินการคำสั่งที่เลือกเท่านั้น ฉันมีผู้ใช้ Tomc ในกลุ่ม Tomc ฉันต้องการให้ผู้ใช้รายนี้เป็นผู้ใช้ sudo จากนั้นจึง จำกัด การทุบตี ฉันได้พยายามรหัสต่อไปนี้ใน/etc/sudoersไฟล์ แต่ไม่ได้ทำงานในฐานะผู้ใช้สามารถรันคำสั่งอื่น ๆ เช่นmkdir,rm

%tomc ALL=/bin/bash,/usr/bin/vim /*

3
แม้ว่าการใช้ sudo นั้นสามารถ จำกัด ได้เฉพาะคำสั่งบางอย่าง แต่ก็อาจยุ่งยากและต้องการความไว้วางใจ หากคุณไม่ไว้วางใจผู้ใช้การให้สิทธิ์การเข้าถึง sudo เป็นความคิดที่ไม่ดี มันจะให้สิทธิ์รูตแก่พวกเขาหรือให้แอปที่เน้นการโจมตีเพื่อรับสิทธิ์รูท การให้บางคนเรียกใช้sudo bashนั้นเทียบเท่ากับวิธีการส่วนใหญ่ในการมีรหัสผ่านรูท จากsudo bashเปลือกพวกเขาสามารถเรียกใช้คำสั่ง admin ใด ๆ ติดตั้งหรือลบซอฟต์แวร์ลบผู้ใช้และไดเรกทอรี ฯลฯ
Paul

@ พอลคุณสามารถแนะนำตัวเลือกที่ดีกว่าและใช้งานได้จริงสำหรับสิ่งนี้หรือไม่?

ก่อนอื่นนี่คือปิดหัวข้อในสแตกล้น สถานที่ที่ดีกว่าที่จะถามรวมถึง superuser หรือ askubuntu หรือ linux & unix ก่อนอื่นให้คิดให้ชัดเจนว่าคุณต้องการให้ tomc ทำอะไร ควรอนุญาตให้ใช้ Tomc _____ แต่ไม่ใช่ ________ จากนั้นถาม Sudo ใช้สำหรับคำสั่งที่ต้องใช้สิทธิ์ root (admin) เขาสามารถรัน bash ได้แล้วโดยไม่เรียกใช้ในฐานะ root
พอล

คำตอบ:


18

คุณอาจจะผิดวิธีนี้ แทนที่จะให้เปลือกทุบตี 'ถูก จำกัด ' แก่ผู้ใช้คุณควรให้สิทธิ์การเข้าถึงคำสั่งที่พวกเขาต้องการเพื่อใช้เป็นรูท ตัวอย่างเช่นในไฟล์ sudoers ของคุณ:

tomc ALL=(root) /usr/bin/vim /etc/myapp.conf
tomc ALL=(root) /usr/bin/less /var/log/myapp/*.log

ระมัดระวังการอนุญาตให้ผู้ใช้เรียกใช้เป็นกลุ่มเป็น root Vim มีฟีเจอร์ในตัวมากมายเช่นการหลบหลีกเชลล์และความสามารถในการเรียกใช้คำสั่งจากภายในกลุ่ม คุณอาจมีsudoeditให้ใช้งานทั้งนี้ขึ้นอยู่กับการกระจายของคุณ สิ่งนี้ทำงานเหมือนกับ Vim ปกติยกเว้นมันถูกออกแบบมาเพื่อจัดการกับการหลบหนีของเชลล์และอื่น ๆ


7
ไม่มีเส้นใดที่ปลอดภัย ตามที่คุณพูดถึงvimสามารถเรียกใช้คำสั่งเชลล์โดยพลการ และบรรทัดที่สองอาจจะอนุญาตless /var/log/myapp/../../../etc/shadow! ตามการทดลองของฉันโดยใช้ sudo อย่างปลอดภัยเป็นเรื่องยาก ! แต่ถ้าคุณสามารถหลีกเลี่ยง*และใช้sudoeditแทนคุณvimอาจจะไม่เป็นไร
joeytwiddle

การหลีกเลี่ยง*ไม่เพียงพอ! เมื่ออยู่ในlessฐานะที่เป็นผู้ใช้ลองพิมพ์root !tail /var/log/secureความรู้สึกนั้นเป็นอย่างไร? ศึกษาNOEXECแท็ก แต่คำนึงถึงข้อความของ @ joeytwiddle ไว้ในใจ: ความปลอดภัยของ sudo นั้นยากจริงๆ
Bruno Bronosky

3

ใน Synology Diskstation ที่รัน DSM 6 ผู้ใช้ที่เป็นผู้ดูแลระบบเท่านั้นที่สามารถ ssh อย่างต่อเนื่อง (ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบมีเชลล์เป็น / sbin / nologin ใน / etc / passwd - คุณสามารถตั้งค่านี้เป็น / bin / sh เพื่ออนุญาต ssh ชั่วคราว ไฟล์ / etc / passwd ถูกรีเซ็ต) ด้วยเหตุนี้จึงจำเป็นต้องมีข้อ จำกัด บางอย่างสำหรับบัญชีที่มีอยู่เพื่อดำเนินการเช่น / sbin / poweroff เท่านั้น บรรทัดต่อไปนี้ใน / etc / sudoers ใช้ได้สำหรับฉัน:

# Allow guestx user to remote poweroff
guestx ALL=(ALL) !ALL
guestx ALL=NOPASSWD: /sbin/poweroff

การแปล: ไม่อนุญาตให้ใช้คำสั่งทั้งหมดจากนั้นอนุญาตเฉพาะคำสั่งที่ต้องการ (โดยไม่ต้องขอรหัสผ่านในกรณีนี้)

ด้วยการกำหนดค่า sudo ขอรหัสผ่านแล้วล้มเหลวสำหรับคำสั่งอื่นนอกเหนือจากรายการที่อนุญาต:

guestx@ds:~$ sudo su -
Password: 
Sorry, user guestx is not allowed to execute '/bin/su -' as root on ds.
guestx@ds:~$ 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.