Bagaimana saya mencegah PolicyKit meminta kata sandi?

24

Selama bertahun-tahun, saya memiliki yang berikut dalam sudoersfile saya :

scott   ALL=NOPASSWD: ALL

Bagi mereka yang tidak tahu, ini mencegah sudodan teman-teman ( gksudo, dll.) Meminta kata sandi. Namun, selama bertahun-tahun, semakin banyak barang yang pernah digunakan sudotelah beralih ke menggunakan PolicyKit.

Saya mencari konfigurasi yang setara untuk PolicyKit, sehingga tidak akan pernah meminta kata sandi saya.

Bagi mereka yang tidak suka permintaan saya, izinkan saya mengatakan ini: Saya mengerti alasan untuk konfigurasi default, dan mereka sehat. Saya juga memahami risiko yang melekat pada konfigurasi yang ingin saya buat. Namun demikian, itulah cara saya ingin mengatur sistem saya. Mereka yang tidak sepenuhnya memahami hal di atas tidak boleh mencoba apa yang saya coba.

Scott Severance
sumber

Jawaban:

15

Anda bisa mengelabui PolicyKit dan menekan semua permintaan kata sandi dengan mengganti tindakan dengan wildcard.

PENOLAKAN: Berikut ini akan menekan SEMUA kata sandi meminta secara global untuk semua orang yang termasuk dalam grup admin, kecuali layar login. Ini sangat berbahaya dan TIDAK AKAN PERNAH diimplementasikan karena kemungkinan ANDA AKAN AKHIRNYA MENGHANCURKAN SISTEM ANDA !!

Jangan bilang kamu tidak diperingatkan!

CATATAN: Jika Anda menjalankan 12,04 atau lebih baru, gantikan "admin" dengan "sudo"!

Ganti "nama pengguna" dengan nama pengguna Anda yang sebenarnya:

usermod -aG admin username

Beralih ke root:

sudo -i

Buat kebijakan baru:

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

Tambahkan yang berikut ini:

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

Simpan dan keluar. Lalu cobalah sesuatu yang biasanya memerlukan kata sandi. :)

CATATAN: Tidak masalah apa yang Anda gunakan sebagai nama file .pkla Anda. Anda dapat memberi nama apa saja yang Anda inginkan.

Dan terakhir, ini adalah kebijakan HANYA yang Anda perlukan ketika harus menekan permintaan kata sandi karena sekali lagi, ia melakukannya secara global.

pengguna55572
sumber
Ini juga berfungsi pada Fedora ketika Anda mengganti admingrup dengan wheel. Terima kasih!
Kenny Rasschaert
3
Bisakah seseorang menggambarkan bagaimana tepatnya ini akan "merusak" sistem?
Mehrdad
3
Ya silahkan. Bagaimana ini akan merusak sistem? Bukan ini! Sesuatu yang bodoh yang Anda lakukan setelah ini akan merusak sistem, tetapi bukan ini! Ini memungkinkan Anda untuk melakukan apa saja pada host tanpa kata sandi. Jika Anda melakukan sesuatu yang bodoh, Anda akan merusak sistem. Jika Anda harus memasukkan kata sandi dan Anda melakukan sesuatu yang bodoh, Anda akan merusak sistem. Ini, per-se, hanya membuatnya sedikit lebih mudah untuk melakukan sesuatu yang bodoh.
dangonfast
1
@ jeckyll2hide Baca CATATAN - ini menjelaskan mengapa OP memilih [Install package file]. Entah Anda tidak setuju dengan ini dan CATATAN memerlukan hasil edit yang sama, atau hasil edit Anda tidak valid dan harus dibatalkan.
bcbc
1
@prusswan dapat Anda gunakan Identity=unix-user:scottuntuk hanya mengizinkan pengguna "scott" untuk melakukan tindakan. Juga jika Anda hanya ingin mengizinkan tindakan tertentu, Anda dapat grep / var / log / auth.log dan polkitd akan menampilkan nama lengkap polkit yang Anda coba ketika Anda diminta kata sandi Anda. cat /var/log/auth.log | grep polkitdakan memberi Anda daftar yang cukup cepat
Scott
8

Anda dapat membuat .pkla, baik all in one atau couple berdasarkan grup aksi, tidak masalah.

Untuk referensi lihat di / usr / share / polkit-1 / action, buka yang tertarik pada editor teks untuk mendapatkan id tindakan.

Sejauh .pkla atau 2, saya menemukan tempat terbaik untuk menempatkan mereka di sini, itu akan dilindungi dari setiap pembaruan

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

Jadi misalnya di sini adalah yang utama saya, bernama package-manager.pkla meskipun meluas sedikit lebih jauh dari sekedar kebijakan manajemen paket

[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

Perhatikan bahwa mulai 12,04 grup yang digunakan untuk pengguna "admin" harus diubah menjadi sudo, yaitu.

Identity=unix-group:sudo

Perhatikan juga bahwa tindakan dapat dirangkai menjadi satu per bagian, tanpa spasi, gunakan a; di antara id

doug
sumber
Sepertinya Anda membuat pengaturan untuk setiap program secara individual. Itu agak membosankan, terutama jika saya menginstal beberapa program lain yang ingin menggunakan PolicyKit. Saya mencari cara untuk membuat perubahan konfigurasi global yang memengaruhi segalanya.
Scott Severance
1
Belum pernah melihat cara apa pun untuk mempengaruhi 'secara global', jangan percaya itulah cara policykit bekerja, ada seperangkat kebijakan per tindakan id
doug
0

Salah satu opsi, jika Anda tahu apa yang Anda lakukan, adalah menonaktifkan paket kebijakan sepenuhnya.

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

viksit
sumber
1
Ini menghapus terlalu banyak paket penting, seperti network-manager, gnome-control-centerdan banyak lagi. Apakah ada cara yang lebih baik?
Suncatcher