ฉันจะป้องกัน PolicyKit จากการขอรหัสผ่านได้อย่างไร


24

หลายปีที่ผ่านมาฉันมีไฟล์ดังต่อไปนี้sudoers:

scott   ALL=NOPASSWD: ALL

สำหรับผู้ที่ไม่ทราบสิ่งนี้จะป้องกันsudoและเพื่อน ( gksudoฯลฯ ) จากการขอรหัสผ่าน อย่างไรก็ตามในช่วงหลายปีที่ผ่านมาสิ่งต่าง ๆ ที่เคยถูกใช้งานsudoได้เปลี่ยนไปใช้ PolicyKit

ฉันกำลังมองหาการกำหนดค่าที่เทียบเท่ากับ PolicyKit ซึ่งจะไม่ขอรหัสผ่านของฉัน

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

คำตอบ:


15

คุณสามารถหลอก PolicyKit และระงับพรอมต์รหัสผ่านทั้งหมดโดยการแทนที่การดำเนินการด้วยอักขระตัวแทน

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

อย่าพูดว่าคุณไม่ได้รับการเตือน!

หมายเหตุ: หากคุณใช้ 12.04 หรือใหม่กว่าให้แทนที่ "admin" ด้วย "sudo"!

แทนที่ "ชื่อผู้ใช้" ด้วยชื่อผู้ใช้จริงของคุณ:

usermod -aG admin username

เปลี่ยนเป็นรูท:

sudo -i

สร้างนโยบายใหม่:

gedit /var/lib/polkit-1/localauthority/50-local.d/disable-passwords.pkla

เพิ่มรายการต่อไปนี้:

[Do anything you want]
Identity=unix-group:admin
Action=*
ResultActive=yes

บันทึกและออก. จากนั้นไปลองสิ่งที่มักจะต้องใช้รหัสผ่าน :)

หมายเหตุ: ไม่สำคัญว่าคุณจะใช้อะไรเป็นชื่อไฟล์. pkla ของคุณ คุณสามารถตั้งชื่อทุกอย่างที่คุณต้องการ

และสุดท้ายนี้เป็นนโยบายเพียงอย่างเดียวที่คุณต้องการเมื่อมีการระงับการแจ้งรหัสผ่านเพราะอีกครั้งมันทำเช่นนั้นทั่วโลก


นี้ยังทำงานบน Fedora เมื่อคุณแทนกลุ่มที่มีadmin wheelขอบคุณ!
Kenny Rasschaert

3
มีคนช่วยอธิบายว่าระบบนี้ "หยุด" ได้อย่างไร
Mehrdad

3
ได้โปรด สิ่งนี้จะทำลายระบบได้อย่างไร ไม่ใช่อย่างนี้! สิ่งที่โง่ที่คุณทำหลังจากนี้จะทำให้ระบบแตก แต่ไม่ใช่สิ่งนี้! สิ่งนี้จะอนุญาตให้คุณทำอะไรก็ได้บนโฮสต์ที่ไม่มีรหัส หากคุณทำสิ่งที่โง่คุณจะทำลายระบบ หากคุณต้องใส่รหัสผ่านและทำสิ่งที่โง่คุณจะทำลายระบบ สิ่งต่อไปนี้ทำให้ง่ายขึ้นที่จะทำสิ่งที่โง่
dangonfast

1
@ jeckyll2hide อ่านหมายเหตุ - มันอธิบายว่าทำไม OP [Install package file]เลือก คุณไม่เห็นด้วยกับสิ่งนี้และ NOTE ต้องการการแก้ไขที่คล้ายกันหรือการแก้ไขของคุณไม่ถูกต้องและควรย้อนกลับ
bcbc

1
@prusswan คุณสามารถใช้Identity=unix-user:scottเพื่ออนุญาตเฉพาะผู้ใช้ "scott" เพื่อดำเนินการ นอกจากนี้หากคุณต้องการอนุญาตการดำเนินการบางอย่างคุณสามารถ grep /var/log/auth.log และ polkitd จะแสดงชื่อเต็มของ polkit ที่คุณพยายามเมื่อคุณได้รับพร้อมท์ให้ใส่รหัสผ่านของคุณ cat /var/log/auth.log | grep polkitdจะให้รายชื่อพวกเขาอย่างรวดเร็ว
Scott

8

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

สำหรับการอ้างอิงดูใน / usr / share / polkit-1 / actions ให้เปิดผู้สนใจในเท็กซ์เอดิเตอร์เพื่อรับ id ของแอ็คชัน

เท่าที่. pkla หรือ 2 ฉันพบว่าสถานที่ที่ดีที่สุดที่จะนำพวกเขามาอยู่ที่นี่มันจะได้รับการปกป้องจากการอัปเดตใด ๆ

/var/lib/polkit-1/localauthority/50-local.d

ตัวอย่างเช่นนี่คือหลักของฉันชื่อ package-manager.pkla แม้ว่ามันจะขยายไปไกลกว่านโยบายการจัดการแพ็คเกจ

[Install package file]
Identity=unix-group:admin
Action=org.debian.apt.install-file;org.debian.apt.update-cache;org.debian.apt.install-or-remove-packages;org.debian.apt.upgrade-packages
ResultActive=yes

[Install package synaptic]
Identity=unix-group:admin
Action=com.ubuntu.pkexec.synaptic
ResultActive=yes

[Change add repo]
Identity=unix-group:admin
Action=com.ubuntu.softwareproperties.applychanges;org.debian.apt.change-repository
ResultActive=yes

[usbcreator format]
Identity=unix-group:admin
Action=com.ubuntu.usbcreator.format
ResultActive=yes

[Install bootloader]
Identity=unix-group:admin
Action=com.ubuntu.usbcreator.bootloader
ResultActive=yes

[Add users]
Identity=unix-group:admin
Action=org.freedesktop.accounts.user-administration
ResultActive=yes

โปรดทราบว่าการเริ่มต้นใน12.04กลุ่มที่ใช้สำหรับผู้ใช้ "admin" ควรเปลี่ยนเป็น sudo เช่น

Identity=unix-group:sudo

นอกจากนี้โปรดทราบว่าการดำเนินการสามารถรวมกันต่อส่วนไม่มีช่องว่างใช้; ในระหว่าง id ของ


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

1
ไม่เคยเห็นวิธีการที่จะส่งผลกระทบต่อ 'ทั่วโลก' ไม่เชื่อว่าเป็นผลงานทาง PolicyKit มีการตั้งค่านโยบายต่อการกระทำใด ๆ ID
ดั๊ก

0

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

sudo apt-get remove libpolkit-agent-1-0


1
มันเอาแพคเกจมากเกินไปที่สำคัญเช่นnetwork-manager, gnome-control-centerและอื่น ๆ อีกมากมาย มีวิธีที่ละเอียดกว่านี้อีกไหม?
Suncatcher
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.