Как я могу дать пользователю один пароль для обычного использования при входе в систему и другой пароль для системного администрирования и sudo access ? Я хочу, чтобы у одного пользователя было два пароля.
Есть способ сделать это, переопределив настройки PAM (подключаемый модуль аутентификации) для службы 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 ...
lines:
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
Да, это не то, что вам нужно , но это то, что вам на самом деле нужно