สคริปต์ขอรหัสผ่านรูทแม้ว่าจะมีสิทธิ์อนุญาตสำหรับทุกคน


0

ฉันมีสคริปต์ชื่อ "somescript" ซึ่งมีสิทธิ์อนุญาตสำหรับทุกคน (755) แต่เมื่อฉันพยายามเรียกใช้กับผู้ใช้ที่ไม่ใช่รูทมันจะถามรหัสผ่านรูท ฉันได้ลองตั้งค่าเป็น 4755 โดยไม่มีโชค ผู้ใช้ผู้ดูแลระบบและผู้ใช้ที่มีรหัสผ่านรูทเท่านั้นจึงจะเรียกใช้สคริปต์ได้ในขณะนี้

ฉันจะสร้างมันขึ้นมาได้อย่างไรเพื่อให้ผู้ใช้สามารถเรียกใช้สคริปต์ (แต่ไม่สามารถเปลี่ยนแปลงได้)

-rwxr-xr-x 1 root     group1 2841 Jul  8  2014 somescript

user@node:~> somescript
root's password:

แก้ไข: หลังจาก tring Setuid และ Setgid และเห็นพวกเขาไม่ทำงานฉันตรวจสอบมากขึ้นผ่านสคริปต์และพบว่าสคริปต์กำลังตรวจสอบหารูทชื่อผู้ใช้หากไม่ดำเนินการผ่าน sudo ซึ่งบังคับให้ใช้รหัสผ่านรูท การแสดงความคิดเห็นสคริปต์นี้ควรทำให้มันทำงานผ่านการตั้งค่า setuid เนื่องจากเจ้าของเป็นรูท

if [ "$uid" != "root" ]
then
  exec sudo /someplace/somescript
else

2
บางทีมันเป็นอะไรบางอย่าง ใน สคริปต์ที่ต้องการสิทธิ์สูงหรือไม่
Eugen Rieck

คำตอบ:


0

อาจเป็นสคริปต์ที่ขอการดำเนินการบางอย่างด้วย root สิทธิพิเศษซึ่งไม่มีส่วนเกี่ยวข้องกับสิทธิ์ (ในกรณีนี้) เนื่องจากการดำเนินการนี้จะดำเนินการโดยผู้ใช้ปัจจุบันและคุณไม่มี SETUID หรือ SETGID เปิดใช้งานบิต

อย่างไรก็ตามคุณสามารถเปิดใช้งาน SETUID บิตกับสคริปต์ สิ่งนี้จะทำให้สคริปต์ทำงานกับผู้ใช้เจ้าของในกรณีของคุณ rootแต่ผู้ใช้ที่เรียกใช้สคริปต์ไม่จำเป็นต้องทำการยกระดับสิทธิ์ใด ๆ

คุณสามารถทำได้โดยการเรียกใช้:

chmod u+s somescript

เพิ่มเติมเกี่ยวกับ SETUID/SETGID: ทำความเข้าใจกับสิทธิ์ setuid และ setgid เพื่อปรับปรุงความปลอดภัย


ขอบคุณพบปัญหาอยู่ในสคริปต์ที่ทำด้วยการตรวจสอบรากเพิ่มวิธีแก้ไขปัญหาของฉัน
Gorkem
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.