Bagaimana saya bisa mengatur Pusat Perangkat Lunak untuk menginstal perangkat lunak untuk pengguna non-root?

47

Bagaimana saya bisa mengatur Pusat Perangkat Lunak untuk memungkinkan pengguna non-root untuk menginstal hal-hal dari repo Ubuntu tanpa harus mengetikkan kata sandi mereka?

Saya sepenuhnya menyadari implikasi keamanan, dan saya bersedia mengambil risiko. Fedora 12 dikirimkan dengan sesuatu seperti ini. (Dengan memodifikasi konfigurasi PolicyKit, saya percaya)

snostorm
sumber
5
Penting untuk dicatat bahwa Fedora juga mundur setelah langit jatuh pada mereka.
Nicholas Knight
Ya, saya ingat itu. Ini benar-benar hanya masuk akal pada komputer Desktop dengan hanya satu atau dua pengguna.
snostorm
Ingatlah bahwa beberapa perangkat lunak pasar aplikasi seperti Pusat Perangkat Lunak memungkinkan untuk mengubah repositori sistem. Layanan mandiri paket berisiko, tetapi pengguna yang menambahkan sumber paket yang tidak tepercaya benar-benar berbahaya.
Alfonso EM

Jawaban:

36

Anda dapat mengubah izin PolicyKit untuk memungkinkan pengguna mengakses backend aptdaemon yang digunakan oleh Pusat Perangkat Lunak.

dpkg --listfiles aptdaemonmenunjukkan bahwa /usr/share/polkit-1/actions/org.debian.apt.policyfile menentukan tindakan yang mungkin pada backend aptdaemon.

Melihat dalam file itu, < action id="">tag menentukan tindakan yang mungkin. Anda mungkin ingin org.debian.apt.install-packagesmengizinkan pengguna untuk menginstal paket baru dari arsip, dan org.debian.apt.update-cacheuntuk memungkinkan pengguna untuk memperbarui daftar paket.

Lihat man pklocalauthoritydokumen mana cara mengatur izin lokal pada tindakan PolicyKit. Memasukkan yang berikut ini /etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pklaakan memungkinkan pengguna yang masuk ke mesin lokal untuk menginstal paket setelah mengetik kata sandi mereka sendiri (bahkan ketika mereka tidak dalam grup admin) dan untuk memperbarui cache paket tanpa mengetikkan kata sandi apa pun.

[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
RAOF
sumber
Kebijakan Kubuntu (setidaknya dalam Natty dan Oneiric) ada di/usr/share/polkit-1/actions/org.kubuntu.qaptworker.policy
Lekensteyn
Instruksi untuk Kubuntu dapat ditemukan dalam jawaban saya
Lekensteyn
Life saver - Cheers mate! Saya harus menambahkan Identity=*agar ini berfungsi, diadaptasi dari askubuntu.com/a/123260 . Juga, apakah ada cara untuk mendapatkan lebih banyak output log kit kebijakan misalnya /var/log/auth.log(atau file log lainnya)? Saya hanya mendapatkan authentication failspesan, tetapi tidak ada alasan mengapa gagal ...
ssc
10

Saya tidak berpikir saat ini dimungkinkan untuk melakukannya melalui GUI, tetapi berikut ini harus bekerja, meskipun sedikit kumuh. YMMV.

Tambahkan baris berikut ke / etc / sudoers (gunakan sudo visudountuk mengedit file):

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

Maka Anda hanya perlu membuat dan menambahkan pengguna spesifik ke packageinstallersgrup:

$ sudo addgroup packageinstallers
$ sudo adduser jdoe packageinstallers

Sekarang jdoedapat melakukan hal berikut:

$ sudo apt-get install <some-package>

dan Anda dapat mengedit item menu desktop untuk Pusat Perangkat Lunak sehingga ia memanggil pada software-centerprepending perintah dengan gksudo.

PolicyKit memungkinkan Anda untuk melakukannya tanpa sudo, tapi itu di luar pemahaman saya pada saat ini.

lfaraone
sumber
Apakah ini membiarkan mereka menginstal dari Synaptic atau aptitude, atau hanya apt-get?
snostorm
Jika Anda menambahkan "/ usr / bin / synaptic" ke daftar, itu akan. Bahkan, Anda mungkin bisa menambahkan "/ usr / bin / software-center" ke daftar dan itu akan berhasil. Belum diuji, beri tahu saya jika berhasil dan saya akan memperbarui jawabannya.
lfaraone
Saya akan mencobanya. :)
snostorm
Itu akan mengharuskan pengguna tahu untuk menjalankan pusat perangkat lunak dengan sudo, atau bagi Anda untuk memodifikasi file .desktop. Lihat jawaban saya tentang cara mengubah PolicyKit untuk melakukan apa yang Anda inginkan.
RAOF
Setuju, itu akan menjadi solusi yang unggul.
lfaraone
5

Jawaban RAOF hanya berlaku untuk Ubuntu. Kubuntu menggunakan QAptWorker sebagai backend (diamati untuk Natty dan Oneiric). Untuk mengizinkan instalasi non-root, buat yang /etc/polkit-1/localauthority/50-local.d/10-allow-non-root-install-packages.pklaberisi:

[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

Saya ingin memperbolehkan beberapa pengguna non-admin untuk menginstal perangkat lunak sementara tidak memberikan akses sudo secara langsung. Itu dilakukan dengan memasukkan baris berikutnya di kedua grup konfigurasi:

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

Jika ada grup yang harus diberi izin, gunakan unix-groupsebagai ganti unix-user.

Lekensteyn
sumber
Untuk menerapkan kembali aturan, saya reboot. (login ulang mungkin juga akan berhasil)
Lekensteyn
Bagaimana kamu melakukan ini? Bahkan setelah sudo -isaya bahkan tidak memiliki akses ke /etc/polkit-1/localauthority(Ubuntu 17.10): "Tidak akan mencoba memproses direktori / etc / polkit-1 / localauthority"
JHBonarius
5

Jika Anda hanya memerlukan izin umum untuk mengizinkan / melarang instalasi paket, buka PolicyKit.

Sayangnya PolicyKit tidak memiliki kontrol yang baik atas paket yang akan diinstal. Jika Anda ingin memberikan izin kepada pengguna Anda untuk menginstal hanya satu set aplikasi terbatas, Anda harus menggunakan sudodan menginstal sesuatu seperti perangkat lunak ...

Saya juga mencari sesuatu seperti itu, tetapi karena saya tidak menemukan apa pun, saya memberi kode solusi mudah ini "softwarechannels", tersedia di sini di GitHub

Ini adalah sistem yang sangat sederhana untuk memungkinkan pengguna umum (non-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