3

В настоящее время я просто иду на каждый из наших серверов, чтобы набрать

adduser <username> --firstuid 1101 --gid 1001 --disabled-password

добавить пользователя. Есть ли более быстрый способ сделать это на всех серверах одновременно? Благодарю.

ОБНОВИТЬ:

После выполнения вышеуказанной команды необходимо заполнить некоторую информацию о пользователе: "Полное имя", "Номер комнаты", "Рабочий телефон" и т.д. Я хотел бы заполнить эту информацию только один раз и использовать ее для пользователя. создание на всех машинах. Благодарю.

2 ответа2

3

ОБНОВИТЬ

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

Добавление списка пользователей на каждый сервер

Лучший инструмент для этой работы - newusers . Вам нужно будет создать текстовый файл, содержащий список пользователей и их данные. Если вы хотите добавить одного и того же пользователя на каждый сервер, этому файлу потребуется только одна строка.

  1. Создать список пользователей. Общий формат файла

    username:passwd:UID:GID:full name,room number,work phone,home phone,other:directory:shell
    

    Итак, в вашем случае вам нужно будет использовать что-то вроде

    tom:password1:::"Tom Hanks","101","123456","654321","Tall"::
    danny:password2:::"Danny DeVito","102","222333","333222","Short"::
    

    Обратите внимание, что я оставил параметры UID, GUID, каталога и оболочки пустыми. Это означает, что будут использоваться значения по умолчанию.

  2. Теперь, когда вы создали список, вам нужно будет скопировать его на каждый удаленный компьютер, а затем добавить новых пользователей. Для этого вам все равно потребуется список соответствующих имен хостов или IP-адресов, по одному на строку, как в моем предыдущем предложении. Как только вы все это настроите, сохраните этот маленький скрипт как newusers.sh:

    #!/bin/bash
       while read ip; do
         scp users.txt root@$ip:/home/root
         ssh root@$ip newusers users.txt
       done
    
  3. Сделайте скрипт исполняемым (chmod a+x newusers.sh) и запустите его для каждого IP в вашем файле:

    newusers.sh < IPs.txt
    
  4. Это будет намного проще, если вы настроите ssh без пароля. Если вы этого не сделаете, выполните следующие команды, чтобы использовать ssh-ключи, обеспечивающие доступ без пароля (вам все равно потребуется фраза-пароль):

    ssh-keygen -t rsa
    while read ip; do ssh-copy-id -i ~/.ssh/id_rsa.pub root@$ip; done < IPs.txt
    

Добавление разных пользователей на каждый сервер

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

192.168.1.10-tom-"Tom Hanks","101","123456","654321","Tall"-pass1
192.168.1.10-danny-"Danny DeVito","102","222333","333222","Short"-pass2

Теперь переберите файл и создайте каждого пользователя на соответствующем компьютере. Обязательно установите переменную IFS в ваш разделитель полей для правильного разбора пробелов:

while IFS='-' read ip name opts pass; do \
   ssh root@$ip useradd $name -mc $opts -p `openssl passwd $pass` -s /bin/bash \
done < list.txt
0

Почему бы не использовать некоторую централизованную пользовательскую базу данных, такую как LDAP (либо OpenLDAP, либо лучше 389 Directory Server)?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .