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

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

10
задан 17 April 2015 в 06:58

2 ответа

Есть способ сделать это, переопределив настройки 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. Чтобы обновить файл, снова воспользуйтесь полезным инструментом.

16
ответ дан 17 April 2015 в 06:58

Есть гораздо более простое решение исходного вопроса и то, как я запускаю:

  • создайте одного пользователя без права администратора
  • создайте пользователя без права администратора

Всегда входите в систему как пользователь без права администратора и всякий раз, когда пользователю без права администратора нужно сделать что-нибудь "с правами администратора", только:

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

Да, это не то, что вам нужно , но это то, что вам на самом деле нужно

1
ответ дан 17 April 2015 в 06:58

Другие вопросы по тегам:

Похожие вопросы: