Bisakah seseorang menggunakan keyfile sebagai kata sandi untuk sudo?

11

Konteks

Saya suka bekerja di depan umum di laptop saya, tetapi saya juga suka menggunakan sudo tanpa kata sandi. Berdasarkan apa yang saya ketahui sekarang, saya akan menggunakan NOPASSWDopsi dalam sudoersfile saya , tetapi tentu saja siapa pun dapat menggunakan sudo seperti yang mereka inginkan.

Satu pemikiran penting yang muncul di benak saya adalah bahwa program penguncian ada. Namun, saya lebih suka menggunakan flash drive (dan menggunakannya hanya untuk sudo) karena (1) lebih cepat, (2) lebih mudah daripada memasukkan kata sandi saya, dan (3) Saya tidak peduli dengan orang yang mengakses konten saya atau melakukan kejahatan. hal-hal: laptop akan berada di depan umum di sekitar orang lain, dan satu-satunya kekayaan intelektual di laptop saya adalah proyek Angular yang sangat dasar.

Selain itu, saya dan orang lain mungkin ingin mencegah penyalahgunaan sudo pada komputer yang tidak menjalankan lingkungan X atau Wayland. Pekerjaan saya saat ini membutuhkan browser web modern, tetapi jika saya pernah memiliki kesempatan untuk tidak menggunakan X dan hanya menggunakan multiplexer, saya melakukan itu - laptop saya agak tua dan lambat.

Pertanyaan

Apa yang ingin saya lakukan adalah meletakkan keyfile pada flash drive, dan cukup tancapkan flash drive ketika saya di laptop, dan keluarkan ketika saya menjauh darinya.

Jadi, inilah tiga pertanyaan saya yang berasal dari masalah ini:

  1. Apakah ini mungkin dengan sudo apa adanya?
  2. Jika tidak, apakah saya dapat menulis program yang memungkinkan saya melakukan ini?
  3. Jika demikian, bahasa apa yang paling baik untuk menulis program ini?

(4. [Mungkin pertanyaan asing] Mungkinkah paket ini terpisah atau apakah perlu garpu foro?)

Catatan

Jika itu relevan, pengaturan saya adalah Arch Linux dengan bspwm, tidak ada lingkungan desktop. Sebagian besar pekerjaan saya adalah pengembangan web di urxvt / vim dan memeriksanya dengan Chrome.

Gage Sorrell
sumber
1
Apakah pam_usb memenuhi kebutuhan Anda?
StrongBad
@Begitu Kuat Oh ... ya. Sepertinya tidak langsung melakukan sudo saja , dan melakukan login dan sudo bersama, tapi itu tidak masalah bagi saya. Terima kasih!
Gage Sorrell
2
Oke, untuk memperjelas, Anda ingin tetap masuk terus-menerus dan mencegah orang menggunakan sudo di akun Anda.
StrongBad
@ StrongBad Benar.
Gage Sorrell
Anda mungkin dapat mengonfigurasi sesuatu menggunakan rootpwflag di /etc/sudoersfile dan mengatur pam_usbuntuk login root.
RubberStamp

Jawaban:

3

Saya tidak yakin saya mengerti mengapa NOPASSWDopsi ini tidak memenuhi kebutuhan Anda dengan sendirinya, tetapi jika Anda ingin memerlukan kehadiran flash drive saya dapat memikirkan sesuatu yang hampir bisa melakukan apa yang Anda cari.

Ini lebih merupakan solusi, tetapi Anda bisa membuat pengguna administratif lokal, katakan superuser, dan memberikan sudohak tanpa kata sandi pengguna , yaitu menambahkan baris berikut ke /etc/sudoersfile Anda :

superuser ALL=(ALL) NOPASSWD:ALL

Anda kemudian dapat menonaktifkan login kata sandi dan mengkonfigurasi otentikasi SSH hanya kunci untuk pengguna itu, yaitu menjalankan passwd -l superuserdan menambahkan bait berikut ke Anda /etc/ssh/sshd_config:

Match user superuser
PasswordAuthentication no

Kemudian buat pasangan kunci SSH untuk pengguna ini. Tambahkan kunci publik ke /home/superuser/.ssh/authorized_keysdan letakkan kunci pribadi di flash drive Anda. Kemudian ketika Anda ingin menggunakan superuserakun, masukkan flash-drive Anda dan ssh ke superuserakun menggunakan kunci pribadi Anda. Dan voila! Anda sekarang memiliki kata sandi sudountuk pengguna Anda. Tentu saja Anda masih harus keluar dari sesi shell setelah selesai - mencabut flash drive tidak akan cukup. Meskipun saya kira Anda juga dapat mengatur kait prekomand untuk memeriksa kunci pribadi dan keluar secara otomatis jika tidak ada (atau jika tidak valid).

igal
sumber
jawaban mudah untuk menjelaskan mengapa Anda mungkin ingin melakukan ini. untuk server ini saya mencoba untuk masuk kembali, saya hanya memiliki kunci root, tidak ada akses root ssh, saya terkunci ke dalam pengguna-ec2, yang sudo meminta pw saya tidak punya. Saya scp'd kunci root saya ke server, jadi saya idealnya sekarang ingin menggunakan kunci ini untuk mendapatkan akses sudo, maka saya dapat memperbaiki hal-hal.
Brian Thomas