Використовуйте один пароль для адміністрування та інший для входу в систему


10

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


1
Чому б просто не зробити два рахунки, один для звичайного використання, а інший дозволено використовувати sudo.
Луїс Альварадо

мені це не потрібно лише в одному обліковому записі
Варун Шрідхаран

Для чого вам потрібно це один обліковий запис? Ви можете створити окремий обліковий запис з доступом до sudo, але без окремої домашньої папки, а потім додати цього користувача до тієї ж групи, що і звичайний користувач, і налаштувати його на використання тієї самої домашньої папкиsudo usermod -d /path/to/new/home
Warren Hill

@SVarun Я оновив свою відповідь кроками, які працюють для мене з моменту останнього коментаря. Чи можете ви це перевірити і повідомити мені, чи працює він для вас?
Аарон Д

Відповіді:


16

Існує спосіб зробити це, змінивши параметри PAM (Pluggable Authentication Module) для служби sudo. Робіть це з великим ризиком для вашої машини - не просто копіюйте та вставляйте, якщо ви не розумієте, що робить команда, а завжди тримайте кореневий термінал відкритим - тестуйте тестовий тест! - перед тим, як вийти з системи, на випадок, якщо вам доведеться щось повернути назад і виправити щось.

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

Якщо ви вирішили продовжувати роботу, вам потрібно буде встановити новий модуль PAM. pam_pwdfile використовує файл аутентифікації старого стилю / etc / passwd, що чудово підходить для використання різних паролів для різних служб. Він не забезпечує розпізнавання облікового запису - ви можете створювати пари імен користувачів / паролів для користувачів, які не існують у системі. Оскільки ми будемо використовувати його для sudo, це не має значення, оскільки ми просто дозволимо sudo перевірити, чи існує акаунт звичайним чином.

sudo apt-get install libpam-pwdfile

Я також рекомендую захопити зручний редактор файлів htpasswd. Бенджамін Швайзер створив зручний редактор у python, який добре працює. Візьміть його з http://benjamin-schweizer.de/htpasswd_editor.html та встановіть його залежність:

sudo apt-get install python-newt

Створіть файл формату htpasswd за допомогою інструменту - sudo python htpasswd_editor sudo.passwd. Введіть ім’я користувача та пароль, використовуючи те саме ім’я користувача, яке ви будете використовувати для sudo - по одному для кожного користувача, який ним буде користуватися. Скопіюйте його кудись захищено (під час тестування цього я поміщую його в /etc/sudo.passwd) і зробіть його нечитабельним для постійних користувачів: chmod 660 /etc/sudo.passwdяк root.

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

Нарешті, відредагуйте /etc/pam.d/sudoфайл. Додайте наступний рядок над іншими @include ...рядками:

auth    required    pam_pwdfile.so pwdfile /etc/sudo.passwd

Очевидно, замінюючи останній аргумент на шлях до створеного файлу htpasswd. Прокоментуйте наступний рядок: #@include common-authщоб переконатися, що він використовує новий метод аутентифікації.

Слово обережності - вам потрібно буде відредагувати /etc/pam.d/sudoфайл із кореневого терміналу. Не закривайте це без тестування! Якщо це зробити, ви, можливо, не зможете знову увійти (якщо ви щось зламали), і вам доведеться завантажитися з диска відновлення, щоб відновити вашу систему. Перевірте тест перед виходом із системи, відкривши новий термінал і спробуйте використовувати sudo. Ви повинні виявити, що він більше не працюватиме з вашим звичайним паролем для входу, а натомість потрібен новий пароль, який ви використовували під час створення файлу passwd. Щоб оновити файл, знову використовуйте корисний інструмент.


мені потрібно бігти в Ubuntu чи є інший спосіб
Варун Шрідхаран

Я оновив відповідь - я перевірив цей метод, і він робить те, що ви хочете, якщо я правильно зрозумів ваше запитання. Будь ласка, спробуйте.
Аарон Д

1
+50 щедроти. @AaronD ваша відповідь вирішила моє запитання . Дякую!!!
Robbie Wxyz

Я радий, що ти знайшов це корисним!
Аарон Д

1

Є набагато простіше рішення оригінального питання, і це те, як я запускаю:

  • створити одного не-адміністратора
  • створити користувача адміністратора

Завжди входите в систему як користувач, який не є адміністратором, і коли користувачеві без адміністрування потрібно робити що-небудь "адміністрування", просто:

fab-user@fab-ux:/media/Data/Temp
$ su - fab-root 
Password: 
fab-root@fab-ux:~
$ sudo smartctl --all /dev/sdc

Так, це не те, що ви хочете, але це те, що вам насправді потрібно

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.