Чи можна використовувати ключовий файл як пароль для sudo?


11

Контекст

Я люблю публічно працювати на своєму ноутбуці, але також люблю використовувати судо без пароля. Виходячи з того, що я зараз знаю, я використовував би NOPASSWDваріант у своєму sudoersфайлі, але, звичайно, кожен міг би використовувати судо як хоче.

Одна важлива думка, яка мені спадає на думку, - це те, що програми блокування існують. Однак я вважаю за краще використовувати флешку (і використовувати її просто для sudo), тому що (1) це швидше, (2) простіше, ніж введення мого пароля, і (3) я не переймаюся тим, щоб люди отримували доступ до мого вмісту, а також не робили сумлінних речі: ноутбук буде публічним серед інших людей, і єдина інтелектуальна власність на моєму ноутбуці - це дуже базовий проект Angular.

Крім того, я та інші можуть бажати запобігти неправомірному використанню sudo на комп’ютері, який не працює із середовищем X або Wayland. Моя поточна робота потребує сучасного веб-браузера, але якщо я колись матиму можливість не використовувати X та просто використовувати мультиплексор, я це роблю - мій ноутбук трохи старий і повільний.

Питання

Що я хотів би зробити, - це покласти ключовий файл на флешку і просто підключити флешку, коли я за ноутбуком, і вийняти її, коли я відходжу від неї.

Ось ось три мої питання, що випливають із цієї проблеми:

  1. Це можливо з судо, як є?
  2. Якщо ні, чи зможу я написати програму, яка дозволяє мені це робити?
  3. Якщо так, то яка мова може бути найкращою для написання цієї програми?

(4. [Можливо, сторонне запитання]. Чи може цей пакет бути окремим чи він повинен бути виделкою судо?)

Примітка

Якщо це доречно, у моїй установці є Arch Linux з bspwm, без середовища на робочому столі. Більшість моєї роботи - це веб-розробка в urxvt / vim та перевірка її за допомогою Chrome.


1
Чи відповідає pam_usb вашим потребам?
StrongBad

@StrongBad О ... так. Схоже, це не одразу робиться просто судо, а вхід і судо разом, але це для мене не має значення. Спасибі!
Гейдж Соррелл

2
Гаразд, для уточнення, ви хочете постійно входити в систему і просто не дозволяти людям використовувати судо під вашим обліковим записом.
StrongBad

@StrongBad Правильно.
Gage Sorrell

Можливо, ви зможете щось налаштувати, використовуючи rootpwпрапор у /etc/sudoersфайлах та налаштувавши pam_usbдля входу в систему.
RubberStamp

Відповіді:


3

Я не впевнений, що розумію, чому NOPASSWDопція не відповідає всім вашим вимогам, але якщо ви хочете вимагати наявності флешки, я можу придумати щось, що може зробити майже те, що ви шукаєте.

Це скоріше обхід, але ви можете створити місцевого адміністративного користувача, скажімо superuser, і надати цьому користувачеві sudoправа без пароля , тобто додати наступний рядок у /etc/sudoersфайл:

superuser ALL=(ALL) NOPASSWD:ALL

Потім ви можете відключити вхід пароля та налаштувати автентифікацію SSH лише для ключів для цього користувача, тобто запустити passwd -l superuserта додати наступну строфу до свого /etc/ssh/sshd_config:

Match user superuser
PasswordAuthentication no

Потім створіть SSH-пару ключів для цього користувача. Додайте відкритий ключ /home/superuser/.ssh/authorized_keysі поставте приватний ключ на флешку. Потім, коли ви хочете скористатися superuserобліковим записом, підключіть флеш-накопичувач і ssh в superuserобліковий запис, використовуючи приватний ключ. І вуаля! Тепер у вас немає пароля sudoдля вашого користувача. Звичайно, вам все одно доведеться вийти з сеансу оболонки, коли закінчите - відключення флешки буде недостатньо. Хоча я думаю, ви також можете налаштувати попередній гачок, щоб перевірити наявність приватного ключа та автоматично вийти, якщо його немає (або якщо він недійсний).


проста відповідь, щоб зрозуміти, чому ви можете це зробити. для цього сервера я намагаюсь повернутися, у мене є лише кореневий ключ, немає кореневого доступу до ssh, я заблокований у користувача ec2, який Sudo просить pw, у якого я не маю. Я scp'd мій кореневий ключ на сервері, тому я в ідеалі зараз хотів би використовувати цей ключ, щоб отримати доступ до sudo, тоді я можу виправити речі.
Брайан Томас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.