Используйте один пароль для администрирования и другой для входа в систему
10
Как я могу дать пользователю один пароль для обычного использования при входе в систему и другой пароль для системного администрирования и доступа sudo ? Я хочу, чтобы у одного пользователя было два пароля.
Почему бы просто не создать 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 ...строками:
Очевидно, заменив последний аргумент на путь к созданному вами файлу htpasswd. Закомментируйте следующую строку: #@include common-authубедитесь, что используется новый метод аутентификации.
Слово предостережения - вам нужно будет отредактировать /etc/pam.d/sudoфайл из корневого терминала. Не закрывайте это без тестирования! Если вы это сделаете, вы не сможете войти в систему (если вы что-то сломали), и вам придется загружаться с диска восстановления, чтобы восстановить вашу систему. Проверьте перед выходом из системы, открыв новый терминал, и попробуйте использовать sudo. Вы должны обнаружить, что он больше не будет работать с вашим обычным паролем для входа в систему, а вместо этого потребует новый пароль, который вы использовали при создании файла passwd. Чтобы обновить файл, снова используйте полезный инструмент.
Я обновил ответ - я проверил этот метод, и он делает то, что вы хотите, если я правильно понял ваш вопрос. Пожалуйста, попробуйте это.
Аарон Д
1
+50 награда @AaronD твой ответ решил мой вопрос . Спасибо!!!
Робби Wxyz
Я рад, что вы нашли это полезным!
Аарон Д
1
Существует гораздо более простое решение исходного вопроса, и это способ, которым я бегу:
создать одного пользователя без прав администратора
создать пользователя с правами администратора
Всегда входите в систему как пользователь без прав администратора, и всякий раз, когда пользователь без прав администратора должен делать что-либо «adminy», просто:
sudo usermod -d /path/to/new/home
Ответы:
Есть способ сделать это путем переопределения настроек PAM (Pluggable Authentication Module) для службы sudo. Делайте это с большим риском для вашей машины - не просто копируйте и вставляйте, если вы не понимаете, что делает команда, и всегда держите корневой терминал открытым - тестовый тестовый тест! - перед выходом из системы, на случай, если вам нужно вернуться и что-то исправить.
Я рекомендую прочитать некоторую информацию о том, как работает PAM, чтобы вы знали, что делать, если он сломался. Я также рекомендую большинству пользователей подходить к этой проблеме под другим углом (создавая отдельную учетную запись пользователя для администрирования), потому что решение может быть подвержено атакам хеш-таблиц на ваш пароль, если вы неправильно установили свои разрешения.
Если вы решили продолжить, вам нужно установить новый модуль PAM. pam_pwdfile использует для аутентификации файл типа / etc / passwd старого типа, который отлично подходит для использования разных паролей для разных сервисов. Он не обеспечивает распознавания учетной записи - вы можете создавать пары имя пользователя / пароль для пользователей, которых нет в системе. Поскольку мы будем использовать его для sudo, это не имеет значения, так как мы просто позволим sudo проверить, что учетная запись существует обычным способом.
Я также рекомендую взять удобный редактор файлов htpasswd. Бенджамин Швейцер создал удобный редактор на python, который работает хорошо. Возьмите его с http://benjamin-schweizer.de/htpasswd_editor.html и установите его зависимость:
Создайте файл формата htpasswd с помощью инструмента -
sudo python htpasswd_editor sudo.passwd
. Введите имя пользователя и пароль, используя то же имя, которое вы будете использовать для sudo - по одному для каждого пользователя, который будет его использовать. Скопируйте его в безопасное место (при тестировании я помещаю его в /etc/sudo.passwd) и делаю его нечитаемым для обычных пользователей:chmod 660 /etc/sudo.passwd
как root.Убедитесь, что файл принадлежит пользователю root и не доступен для чтения другим пользователям. Это уязвимость, так как файл содержит хешированный пароль, и если он доступен для чтения или записи другим пользователям, это сильно нарушает вашу безопасность. Именно по этой причине я не рекомендую этот метод на машине, которая должна быть защищена.
Наконец, отредактируйте
/etc/pam.d/sudo
файл. Добавьте следующую строку над другими@include ...
строками:Очевидно, заменив последний аргумент на путь к созданному вами файлу htpasswd. Закомментируйте следующую строку:
#@include common-auth
убедитесь, что используется новый метод аутентификации.Слово предостережения - вам нужно будет отредактировать
/etc/pam.d/sudo
файл из корневого терминала. Не закрывайте это без тестирования! Если вы это сделаете, вы не сможете войти в систему (если вы что-то сломали), и вам придется загружаться с диска восстановления, чтобы восстановить вашу систему. Проверьте перед выходом из системы, открыв новый терминал, и попробуйте использоватьsudo
. Вы должны обнаружить, что он больше не будет работать с вашим обычным паролем для входа в систему, а вместо этого потребует новый пароль, который вы использовали при создании файла passwd. Чтобы обновить файл, снова используйте полезный инструмент.источник
Существует гораздо более простое решение исходного вопроса, и это способ, которым я бегу:
Всегда входите в систему как пользователь без прав администратора, и всякий раз, когда пользователь без прав администратора должен делать что-либо «adminy», просто:
Да, это не то, что вы хотите, но это то, что вам действительно нужно
источник