私はこの数日間、この小さなプロジェクトに頭を悩ませてきました。これがその方法です...
すべてのユーザーが/etc/passwd
に同じUIDを持つように、複数のサーバーのすべてのUIDを整理する必要があります。明らかに、私はこれに適したスクリプトを見つけようとしているので、手動でこれを行う必要はありません。
正しいUIDを持つ正しいサーバーが1つある場合、他のサーバー/ etc/passwdを正しいサーバーと同期するための管理可能なスクリプトを誰かが推奨できますか?
使って整理するところまで来ました
awk -F ':' '{print$1,$3}' /etc/passwd
次に、diff
またはsort
を使用して、更新されたpasswd
ファイルを古いpasswd
ファイルと比較できます。
grawityは彼のコメントで正しい考えを持っています...それがスクリプトでなければならない場合、再起動せずに動作するにはかなり複雑である必要があります...すべてのuidをクレイジーな高さに変更してから適切なベース番号に変更するように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に含めます