швидкий шлях до adduser і userdel в декількох машинах


3

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

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

щоб додати користувача. Чи є швидший спосіб зробити це на всіх серверах одночасно? Дякую.

ОНОВЛЕННЯ:

Після виконання вищевказаної команди потрібно заповнити деяку інформацію про користувача: "Повне ім'я:", "Номер кімнати", "Робочий телефон" тощо. Я хотів би заповнити цю інформацію лише один раз і використовуватись для користувача створення на всіх машинах. Дякую.

Відповіді:


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

hmhm .... в цьому випадку мені все одно потрібно буде ввести всі дублювані дані (ім'я, офіс, номер телефону тощо). Будь-які інші ідеї? Дякую.
Кеннет

@Kenneth централізована база даних користувачів, мабуть, хороша ідея. Однак, якщо ви повинні оновити своє запитання, щоб включити всі його вимоги, я мав би змогу змінити свою відповідь. Які дублюються деталі? Яку фактичну команду потрібно ввести на кожному сервері? Ви можете просто додати їх у файл із IPS та іменами користувачів.
тердон

дякую тердон. Я перевірив сторінку чоловіка аддусера, але, здається, немає можливості розмістити деталі користувача, наприклад. Повне ім'я, номер кімнати тощо у командному рядку. Зауважте, що повне ім'я, швидше за все, містить пробіл. Дякую.
Кеннет

Фантастичний тердон !!! Спасибі купи. Вибачте, сорвуйте мою повільну реакцію, оскільки я застряг в інших проектах і просто повернувся до управління серверами.
Кеннет

0

Чому б не використовувати якусь централізовану базу даних користувачів, наприклад LDAP (або OpenLDAP, або краще 389 Каталог серверів )?


Я поняття не маю, що таке LDAP. Просто подивився на вікі, це для організації набору записів. Як його використовувати для управління користувачами в операційній системі? Дякую.
Кеннет

LDAP використовується саме для ведення записів про користувачів . Можливо, пошук ibm.com/developerworks/linux/library/l-openldap допомагає.
vonbrand
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.