Как отсортировать UID "/etc/passwd"?
Последние несколько дней я ломал голову над этим маленьким проектом, и вот как он идет...
Мне нужно организовать все UID для нескольких серверов, чтобы у всех пользователей был один и тот же UID. /etc/passwd
, Очевидно, я пытаюсь найти подходящий сценарий для этого, поэтому мне не нужно делать это вручную.
Если у меня есть 1 правильный сервер с правильными UID, может кто-нибудь порекомендовать управляемый скрипт для синхронизации других серверов /etc/passwd с правильным?
Я дошел до организации с помощью
awk -F ':' '{print$1,$3}' /etc/passwd
Тогда я могу использовать diff
или же sort
сравнить обновленное passwd
файл со старым passwd
файл.
1 ответ
У 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