ฉันจะตั้งค่า Software Center ให้ติดตั้งซอฟต์แวร์สำหรับผู้ใช้ที่ไม่ใช่รูทได้อย่างไร


47

ฉันจะตั้งค่า Software Center ให้อนุญาตให้ผู้ใช้ที่ไม่ใช่รูทติดตั้งเนื้อหาจาก repos ของ Ubuntu โดยไม่ต้องพิมพ์รหัสผ่านได้อย่างไร

ฉันตระหนักถึงความปลอดภัยอย่างเต็มที่และฉันยินดีที่จะรับความเสี่ยง Fedora 12 มาพร้อมกับสิ่งนี้ (โดยการปรับเปลี่ยนการกำหนดค่า PolicyKit ฉันเชื่อว่า)


5
เป็นเรื่องสำคัญที่จะต้องทราบว่า Fedora สำรองข้อมูลไว้หลังจากที่ท้องฟ้าตกลงมา
Nicholas Knight

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

โปรดทราบว่าซอฟต์แวร์ของตลาดแอพบางตัวเช่น Software Center ช่วยให้สามารถเปลี่ยนที่เก็บระบบ การบริการบรรจุภัณฑ์ด้วยตนเองมีความเสี่ยง แต่ผู้ใช้ที่เพิ่มแหล่งแพ็คเกจที่ไม่น่าเชื่อถือนั้นเป็นสิ่งที่อันตรายจริงๆ
Alfonso EM

คำตอบ:


36

คุณสามารถแก้ไขสิทธิ์ PolicyKit เพื่อให้ผู้ใช้สามารถเข้าถึง aptdaemon แบ็กเอนด์ที่ Software Center ใช้

dpkg --listfiles aptdaemonแสดงให้เห็นว่า/usr/share/polkit-1/actions/org.debian.apt.policyเป็นไฟล์ที่ระบุการกระทำที่เป็นไปได้ในแบ็กเอนด์ aptdaemon

เมื่อมองในไฟล์นั้น< action id="">แท็กจะระบุการกระทำที่เป็นไปได้ คุณอาจต้องการorg.debian.apt.install-packagesอนุญาตให้ผู้ใช้ติดตั้งแพ็คเกจใหม่จากไฟล์เก็บถาวรและorg.debian.apt.update-cacheเพื่ออนุญาตให้ผู้ใช้อัปเดตรายการแพ็คเกจ

ดูman pklocalauthorityเอกสารวิธีการตั้งค่าการอนุญาตในท้องถิ่นเกี่ยวกับการกระทำ PolicyKit การใส่สิ่งต่อไปนี้ลงใน/etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pklaนั้นจะอนุญาตให้ผู้ใช้ที่ล็อกอินเข้าสู่เครื่องโลคัลติดตั้งแพ็กเกจหลังจากพิมพ์รหัสผ่านของตัวเอง (แม้ว่าพวกเขาจะไม่ได้อยู่ในกลุ่มผู้ดูแลระบบ) และอัปเดตแคชแพ็กเกจโดยไม่ต้องพิมพ์รหัสผ่านใด ๆ

[Untrusted Install]
Action=org.debian.apt.install-or-remove-packages
ResultyAny=no
ResultInactive=no
ResultActive=auth_self

[Untrusted Update]
Action=org.debian.apt.update-cache
ResultAny=no
ResultInactive=no
ResultActive=yes

นโยบายของ Kubuntu (อย่างน้อยก็ใน Natty และ Oneiric) อยู่ใน/usr/share/polkit-1/actions/org.kubuntu.qaptworker.policy
Lekensteyn

คำแนะนำสำหรับการ Kubuntu สามารถพบได้ในคำตอบของฉัน
Lekensteyn

ช่วยชีวิต - ไชโยเพื่อน! ผมต้องเพิ่มIdentity=*จะได้รับนี้ไปทำงานที่ดัดแปลงมาจากaskubuntu.com/a/123260 นอกจากนี้ยังมีวิธีใดที่จะได้รับเอาต์พุตบันทึกชุดนโยบายเพิ่มเติมเช่น/var/log/auth.log(หรือไฟล์บันทึกอื่น ๆ )? ฉันได้รับauthentication failsข้อความเท่านั้น แต่ก็ไม่มีเหตุผลว่าทำไมมันล้มเหลว ...
ssc

10

ฉันไม่คิดว่ามันเป็นไปได้ที่จะทำเช่นนั้นผ่านทาง GUI แต่ต่อไปนี้ควรจะทำงานแม้ว่าจะเป็น kludgy เล็กน้อย YMMV

เพิ่มบรรทัดต่อไปนี้ใน / etc / sudoers (ใช้sudo visudoเพื่อแก้ไขไฟล์):

%packageinstallers ALL = NOPASSWD: /usr/bin/software-center /usr/bin/apt-get

จากนั้นคุณเพียงแค่ต้องสร้างและเพิ่มผู้ใช้เฉพาะในpackageinstallersกลุ่ม:

$ sudo addgroup packageinstallers
$ sudo adduser jdoe packageinstallers

ตอนนี้jdoeสามารถทำสิ่งต่อไปนี้:

$ sudo apt-get install <some-package>

และคุณสามารถแก้ไขรายการเมนูสก์ท็อปสำหรับศูนย์ซอฟแวร์เพื่อที่จะเรียกร้องให้software-centerprepending gksudoคำสั่งด้วย

PolicyKitอาจอนุญาตให้คุณทำได้โดยไม่ต้อง sudo แต่มันเกินความเข้าใจของฉันในตอนนี้


สิ่งนี้ช่วยให้พวกเขาติดตั้งจาก Synaptic หรือความถนัดหรือเพียงแค่รับ -pt?
snostorm

หากคุณต้องการเพิ่ม "/ usr / bin / synaptic" ลงในรายการ อันที่จริงแล้วคุณอาจจะเพิ่ม "/ usr / bin / software-center" ลงในรายการและมันก็ใช้ได้ ยังไม่ได้ทดสอบว่าให้ฉันรู้ว่ามันใช้งานได้หรือไม่และฉันจะอัปเดตคำตอบ
lfaraone

ฉันจะลองดู :)
snostorm

นั่นจะทำให้ผู้ใช้ต้องรู้ว่าจะต้องเรียกใช้ศูนย์ซอฟต์แวร์ด้วย sudo หรือให้คุณแก้ไขไฟล์ .desktop ดูคำตอบของฉันในการปรับแต่ง PolicyKit เพื่อทำสิ่งที่คุณต้องการ
RAOF

ตกลงว่าจะเป็นทางออกที่เหนือกว่า
lfaraone

5

คำตอบของ RAOFใช้ได้กับ Ubuntu เท่านั้น Kubuntu ใช้ QAptWorker เป็นแบ็กเอนด์ (สังเกตได้จาก Natty และ Oneiric) หากต้องการอนุญาตการติดตั้งที่ไม่ใช่รูทให้สร้าง/etc/polkit-1/localauthority/50-local.d/10-allow-non-root-install-packages.pklaประกอบด้วย:

[Update Software Sources]
Action=org.kubuntu.qaptworker.updateCache
ResultAny=no
ResultInactive=no
ResultActive=yes

[Install Software]
Action=org.kubuntu.qaptworker.commitChanges
ResultAny=no
ResultInactive=no
ResultActive=auth_self

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

Identity=unix-user:some-non-admin-user

หากมีกลุ่มที่จะต้องได้รับอนุญาตให้ใช้แทนunix-groupunix-user


ในการใช้กฎอีกครั้งฉันรีบูต (การเข้าสู่ระบบอีกครั้งอาจจะทำงานได้เช่นกัน)
Lekensteyn

คุณควรทำอย่างไร แม้หลังจากที่sudo -iฉันไม่สามารถเข้าถึง/etc/polkit-1/localauthority(Ubuntu 17.10): "จะไม่พยายามประมวลผลไดเรกทอรี / etc / polkit-1 / localauthority"
JHBonarius

5

หากคุณต้องการสิทธิ์ทั่วไปในการอนุญาต / ไม่อนุญาตให้ติดตั้งแพ็คเกจให้ไปที่ PolicyKit

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

ฉันก็มองหาบางอย่างเช่นนั้น แต่เนื่องจากฉันไม่พบอะไรเลยฉันจึงเขียนรหัสวิธีแก้ปัญหาง่าย ๆ นี้ "softwarechannels" ซึ่งมีให้ที่ GitHub

เป็นระบบที่ง่ายมากที่อนุญาตให้ผู้ใช้ทั่วไป (ที่ไม่ใช่ผู้ดูแลระบบ) ติดตั้งแพ็คเกจจากแคตาล็อกที่ถูก จำกัด

เพียงกำหนด 'แชแนล' (กลุ่มของแพ็คเกจ) ในไฟล์ข้อความอย่างง่ายและให้สิทธิ์ผู้ใช้ของคุณในการเปิดซอฟต์แวร์ช่อง

พวกเขาจะเห็นแพ็คเกจในช่องที่ตรงกับกลุ่ม unix ของพวกเขา

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