ฉันจะป้องกัน virt-manager ไม่ให้ถามรหัสผ่านรูทได้อย่างไร


18

เมื่อเริ่มต้น virt-manager มันจะถามรหัสผ่านรูท

ดูเหมือนว่า virt-manager ทำให้ libvirtd daemon รัน pkcheck พร้อมกับข้อโต้แย้งสองข้อซึ่งจะแสดงกล่องโต้ตอบการตรวจสอบสิทธิ์นี้ ดังนั้นจึงเป็น PolicyKit ที่ขอรหัสผ่านรูท

เว็บไซต์อย่างเป็นทางการ (libvirt.org) อธิบายถึงวิธีการกำหนดกฎ PolicyKit เพื่อกำจัดการแจ้งรหัสผ่าน:

$ sudo cat /etc/polkit-1/localauthority/50-local.d/50-org.example-libvirt-remote-access.pkla
[libvirt Management Access]
Identity=unix-group:libvirt
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes

ไดเรกทอรีย่อย "localauthority" ไม่มีอยู่ การสร้างและวางไฟล์ด้วยชื่อและเนื้อหานั้น (libvirt -> ชื่อกลุ่มของฉัน) ในนั้นดูเหมือนจะไม่มีผลใด ๆ นอกจากนี้ยังมีไฟล์เริ่มต้นซึ่งใช้ไวยากรณ์ JavaScript:

/etc/polkit-1/rules.d/50-default.rules

แพคเกจนี้ได้รับการติดตั้งในระบบพร้อมกับส่วนหน้า DE สองสามตัว:

polkit-0.107-4.fc18.x86_64

เห็นได้ชัดว่าการกำหนดค่าตัวอย่างใน libvirt.org ล้าสมัยหรือไม่

การกำหนดค่าใดที่จำเป็นในการกำจัดรหัสผ่าน (สำหรับกลุ่มผู้ใช้เฉพาะ)

คำตอบ:


16

/etc/polkit-1/rules.d/10.virt.rules:

polkit.addRule(function(action, subject) {
    if (action.id == "org.libvirt.unix.manage"
            && subject.local
            && subject.active
            && subject.isInGroup("libvirt")) {
        return polkit.Result.YES;
    }
});

คุณจะต้องทำตามขั้นตอนทั่วไปรวมถึงการรีสตาร์ทชุดนโยบายและเริ่มเซสชันใหม่กับผู้ใช้ที่เกี่ยวข้องหลังจากเพิ่มเขาในlibvirtกลุ่ม

ดูเหมือนว่าทรัพยากรนั้นเกี่ยวกับ Fedora 18 แต่มันใช้ไวยากรณ์ javascript อยู่แล้วดังนั้นมันก็น่าจะใช้ได้กับ Fedora 19 เช่นกัน

ลิงค์:


1
วิธีนี้ใช้ได้ผล! ขอบคุณสำหรับลิงค์เช่นกัน รางวัลที่ได้รับ
senorsmile

ขออภัยสำหรับการจัดรูปแบบที่ไม่ถูกต้องแก้ไขที่
Pavel Šimerda

สิ่งนี้เปรียบเทียบกับการเพิ่มผู้ใช้ในกลุ่ม libvirt ได้อย่างไร ฉันทดสอบการเพิ่มผู้ใช้ในกลุ่ม libvirt แล้วไม่จำเป็นต้องมีการตรวจสอบสิทธิ์เพิ่มเติม
jwbensley

1
@jwbensley วิธี polkit เป็นแบบไดนามิกและให้สิทธิ์แก่เจ้าของเซสชันท้องถิ่นที่ใช้งานอยู่ วิธีกลุ่มจะคงที่และมอบสิทธิ์พิเศษให้แก่ผู้ใช้นั้น เลือกวิธีการของคุณตามที่เห็นสมควร
Pavel Šimerda

1

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

  1. สร้างGroupกลุ่มบนเครื่องของคุณ หรือคุณสามารถเรียกใช้ "sudo groupadd -r Group"

  2. คุณสามารถผู้ใช้ที่คุณต้องการให้กลุ่มระบบนี้โดยเรียกใช้ "sudo usermod -a -G Group User"

  3. ตอนนี้คุณต้องสร้างนโยบาย PolicyKit ของเราที่จะอนุญาตให้ผู้ใช้Groupเรียกใช้ virt-manager

คุณจะสร้างไฟล์ที่พา ธ นี้: "/ etc / polkit-1 / localauthority / 50-local.d / 50-org. Group-libvirt-local-access.pkla"
และคุณจะใส่บรรทัดด้านล่างลงไป

[อนุญาตให้กลุ่มGroupจัดการสิทธิ์ libvirt]
Identity = unix-group: Group
Action = org.libvirt.unix.manage
ResultAny = ใช่
ResultInactive = ใช่
ResultActive = ใช่

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


นี่คือทางออกเก่า วิธีนี้ไม่สามารถใช้งานได้กับระบบปฏิบัติการ Linux ที่ใหม่กว่าเช่น Fedora 19 หรือ Current Arch (ฉันเพิ่งทดสอบมันไม่มีแม้แต่ไดเรกทอรี localauthority และสร้างโฟลเดอร์ย่อยและไฟล์ที่ระบุไม่ทำอะไรเลย)
senorsmile

@senorsmile คุณยื่นรายงานข้อผิดพลาดกับ Fedora 19 หรือไม่?
Pavel Šimerda
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.