Используйте один пароль для администрирования, а другой для входа в систему

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

Существует способ сделать это, переопределив параметры PAM (подключаемый модуль аутентификации) для службы sudo. Сделайте это с большим риском для своей машины – не просто скопируйте и вставьте, если вы не поймете, что делает команда, и всегда держите открытый терминал root – тестовый тестовый тест! – прежде чем выходить из системы, если вам нужно вернуться и что-то исправить.

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

Если вы решите продолжить работу, вам нужно будет установить новый модуль PAM. pam_pwdfile использует файл типа old / style / etc / passwd для аутентификации, который отлично подходит для использования разных паролей для разных служб. Он не обеспечивает распознавания учетной записи – вы можете создавать пары имени пользователя / пароля для пользователей, которых нет в системе. Поскольку мы будем использовать его для sudo, это не имеет значения, поскольку мы просто разрешим sudo проверять учетную запись обычным способом.

 sudo apt-get install libpam-pwdfile 

Я также рекомендую захватить удобный редактор файлов htpasswd. Benjamin Schweizer создал удобный редактор на 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.

** Убедитесь, что файл принадлежит корневому и нечитаемому для других пользователей. ** Это уязвимость, поскольку файл содержит хешированный пароль, и если он доступен для чтения или записи другими пользователями, это сильно нарушает вашу безопасность. Именно по этой причине я не рекомендую этот метод на машине, которая должна храниться в безопасности.

Наконец, отредактируйте файл /etc/pam.d/sudo . Добавьте следующую строку над другими @include ... :

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

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

** Осторожно ** – вам нужно будет отредактировать файл /etc/pam.d/sudo с корневого терминала. Не закрывайте это без тестирования! Если вы это сделаете, вы не сможете войти в систему (если вы что-то сломали), и вам придется загрузиться с диска восстановления для восстановления вашей системы. Перед тем, как выйти из системы, откройте новый терминал и попробуйте использовать sudo . Вы должны обнаружить, что он больше не будет работать с вашим обычным паролем входа, но вместо этого требует новый пароль, который вы использовали при создании файла passwd. Чтобы обновить файл, снова используйте полезный инструмент.