อนุญาตให้ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบติดตั้งแพ็คเกจผ่าน apt หรือ rpm หรือไม่


13

เป็นไปได้ไหมที่จะอนุญาตให้ผู้ใช้ที่ไม่ใช่รูทติดตั้งแพ็กเกจทั้งระบบโดยใช้ apt หรือ rpm?

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


4
หากคุณให้สิทธิ์ในการติดตั้งแพ็คเกจคุณจะได้รับสิทธิ์ผู้ดูแลระบบอย่างเต็มรูปแบบเนื่องจากผู้ใช้สามารถติดตั้งแพ็คเกจด้วยเชลล์ setuid-root
camh

@camh hrm .. คุณสามารถมีพื้นที่เก็บข้อมูลที่ตรวจสอบแล้วและไม่อนุญาตให้ผู้ใช้เพิ่มที่เก็บใหม่ใช่ไหม? apt อนุญาตให้คุณติดตั้งแพ็คเกจจากไฟล์. deb หรือไม่ ฉันตระหนักถึง repo เหอะอาจจะทำงานมากขึ้นในระยะยาวนี้มีมากขึ้นของความคิดคำถาม :)
naught101

1
apt-secure(8)พูดว่า: "apt-get ในปัจจุบันจะเตือนเฉพาะไฟล์เก็บถาวรที่ไม่ได้ลงชื่อในรุ่นอนาคตอาจบังคับให้แหล่งข้อมูลทั้งหมดได้รับการยืนยันก่อนที่จะดาวน์โหลดแพ็คเกจจากพวกเขา" ขึ้นอยู่กับความซับซ้อนของการจู่โจมมันเป็นไปได้ที่จะจี้การเชื่อมต่อไปยังแหล่งเก็บข้อมูลและฉีดแพ็คเกจที่ไม่น่าเชื่อถือ อย่างไรก็ตามอ่าน man page นั้นสำหรับรายละเอียดเพิ่มเติม คุณอาจมีโซลูชันที่ปลอดภัยเพียงพอสำหรับเธรดโมเดลของคุณ
camh


คำตอบ:


23

คุณสามารถระบุคำสั่งที่อนุญาตด้วย sudo คุณไม่จำเป็นต้องอนุญาตการเข้าถึงที่ไม่ จำกัด เช่น

username ALL = NOPASSWD : /usr/bin/apt-get , /usr/bin/aptitude

สิ่งนี้จะอนุญาตให้ชื่อผู้ใช้รันsudo apt-getและsudo aptitudeไม่มีรหัสผ่านใด ๆ แต่จะไม่อนุญาตให้ใช้คำสั่งอื่น ๆ

นอกจากนี้คุณยังสามารถใช้แพ็คเกจคิทรวมกับPolicyKitเพื่อการควบคุมที่ดีกว่า sudo

การอนุญาตให้ผู้ใช้ติดตั้ง / ลบแพ็คเกจอาจมีความเสี่ยง พวกเขาสามารถทำให้ระบบไม่สามารถทำงานได้อย่างง่ายดายเพียงแค่ถอนการติดตั้งซอฟต์แวร์ที่จำเป็นเช่น libc6, dpkg, rpm เป็นต้นการติดตั้งซอฟต์แวร์โดยพลการจากไฟล์เก็บถาวรที่กำหนดอาจทำให้ผู้โจมตีสามารถติดตั้งซอฟต์แวร์ที่ล้าสมัยหรือใช้ประโยชน์ได้ คำถามหลักในความคิดของฉันคือคุณเชื่อใจพนักงานของคุณมากแค่ไหน?

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


ฉันทิ้งมันไว้จากคำถามของฉัน แต่คุณมีความคิดเห็นใด ๆ เกี่ยวกับการลดความปลอดภัยโดยนัยโดยการอนุญาตหรือไม่ ฉันหมายความว่าคุณไม่สามารถเปลี่ยนที่เก็บแพ็กเกจได้ดังนั้นคุณอาจไม่ได้รับสิทธิ์เข้าถึง sudo เต็มรูปแบบ แต่คุณสามารถเขียนไฟล์ใดก็ได้โดยใช้ความถนัด (ตัวเลือก> การตั้งค่า> "ไฟล์ที่จะบันทึกการกระทำลงใน") ทำให้เกิดความเสียหายร้ายแรง ฉันไม่แน่ใจเกี่ยวกับ PolicyKit น้อยกว่า
101

1
@ naught101 ตกลงฉันได้เพิ่มความคิดเห็นเกี่ยวกับความปลอดภัย JFTR เนื่องจาก policykit จะไม่ให้การเข้าถึงรูทมันจะมีปัญหาน้อยกว่าการใช้ sudo
Ulrich Dangel

มีวิธีที่คุณสามารถเรียกใช้เชลล์จาก dpkg หรือ rpm ตัวอย่างเช่น: dpkg จะแจ้งให้เมื่อมีการเปลี่ยนแปลงไฟล์ config ซึ่งพ้องกับหนึ่งในตัวเลือกที่มีการเริ่มต้นเปลือกเพื่อตรวจสอบสถานการณ์ สิ่งนี้จะเริ่มเชลล์เป็นรูทหากรันผ่าน sudo เช่นเดียวกันหากคุณสามารถเรียกใช้เครื่องมือแก้ไขจากเครื่องมือเนื่องจากผู้แก้ไขส่วนใหญ่ให้คุณเรียกใช้คำสั่งเชลล์โดยพลการจากภายใน (เช่นคำสั่ง! ใน vi)
David Gardner

@ naught101 ฉันจะทดสอบการเพิ่มสิทธิ์ผ่าน RPM ที่มีเชลล์ SUID ตามที่อธิบายในบล็อกนี้: nosedookie.blogspot.com/2011/07/ …ในสถานการณ์การฉีดเชลล์อย่างไรก็ตามที่บัญชี sudoer ถูกบุกรุกใคร ๆ ก็สามารถลดระดับได้ การเพิ่มระดับสิทธิ์ผ่าน sudo โดยกำหนดให้ป้อนรหัสผ่านซึ่งตรงข้ามกับ NOPASSWD
Matt

7

aptdcon

จากหน้าคน:

aptdcon: อนุญาตให้ทำงานการจัดการแพ็คเกจเช่นติดตั้งหรือลบซอฟต์แวร์โดยใช้ aptdaemon ไม่จำเป็นต้องรูทเพื่อเรียกใช้โปรแกรมนี้


1
แม้ว่าคุณไม่ต้องการสิทธิ์รูท / sudo เพื่อเรียกใช้ aptdcon แต่ก็จะเปิดใช้กล่องโต้ตอบการตรวจสอบสิทธิ์สำหรับผู้ใช้ที่ไม่มีสิทธิ์ - ฉันเพิ่งทดสอบบน Ubuntu หากคุณไม่ใช่ผู้ใช้ที่ได้รับการยกเว้น / ได้รับอนุญาตจะไม่เพิ่ม / ลบแพ็คเกจ
ปราชญ์

1
ใช้งานไม่ได้กับการทำงานERROR: You are not allowed to perform this action. ('system-bus-name', {'name': ':1.716'}): org.debian.apt.install-or-remove-packages
JacopKane


1

ฉันก็มองหาบางอย่างเช่นนั้น แต่ไม่มีอะไรปรากฏขึ้นดังนั้นฉันจึงเขียนรหัสวิธีง่ายๆ "ซอฟต์แวร์ช่อง":

https://github.com/alfem/softwarechannels

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

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

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

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