Может ли пользователь linux изменить свой пароль, не зная текущего пароля?

Я создаю несколько ящиков ubuntu и используя шеф- chef opscode в качестве инструмента настройки. Было бы довольно просто установить открытые ключи для каждого пользователя на каждом из этих серверов и отключить аутентификацию паролей.

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

Если я хочу использовать открытые ключи пользователей как метод управления доступом и разрешать привилегии пользователей sudo , значит ли это, что я должен также настроить пользователей с помощью NOPASSWD: ALL в visduo или есть способ, который пользователь может изменить их собственный пароль, если они имеют только аутентификацию с открытым ключом?

  • Странное поведение значения терминала PS1 в Mac против Ubuntu
  • / etc / fstab устанавливает rw файловую систему как доступную только для чтения
  • Заблокировать папку при запуске cron
  • Панель Gnome не содержит значков приложений, меню чата и меню питания
  • Как установить Nautilus в качестве файлового менеджера по умолчанию в элементарной ОС
  • Ubuntu remaster создает слишком маленькие ISO
  • Поведение ping с частичной потерей пакетов на Ubuntu
  • Добавление уровней выполнения в ubuntu
  • 5 Solutions collect form web for “Может ли пользователь linux изменить свой пароль, не зная текущего пароля?”

    Sudo, в своей наиболее общей конфигурации, требует, чтобы пользователь вводил свой пароль. Как правило, пользователь уже использовал свой пароль для аутентификации в учетной записи, а повторный ввод пароля – это способ подтвердить, что законный пользователь не отказался от своей консоли и был уволен.

    В вашей настройке пароль пользователя будет использоваться только для аутентификации в sudo. В частности, если пользовательский SSH-ключ взломан, злоумышленник не сможет поднять на корневые привилегии на сервере. Злоумышленник может установить регистратор ключей в учетную запись, но этот регистратор ключей будет обнаружен другими пользователями и даже может быть просмотрен автоматически.

    Обычно пользователь должен знать свой текущий пароль, чтобы изменить его на другой пароль. Программа passwd проверяет это (его можно настроить не для, но это не полезно или вообще не желательно в вашем сценарии). Однако root может изменить пароль любого пользователя, не зная старого; поэтому пользователь с полномочиями sudo может изменить свой собственный пароль, не вводя его в приглашении passwd , запустив sudo passwd $USER . Если sudo настроен на то, чтобы потребовать пароль пользователя, пользователь должен был ввести пароль в sudo любом случае.

    Вы можете выборочно отключить аутентификацию по паролю. В вашей ситуации вы отключите аутентификацию пароля в ssh и, возможно, в других службах. Большинство служб в большинстве современных унифицированных устройств (включая Ubuntu) используют PAM для настройки методов аутентификации. На Ubuntu файлы конфигурации PAM /etc/pam.d в /etc/pam.d . Чтобы отключить аутентификацию паролей, закомментируйте строку auth … pam_unix.so в /etc/pam.d/common-auth . Кроме того, убедитесь, что PasswordAuthentication no в /etc/ssh/sshd_config чтобы отключить встроенную аутентификацию пароля sshd.

    Возможно, вы захотите, чтобы некоторые административные пользователи вошли в систему с паролем или разрешили аутентификацию на консоли. Это возможно с помощью PAM (довольно гибкий), но я не мог рассказать вам, как с головы до головы; задайте отдельный вопрос, если вам нужна помощь.

    Вы можете использовать модуль pam_ssh_agent_auth . Это довольно просто скомпилировать, а затем просто добавить запись

     auth sufficient pam_ssh_agent_auth.so file=~/.ssh/authorized_keys 

    перед другими записями auth (или include ) в /etc/pam.d/sudo

    а также

     Defaults env_keep += "SSH_AUTH_SOCK" 

    в /etc/sudoers (через visudo ).

    Теперь каждый пользователь может либо аутентифицироваться на sudo через (пересылаемый или локальный) SSH-агент или их пароль. Возможно, было бы разумно попросить ваших пользователей использовать ssh-add -c , чтобы каждый вызов sudo , по крайней мере, требовал некоторого подтверждения.

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

    В основном, вы делаете следующее:

    $ sudo -i

    Теперь мы корень. У нас есть доступ ко всему.

    # passwd $username

    $ username может быть именем пользователя.

    Введите новый пароль UNIX:

    Повторите новый пароль UNIX: пароль успешно обновлен.

    Бум, пароль изменен. Опять же, невероятно небезопасно, потому что вы можете изменить anyones, но он работает, но он работает. Я не рекомендую этого, но скорее предлагаю этот ответ в качестве примера того, что не делать.

    Точка пароля должна гарантировать, что хакеры, которые получают ключ пользователя или находят автоматический терминал, не могут получить доступ root. По этой причине я не стал бы рекомендовать какое-либо решение, которое подразумевало бы sudo без пароля.

    Я предлагаю вам сделать это простым: возможно, напишите пользователю пароль по умолчанию со строгими инструкциями, чтобы изменить его как можно скорее, или вставить скрипт в их .profile или .login или что-то такое, что он требует нового пароля при первом входе в систему. Он может отключить себя по завершении, и вы можете использовать expect ввода существующего пароля, чтобы они никогда не знали об этом.

     #% useradd -g somegroup someuser #% usermod -p "" someuser #% chage -d 0 someuser #% sed -i "s/^.*PasswordAuthentication .*/PasswordAuthentication no/" /etc/sshd/sshd_config #% /sbin/service sshd restart #% cp -r ~/.ssh `echo ~someuser` #% chown -R someuser `echo ~someuser`/.ssh #% chgrp -R somegroup `echo ~someuser`/.ssh #% echo "%somegroup ALL=(ALL) ALL" >> /etc/sudoers 

    > Это должно позволить вам иметь пользователей, которые могут войти только с использованием открытых ключей и не могут использовать пароли для входа. Однако он будет вынужден сменить пароль при первом входе в систему … но без необходимости говорить ему парочку паролей впереди … Пользователей просто попросят сбросить пароль, и впоследствии они смогут использовать его только для sudo но не сможет войти в систему (ssh), используя этот пароль. Обратите внимание, что трюк здесь заключается в том, чтобы не сообщать пользователям какой-то фиктивный пароль, который им тогда потребуется, чтобы вводить во время входа в систему, как только они должны будут изменить свой пароль … В оболочке ореха не сообщается от администратора (root) для фактического пользователя.

    надеюсь, это поможет

    Interesting Posts

    установить -xv поведение в ksh vs bash

    Как изменить информацию о терминале tmux (в правом нижнем углу), называемую статусом – право на имя пользователя или хост?

    HISTTIMEFORMAT не показывает правильную дату и время для истории

    Доступ к прокси-серверу ssh с другого хоста

    Цепочка команд терминала Linux

    Не удается получить доступ к веб-сайту из Firefox.

    Как я могу настроить систему, не отвечающую на эхо-запросы ICMPv6, отправленные на широковещательный адрес

    Для чего нужен «.xsession»?

    Сохраняйте вывод arp в терминале в текстовый файл каждую минуту, используя crontab

    Как остановить автоматическое обновление postgres, mongodb и RHE7?

    Cryptsetup: отсутствует LVM (в системе без LVM)

    CentOS 7 – переименование сетевого интерфейса без перезагрузки

    В чем разница между `su“ и` su -login`?

    Что означают цифры в строке «@@» на выходе diff?

    Как выполнить какой-либо сценарий оболочки до приостановки VM?

    Linux и Unix - лучшая ОС в мире.