Linux скрипт смены пароля

Обновлено: 02.07.2024

В Linux вы можете изменить пароль учетной записи пользователя с помощью passwd утилиты.

Зашифрованные пароли пользователей, а также другая информация, связанная с паролями, хранятся в /etc/shadow файле.

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

При смене пароля убедитесь, что вы используете надежный и уникальный пароль.

Надежный пароль - это самое важное, что вы можете сделать для защиты своей учетной записи. Часто надежный пароль содержит не менее 16 символов и содержит как минимум одну заглавную букву, одну строчную букву, одну цифру и один специальный символ.

В целях безопасности рекомендуется регулярно обновлять пароль и использовать уникальный пароль для каждой учетной записи.


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

Чтобы изменить пароль своей учетной записи, введите passwd команду без аргументов:

Вам будет предложено ввести текущий пароль. Если пароль правильный, команда попросит вас ввести и подтвердить новый пароль.

Пароли не отображаются на экране при их вводе.

При следующем входе в систему используйте новый пароль.


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

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

В следующем примере предполагается, что вы вошли в систему как пользователь с привилегиями sudo.

Чтобы изменить пароль другой учетной записи пользователя, введите passwd команду, а затем имя пользователя. Например, чтобы изменить пароль пользователя с именем baks , выполните следующую команду:


Вам будет предложено ввести и подтвердить новый пароль:


В случае успеха команда напечатает что-то вроде этого:


Принудительно изменить пароль при следующем входе в систему

По умолчанию пароли никогда не истекают. Чтобы заставить пользователя изменить свой пароль при следующем входе в систему, используйте passwd команду с --expire параметром, за которой следует имя пользователя:


Приведенная выше команда немедленно истечет пароль пользователя.


Как только пользователь установит новый пароль, соединение будет закрыто.


Вывод

В этом уроке вы узнали, как изменить пароли пользователя и как установить срок действия пароля.

Вы можете найти больше информации о команде passwd, набрав man passwd в своем терминале или посетив страницу руководства Linux passwd .

Операционная система Linux изначально проектировалась как многопользовательская и безопасная система. Поэтому здесь у каждого пользователя есть пароль. Полномочия пользователей и способ их аутентификации заложен на уровне системы.

Иногда возникает необходимость изменить пароль в Linux. Во-первых, это может произойти, если вы забыли пароль или просто хотите его поменять. Другая же причина - это безопасность. Пароли нужно менять по крайней мере несколько раз в год, и, если вы системный администратор компании, важно заставить ваших пользователей тоже менять пароли время от времени, и у Linux для этого тоже есть инструменты. В этой статье мы рассмотрим, как поменять пароль в Linux.

Основы

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

Список пользователей в Linux хранится в файле /etc/passwd, вы можете без труда открыть его и посмотреть, пароли же выделены в отдельный файл - /etc/shadow. Этот файл можно открыть только с правами суперпользователя, и, более того, пароли здесь хранятся в зашифрованном виде, поэтому узнать пароль Linux не получиться, а поменять вручную будет сложно.

В большинстве случаев смена пароля выполняется с помощью утилиты passwd. Это очень мощная утилита, она позволяет не только менять пароль, но и управлять сроком его жизни. У неё такой синтаксис:

$ passwd опции пользователь

Рассмотрим опции, чтобы лучше ориентироваться в использовании утилиты:

  • -d - удалить пароль пользователя, после этого он не сможет войти
  • -e - сделать пароль устаревшим
  • -i - через сколько дней после того, как пароль устарел, отключить аккаунт, если пользователь не сменил пароль
  • -l - запретить пользователю входить в систему
  • -n - минимальное количество дней между сменами пароля
  • -S - отобразить информацию об аккаунте
  • -u - отменяет действие параметра -l
  • -x - максимальное количество дней, пока пароль можно использовать.
  • -w - количество дней, после которых нужно предупреждать пользователя о том, что надо сменить пароль.

Возможно, сейчас всё выглядит очень непонятно, но на примерах станет проще. Мы рассмотрим, зачем и в каких случаях нужно использовать все эти опции, чтобы сменить пароль в Linux. Переходим к практике.

Если вы забыли пароль и вам его надо не просто сменить, а сбросить, вам будут полезными эти две статьи:

Как сменить пароль пользователя

Вы можете сменить свой пароль, когда захотите. Для этого вам не нужно особых прав суперпользователя, только знать свой текущий пароль. Просто откройте терминал и выполните утилиту passwd без параметров:

passwd

Дальше необходимо ввести новый пароль - и готово, теперь он измеён. Он кодируетсятся с помощью необратимого шифрования и сохраняется в файле /etc/shadow Но заметьте, что вы не можете использовать здесь любой пароль. Система Linux заботится о том, чтобы пользователи выбирали достаточно сложные пароли. Если он будет очень коротким или будет содержать только цифры, вы не сможете его установить.

Общие требования для пароля такие: должен содержать от 6 до 8 символов, причём один или несколько из них должны относиться как минимум к двум из таких множеств:

  • Буквы нижнего регистра
  • Буквы верхнего регистра
  • Цифры от нуля до девяти
  • Знаки препинания и знак _

Теперь рассмотрим, как изменить пароль Linux для другого пользователя.

Как сменить пароль другого пользователя

Со своим паролем всё понятно, но если вы захотите поменять код для другого пользователя, то придётся вопользоваться правами суперпользователя. А во всём остальном процесс тот же:

sudo passwd user

Здесь user - это пользователь, для которого нужна смена пароля Linux. Требования для пароля такие же: вы не сможете установить слишком простой пароль.

Вы можете удалить пароль Linux для пользователя, тогда он не сможет войти в систему:

sudo passwd -d user

Как поменять пароль группы

Наверное вы видели в своей системе файл /etc/gshadow. Этот файл эквивалентен /etc/shadow, только содержат пароли для групп. Вы не можете войти от имени группы, но зато, зная её пароль, можете получить доступ к предоставляемым ею функциям в отдельной командной оболочке с помощью команды newgrp.

Для установки пароля на группу используется утилита очень похожая на passwd - gpasswd. Естественно, нам нужны права суперпользователя. Например:

sudo gpasswd disk

passwd1

Теперь попробуем получить полномочия группы:

passwd2

После ввода пароля мы временно оказываемся в этой группе и можем работать с теми файлами, к которым разрешен доступ этой группе. Чтобы удалить пароль Linux из группы, используется опция -r:

sudo gpasswd -r disk

Как заставить пользователя поменять пароль

Безопасность сервера - это одна из самых важных вещей. Часто причиной проблем с безопасностью становятся сами пользователи, которые недостаточно часто меняют пароли или делают их слишком простыми. Если вы администратор, у вас есть возможность заставить пользователей выполнять смену пароля время от времени, а также автоматически отсылать им предупреждения о том, что пора сменить пароль пользователя Linux.

Всё это позволяет сделать утилита passwd. Сначала давайте рассмотрим, как посмотреть информацию о пароле в passwd. Для этого используется опция -S:

passwd3

  • Первое поле - имя пользователя
  • Второе поле показывает одно из значений: P - пароль установлен, L - пользователь заблокирован, NP - пароля нет.
  • 07/21/2016 - дата последнего изменения пароля.
  • 0 - минимальное время до смены пароля
  • 99999 - максимальное время действия пароля
  • 7 - за сколько дней нужно предупреждать об истечении срока действия пароля
  • -1 - через сколько дней пароль нужно деактивировать.

Например, через тридцать дней после смены, пароль пользователя станет устаревшим:

sudo passwd -x 30 test

passwd4

За три дня до того, как пароль устареет, предупредим пользователя, что его нужно сменить:

sudo passwd -w 3 test

Если он этого не сделает в течении пяти дней, аккаунт нужно отключить:

sudo passwd -i 3 test

Пароль можно менять не чаще, чем раз в 10 дней:

sudo passwd -n 10 test

Смотрим теперь, что у нас получилось:

sudo passwd -S test

passwd5

Как поменять пароль root

Изменить пароль Linux для root очень просто, точно так же, как и для любого другого пользователя. Только нужно иметь права суперпользователя. Вот так это будет выглядеть:

sudo passwd root

passwd6

Всё работает. Таким же способом можно задать пароль root в Ubuntu.

Как вручную поменять пароль

Операционная система Linux не была бы Linux, если бы мы не имели возможность настроить пароль вручную безо всяких утилит. Как я уже говорил, пароли хранятся в файле /etc/shadow. И хранятся они там в зашифрованном виде. Расшифровать пароль невозможно.

Когда система сохраняет пароль, она выполняет шифрование по определённому алгоритму и сохраняет уже зашифрованный результат, а когда пользователю нужно войти в систему, она просто берёт его пароль, опять же шифрует и сверяет с тем, что хранится в /etc/shadow. Если совпадает - пользователь авторизован.

Даже таким способом сменить пароль пользователя Linux не так уж сложно. Итак, сначала нам нужно получить зашифрованный пароль. Это можно сделать несколькими способами, например с помощью openssl:

openssl passwd -1 -salt xyz yourpass

Замените xyz на любую случайную комбинацию символов, чем больше, тем лучше; yourpass - это ваш новый пароль.

Скопируйте полученный результат в буфер обмена, затем откройте файл /etc/shadow и найдите там нужного пользователя. Я хочу сменить пароль Linux для test:

sudo vi /etc/shadow

passwd8

Синтаксис этого файла такой:

имя_пользователя: пароль: .

Следующее поле указывает на последнее изменение пароля в виде количества дней, прошедших с первого января 1970. Остальные поля нас не интересуют, да и вы с ними очень просто разберётесь, просто сопоставив данные.

Теперь замените пароль на полученный выше и сохраненный в буфер обмена. Сохраните файл и можете пробовать войти под новым паролем:

passwd7

Всё работает. Как я уже говорил, есть ещё несколько алгоритмов шифрования, с помощью которых вы можете получить пароль, вот они:

makepasswd --clearfrom=- --crypt-md5 <<< YourPass
mkpasswd -m sha-512 -S salt -s <<< YourPass
perl -e 'print crypt("YourPass", "salt"),"\n"'
openssl passwd -crypt -salt XRYourPass

Во всех этих примерах salt - это случайная строка для увеличения надёжности шифрования, а YourPass - ваш пароль. Что делать с полученным данными вы уже знаете.

Выводы

Из этой статьи вы узнали, как сменить пароль Linux. Я рассмотрел все возможные способы и даже не очень стандартные. Если у вас остались вопросы, пишите комментарии!

Не подскажете, каким образом можно сменить пароль из скрипта?

Не подскажете, каким образом можно читать чужие мысли? Кажется это телепатией называют?


Вроде все объяснил. Надо менять юзерский системный пароль в скрипте. passwd не имеет ключа --stdin. В redHat такое было возможно, в Gentoo такого нет.

Если вы не поняли вопроса, то сидите и не показывайте свою тупость.

Ну, надо блин) Отказаться от этого никак. В RedHat элементарно было, сейчас Генту пробую, тут никак.

Или как сгенерить криптованный пароль который требует passwd в качестве ключа?

Если пароль конкретно задан, то просто запиши его в криптованном виде и обновляй /etc/passwd.

Пароль не конкретно задан, задается интерактивно или генерится.

Возможно, в Red Hat и Gentoo установлены login из разных пакетов (shadow и util-linux).

В общем, как мне получить закриптованный пароль? Как его закриптовать?


Для твоей первоначалной цели вот это не подойдет?

echo "PaSsWoRd" | openssl passwd -1 -stdin

sudo usermod -p `echo "PaSsWoRd" | openssl passwd -1 -stdin` username

>Зачем?
>Если вы не поняли вопроса, то сидите и не показывайте свою тупость.
>unnamed (*)

если это относилось к anonymous(No2), могу только выразить вам глубокие соболезнования.

автору. если бы вы посмотрели содержимое пакета qpkg -i -l shadow | grep sbin, то первое, что вы могли бы увидеть, это /usr/sbin/chpasswd.

> usermod -p `echo "PaSsWoRd" | openssl passwd -1 -stdin` username

(пионеры-велосипедисты простых путей не ищут :) - шучу, без обид)

echo "username:cleartextpassword" | chpasswd

и ключик -m по желанию

chpasswd не в каждом дистрибутиве есть.
А openssl обычно есть везде, так как достаточно много продуктов его пользуют.

у нас есть несколько серверов Red Hat linux в нашей ИТ-среде. Члены моей команды просят меня написать сценарий (предпочтительно сценарий оболочки), чтобы изменить пароль пользователя на каждом из них за один раз, используя SSH.

Я попытался найти решение, но многие из найденных скриптов используют Expect. Мы не ожидаем, установленный на наших серверах, и системные администраторы отказались позволить нам установить его. Кроме того, пользователи не имеют доступа root so passwd --stdin или chpasswd не может быть использован.

есть ли способ написать скрипт, чтобы пользователь мог запустить его и изменить пароль только своего пользователя на всех серверах в списке?

удаленным машинам не нужно ожидать установки. Вы можете установить expect на локальную рабочую станцию или виртуальную машину (virtualbox) или любой *Nix box и написать оболочку, которая вызывает это .ex (expect) скрипт (могут быть небольшие изменения от дистрибутива к дистрибутиву, это проверено на CentOS 5/6):

вам не нужен root-доступ, чтобы использовать passwd .

Это shoud работает просто отлично.

вы должны попробовать pssh (параллельный ssh одновременно).

основываясь на примере squashbuff, я попробовал следующее, что хорошо сработало для меня:

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

другая возможность: измените его вручную на одном сервере. Получите зашифрованный пароль из /etc / shadow. Теперь сделайте что-нибудь вроде этого:

конечно, "encrypted_passwd" - это то, что вы получили из /etc/shadow, где вы вручную изменили пароль. И $HOST_LIST-это список хостов, на которых вы хотите изменить пароль. Это может быть создано просто с помощью:

или, возможно, с файлом (как предлагали другие):

где файл "host_list.txt " имеет список всех систем, в которых вы хотите изменить пароль.

Edit: если ваша версия passwd не поддерживает опцию-p, у вас может быть доступна программа "usermod". Пример выше остается тем же, просто замените "passwd" на "usermod".

кроме того, вы можете рассмотреть полезный инструмент pdsh, что упростило бы приведенный выше пример примерно так:

последний "gotcha", чтобы искать: зашифрованный пароль, вероятно, содержит символ знака доллара ('$') в качестве разделителя полей. Вероятно, вам придется избегать тех, кто находится в вашем цикле for или pdsh (т. е. "$" становится "\$").

установить sshpass на любом сервере, с которого вы хотите выполнить скрипт.

подготовьте текстовый файл, в котором вы должны передать детали, такие как Хоста, Имя Пользователя, пароль и порт. (По вашему требованию).

подготовьте файл сценария, используя ниже подробности.

альтернативой, которую вы можете представить своим коллегам, будет использование аутентификации без пароля. Они сгенерируют пару открытый / закрытый ключ и зарегистрируют свой открытый ключ в

/.ssh / authorized_keys файл на каждом из серверов, в которые они входят.

можете ли вы использовать Perl?

здесь существует скрипт, который изменяет пароль в наборе хостов.

Если требуется несколько модулей Perl (Net::OpenSSH:: Parallel, ожидал и их зависимости), установленные на локальном компьютере, на котором запущен скрипт, но ничего на удаленных серверах, где пароль должен быть изменен.

Читайте также: