Назад | Перейти на главную страницу

Как отредактировать / etc / shadow на многих серверах Linux?

Я хотел бы изменить пароль root примерно на 20 серверах Linux. В основном CentOS и Ubuntu.

Итак, я посмотрел на Puppet, Chef и cfengine, но я не могу сказать, могут ли они это сделать, или они будут слишком убивать для этой задачи?

Есть ли у кого-нибудь рекомендации, как редактировать файлы конфигурации, /etc/shadow среди прочего, на многих серверах Linux?

Вы можете просто запустить команду usermod -p '_hash_' root где хэш - это хэш пароля, подходящий для этой системы. Итак, такая команда, как usermod -p '$1$aNwwp0wS$RzSqCt3ntYs.V2TxcXheA' root сделал бы root пароль password.

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

$ # create a md5 password has for 'password'
$ echo 'password' | mkpasswd -s -m md5
$1$mJrKn6xs$NTfRbrqbaVzsqcPzyXXt3/

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

Puppet может управлять пользователями (и множеством других вещей). Я настоятельно рекомендую любому администратору с более чем 3 серверами, интегрирующими марионетку в свою среду. В вики на сайте puppetlabs.com есть много статей, которые помогут вам быстро начать работу. Преимущества определенно стоят вашего времени. Подумайте о написании этого фрагмента кода один раз:

User {"sandra":
 ensure => present,
 group => ["sysadmin","dba"]
}

... и применить его на многих серверах в течение определенного периода времени.

И да, не редактируйте файл теней вручную :)

Существуют также такие пакеты, как cluster-ssh, но, по моему опыту, хотя и полезен, рабочий процесс с этим типом программного обеспечения становится неудобным с более чем 3-4 серверами - это просто с точки зрения площади экрана. Я даже не говорю о различных проблемах, которые могут возникнуть из-за различий в компоновке файловой системы сервера (скажем, до свидания с завершением вкладки), установленных пакетов и т. Д.

Вы этого не сделаете. Нет, правда, не редактируйте напрямую / etc / shadow. Для 20 серверов я бы, вероятно, просто зашел в систему и сменил пароль root с помощью passwd.

что вы можете сделать, если вам приходится делать это часто, это использовать Ожидать и поместите его в цикл, например:

for i in `cat <file_with_server_names>`
do 
     ssh <user>@$i
     <expect stuff here> 
done

Извините за ненадежный псевдокод, который я не использовал примерно 6 месяцев.

root - непростой вопрос, лично мне не нравится привязывать его к каким-либо внешним службам в качестве запасного варианта на случай, если сеть / служба не работают. Обычно я бы предложил интеграцию LDAP или AD (если бы у вас уже был домен AD!)

пшш может быть то, что вы ищете

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

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

Пароль можно изменить с помощью:

passwd <<EOF
ch4ng#m3
ch4ng#m3
EOF

После этого вы должны очистить историю.