Izinkan pengguna non-admin untuk menginstal paket melalui apt atau rpm?

13

Apakah mungkin untuk mengizinkan pengguna non-root untuk menginstal paket seluruh sistem menggunakan apt atau rpm?

Tempat saya bekerja saat ini memiliki pengaturan kedaluwarsa pada kotak linux, dan admin muak harus melakukan semua instalasi untuk pengguna berdasarkan permintaan, sehingga mereka berpikir untuk memberikan hak sudo penuh kepada semua pengguna. Ini jelas memiliki kerugian keamanan. Jadi saya bertanya-tanya apakah ada cara untuk memungkinkan pengguna normal menginstal perangkat lunak - dan untuk meningkatkan dan menghapusnya?

tidak ada apa-apa101
sumber
4
Jika Anda memberikan hak istimewa untuk menginstal paket, pada dasarnya Anda telah memberikan hak admin penuh, karena pengguna hanya dapat menginstal paket dengan shell setuid-root.
camh
@camh hrm .. Anda bisa memiliki repositori yang diperiksa, dan tidak membiarkan pengguna menambahkan repositori baru, bukan? Atau apakah tepat memungkinkan Anda untuk menginstal paket dari file deb? Saya menyadari repo yang diperiksa mungkin akan lebih banyak bekerja dalam jangka panjang, ini lebih merupakan pertanyaan konseptual :)
naught101
1
apt-secure(8)mengatakan: "apt-get saat ini hanya akan memperingatkan untuk arsip yang tidak ditandatangani, rilis mendatang mungkin memaksa semua sumber untuk diverifikasi sebelum mengunduh paket dari mereka". Bergantung pada seberapa canggih serangan itu, bisa saja memungkinkan untuk membajak koneksi ke sumber repositori dan menyuntikkan paket yang tidak terpercaya. Namun, baca halaman manual itu untuk lebih jelasnya. Anda mungkin memiliki solusi yang cukup aman untuk model utas Anda.
camh
Terkait: Sistem manajemen paket pengguna-lokal
Piotr Dobrogost
1
Terkait: Manajer Paket Non-Root
Piotr Dobrogost

Jawaban:

21

Anda dapat menentukan perintah yang diizinkan dengan sudo, Anda tidak harus mengizinkan akses tanpa batas, mis

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

Ini akan memungkinkan nama pengguna untuk menjalankan sudo apt-getdan sudo aptitudetanpa kata sandi tetapi tidak akan mengizinkan perintah lain.

Anda juga dapat menggunakan packagekit yang dikombinasikan dengan PolicyKit untuk tingkat kontrol yang lebih baik daripada sudo.

Mengizinkan pengguna menginstal / menghapus paket bisa menjadi risiko. Mereka dapat dengan mudah membuat sistem tidak berfungsi hanya dengan menghapus instalasi perangkat lunak yang diperlukan seperti libc6, dpkg, rpm, dll. Menginstal perangkat lunak sewenang-wenang dari arsip yang ditentukan dapat memungkinkan penyerang untuk menginstal perangkat lunak yang sudah ketinggalan zaman atau yang dapat dieksploitasi dan mendapatkan akses root. Pertanyaan utama menurut saya adalah seberapa banyak Anda mempercayai karyawan Anda?

Tentu saja tim admin Anda juga dapat mulai menggunakan sistem manajemen konfigurasi seperti boneka, koki atau melihat ke luar angkasa untuk mengelola sistem Anda. Ini akan memungkinkan mereka untuk mengkonfigurasi dan mengelola sistem dari sistem pusat.

Ulrich Dangel
sumber
Saya meninggalkannya dari pertanyaan saya, tetapi apakah Anda memiliki komentar tentang pengurangan keamanan yang tersirat dengan mengizinkan ini? Maksud saya, Anda tidak dapat mengubah repositori paket, jadi Anda mungkin tidak akan mendapatkan akses sudo penuh, tetapi Anda dapat menulis ke file apa pun menggunakan aptitude (opsi> preferensi> "File untuk mencatat tindakan"), yang dapat menyebabkan kerusakan serius. Saya kurang yakin tentang PolicyKit ...
naught101
1
@ naught101 ok saya menambahkan beberapa komentar tentang keamanan. JFTR sebagai policykit tidak akan menyediakan akses root, itu akan menjadi kurang bermasalah daripada menggunakan sudo
Ulrich Dangel
Ada beberapa cara Anda dapat menjalankan shell dari dpkg atau rpm. Sebagai contoh: dpkg akan meminta ketika ada perubahan file konfigurasi yang bentrok, dengan salah satu opsi mulai shell untuk memeriksa situasi . Ini akan memulai shell sebagai root jika dijalankan melalui sudo. Demikian juga jika Anda dapat menjalankan editor dari alat ini, karena sebagian besar editor memungkinkan Anda menjalankan perintah shell sewenang-wenang dari dalamnya (mis! Perintah in vi).
David Gardner
@ naught101 Saya akan menguji eskalasi hak istimewa melalui RPM yang berisi shell SUID seperti yang dijelaskan blog ini: nosedookie.blogspot.com/2011/07/... Dalam skenario injeksi shell, bagaimanapun, di mana akun sudoer dikompromikan, orang dapat mengurangi peningkatan hak istimewa melalui sudo dengan meminta kata sandi untuk dimasukkan, sebagai lawan dari NOPASSWD.
Matt
7

aptdcon

Dari halaman manual:

aptdcon: memungkinkan untuk melakukan tugas manajemen paket, mis. menginstal atau menghapus perangkat lunak, menggunakan aptdaemon. Tidak perlu menjadi root untuk menjalankan program ini.

pl1nk
sumber
1
Meskipun Anda tidak memerlukan hak akses root / sudo untuk menjalankan aptdcon, ia segera meluncurkan dialog otentikasi untuk pengguna yang tidak memiliki hak pribadi - saya baru saja menguji Ubuntu. Jika Anda bukan pengguna istimewa / resmi, maka ini tidak menambah / menghapus paket.
bijak
1
Tidak bekerja pada operasiERROR: You are not allowed to perform this action. ('system-bus-name', {'name': ':1.716'}): org.debian.apt.install-or-remove-packages
JacopKane
4
username ALL = NOPASSWD : /usr/bin/yum, /bin/rpm
fromnaboo
sumber
1

Saya juga mencari sesuatu seperti itu, tetapi tidak ada yang muncul, jadi saya memberi kode solusi mudah ini "softwarechannels":

https://github.com/alfem/softwarechannels

Ini adalah sistem yang sangat sederhana untuk memungkinkan pengguna umum (tanpa admin) menginstal paket dari katalog terbatas.

Cukup tentukan 'saluran' (grup paket) dalam file teks sederhana dan berikan izin kepada pengguna Anda untuk meluncurkan perangkat lunak.

Mereka hanya akan melihat paket di saluran yang cocok dengan grup unix mereka.

Alfonso EM
sumber