2

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

Мне нужно организовать все UID для нескольких серверов, чтобы у всех пользователей был одинаковый UID в их /etc/passwd . Очевидно, я пытаюсь найти подходящий сценарий для этого, поэтому мне не нужно делать это вручную.

Если у меня есть 1 правильный сервер с правильными UID, может ли кто-нибудь порекомендовать управляемый сценарий для синхронизации других серверов /etc /passwd с правильным?

Я дошел до организации с помощью

awk -F ':' '{print$1,$3}' /etc/passwd  

Затем я могу использовать diff или sort чтобы сравнить обновленный файл passwd со старым файлом passwd .

1 ответ1

0

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

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


#!/usr/bin/env python
import subprocess, shlex


newlistolists = []
with open('/root/masterpasswd', 'r') as newetcpass:
    for line in newetcpass:
        alist = line.split(':')
        newlistolists.append(alist[:])

for entry in newlistolists:
    cmd = 'usermod -o -u ' + entry[2] + ' ' + entry[0]
    thecmd = shlex.split(cmd)
    subprocess.Popen(thecmd)

#insert additional logic for setting groups, shells, etc with relevant commands
#you need to do some error handling too, but it's a fast ugly UID set script

Включайте только имена пользователей, которые вы хотите изменить в /root /masterpasswd

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