Я устанавливаю несколько ubuntu
ящиков и использую opscode chef
в качестве инструмента настройки. Было бы довольно легко установить открытые ключи для каждого пользователя на каждом из этих серверов и отключить аутентификацию по паролю.
Тем не менее, пользователи также должны иметь sudo
привилегии, для которых по умолчанию требуется пароль.
Если я хочу использовать открытые ключи пользователей в качестве метода управления доступом и разрешить sudo
привилегии пользователей , означает ли это, что я должен также настроить пользователей с помощью NOPASSWD: ALL
in visduo
, или есть способ, которым пользователь может изменить свой собственный пароль, если они есть только аутентификация с открытым ключом?
man sudoers
выдаст информацию о том, что некоторые команды могут запускаться с помощью sudo без необходимости ввода пароля пользователя. Вы даже можете добавить шеллскрипт в / etc / sudoers, который позволил бы установить для каждого пользователя параметр «self-password» без необходимости предварительного пароля.NOPASSWD: ALL
, членами которой являются члены команды. Если вы можете предложить лучшее решение, пожалуйста, опубликуйте его как ответ.Ответы:
Sudo, в его наиболее распространенной конфигурации, требует, чтобы пользователь вводил свой пароль. Как правило, пользователь уже использовал свой пароль для аутентификации в учетной записи, и повторный ввод пароля является способом подтвердить, что законный пользователь не покинул свою консоль и был захвачен.
В вашей настройке пароль пользователя будет использоваться только для аутентификации в sudo. В частности, если скомпрометирован SSH-ключ пользователя, злоумышленник не сможет повысить привилегии root на сервере. Злоумышленник может внедрить регистратор ключей в учетную запись, но этот регистратор ключей может быть обнаружен другими пользователями и даже может отслеживаться автоматически.
Пользователь обычно должен знать свой текущий пароль, чтобы изменить его на другой пароль.
passwd
Программа проверяет это (он может быть настроен не, но это не полезно или вообще желательно в вашем сценарии). Однако root может изменить любой пароль пользователя, не зная старого; следовательно, пользователь с полномочиями sudo может изменить свой пароль, не вводя его вpasswd
командной строке, запустивsudo passwd $USER
. Еслиsudo
настроен запрос пароля пользователя, то пользователь должен вsudo
любом случае ввести пароль .Вы можете отключить аутентификацию по паролю выборочно. В вашей ситуации вы бы отключили аутентификацию по паролю в ssh и, возможно, в других сервисах. Большинство служб в большинстве современных устройств (включая Ubuntu) используют PAM для настройки методов проверки подлинности. В Ubuntu файлы конфигурации PAM находятся в
/etc/pam.d
. Чтобы отключить аутентификацию по паролю, закомментируйтеauth … pam_unix.so
строку в/etc/pam.d/common-auth
. Кроме того, убедитесь, что у вас естьPasswordAuthentication no
в/etc/ssh/sshd_config
встроенном в парольной аутентификации отключить Sshd в.Вы можете разрешить некоторым администраторам входить в систему с паролем или разрешить аутентификацию по паролю на консоли. Это возможно с PAM (это довольно гибко), но я не могу сказать вам, как у меня в голове; задать отдельный вопрос, если вам нужна помощь.
источник
sudo passwd
что изменили бы пароль для текущего пользователя, а не для пользователя sudo?sudo
может изменить свой собственный пароль. Точная команда на самом деле не имеет значения, но, если говорить более подробно, это будетsudo passwd bob
гдеbob
имя пользователя или что-то подобное. Без аргументовsudo passwd
действительно изменил бы пароль для root.Вы можете использовать модуль pam_ssh_agent_auth . Это довольно просто скомпилировать, а затем просто добавить запись
до других
auth
(илиinclude
) записей в/etc/pam.d/sudo
а также
к
/etc/sudoers
(черезvisudo
).Теперь каждый пользователь может проходить аутентификацию
sudo
через (перенаправленного или локального) агента SSH или свой пароль. Возможно, стоит попросить пользователей использовать их такssh-add -c
, чтобы каждыйsudo
звонок по крайней мере требовал подтверждения.источник
Да, это невероятно небезопасно, а также позволяет пользователю получить доступ к паролям других пользователей, но, поскольку у них есть sudo, вы мало что можете сделать.
По сути, вы делаете следующее:
$ sudo -i
Теперь мы корень. У нас есть доступ ко всему.
# passwd $username
$ username может быть любым именем пользователя.
Бум, пароль изменен. Опять же, невероятно небезопасно, потому что вы можете изменить кого угодно, но это работает, но это работает. Я не рекомендую это, а скорее предлагаю этот ответ как пример того, чего не следует делать.
источник
sudo -i
без текущего пароля пользователя.sudo bash
не менее, может быть без пароля, учитывая, что настройки в/etc/sudoers
файле. Я думаю, что @jrg, как уже говорилось, больше фокусируется на проблеме безопасности с sudo здесьsudo -i
, вы можете сразу перейти кsudo passwd $username
@Miro, вам не нужно знать текущий пароль пользователя. Вам нужно знать только пароль пользователя root, чтобы использовать sudoСмысл пароля состоит в том, чтобы гарантировать, что хакеры, которые получают ключ пользователя или находят необслуживаемый терминал, не могут получить root-доступ. По этой причине я бы не рекомендовал ни одного решения, связанного с sudo без пароля.
Я предлагаю вам держать это просто: возможно , по электронной почте пользователю пароль по умолчанию с строгие инструкции , чтобы изменить его как можно скорее, или же вставить скрипт в их
.profile
или.login
или что - то такое , что требует нового пароля на их первом входе в систему . Он может отключить себя после завершения, и вы можете использоватьexpect
для ввода существующего пароля, чтобы они никогда не узнали его.источник
> Это должно позволить вам иметь пользователей, которые могут войти в систему только с помощью открытых ключей и не могут использовать пароли для входа в систему. Однако он будет вынужден сменить пароль при первом входе в систему ... но без необходимости заранее сообщать ему какой-нибудь фиктивный пароль ... Пользователям будет просто предложено сбросить пароль, и впоследствии они смогут использовать его только для sudo но не сможет войти (ssh), используя этот пароль. Обратите внимание, что хитрость здесь заключается в том, чтобы не сообщать пользователям какой-нибудь фиктивный пароль, который они затем должны будут ввести во время входа в систему, как только им потребуется изменить свой пароль ... В оболочке Nut нет связи от администратора (root) фактическому пользователю требуется.
источник