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

10

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

Варун Шридхаран
источник
1
Почему бы просто не создать 2 учетных записи, одну для обычного использования, а другую разрешить использовать 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 твой ответ решил мой вопрос . Спасибо!!!
Робби Wxyz
Я рад, что вы нашли это полезным!
Аарон Д
1

Существует гораздо более простое решение исходного вопроса, и это способ, которым я бегу:

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

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

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

Да, это не то, что вы хотите, но это то, что вам действительно нужно

Fabby
источник