Як я можу дати користувачеві один пароль для звичайного використання під час входу та інший пароль для адміністрування системи та доступу до sudo ? Я хочу, щоб один користувач мав два паролі.
sudo usermod -d /path/to/new/home
Як я можу дати користувачеві один пароль для звичайного використання під час входу та інший пароль для адміністрування системи та доступу до sudo ? Я хочу, щоб один користувач мав два паролі.
sudo usermod -d /path/to/new/home
Відповіді:
Існує спосіб зробити це, змінивши параметри 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. Щоб оновити файл, знову використовуйте корисний інструмент.
Є набагато простіше рішення оригінального питання, і це те, як я запускаю:
Завжди входите в систему як користувач, який не є адміністратором, і коли користувачеві без адміністрування потрібно робити що-небудь "адміністрування", просто:
fab-user@fab-ux:/media/Data/Temp
$ su - fab-root
Password:
fab-root@fab-ux:~
$ sudo smartctl --all /dev/sdc
Так, це не те, що ви хочете, але це те, що вам насправді потрібно