Как я могу дать пользователю один пароль для обычного использования при входе в систему и другой пароль для системного администрирования и доступа 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. Чтобы обновить файл, снова используйте полезный инструмент.
Существует гораздо более простое решение исходного вопроса, и это способ, которым я бегу:
Всегда входите в систему как пользователь без прав администратора, и всякий раз, когда пользователь без прав администратора должен делать что-либо «adminy», просто:
fab-user@fab-ux:/media/Data/Temp
$ su - fab-root
Password:
fab-root@fab-ux:~
$ sudo smartctl --all /dev/sdc
Да, это не то, что вы хотите, но это то, что вам действительно нужно