내 상황
나는 시스템 전체에서 UID를 고유하게 유지하는 데 아무런 주의를 기울이지 않은 4개의 Linux 상자 모음을 물려받았습니다. 전체적으로 이러한 사용자는 약 40명의 사용자와 7TB가 넘는 데이터를 보유하고 있습니다.
NFS가 이 네 상자 사이에 /data 볼륨을 마운트하는 동안 제정신을 유지하려면 UID가 일치해야 합니다. 또한 이 변경을 수행할 때 사용자가 로그아웃 상태를 유지해야 하는 시간을 최소화하고 싶습니다.
사용자 수와 데이터 양으로 인해 사용자 40명 전체의 모든 파일을 현재 상태 UID에서 고정 상태 UID(한 번에 약 7TB)로 변경하는 프로그램을 작성했습니다. 마지막으로 사용자 이름이 새로운 고정 상태 UID와 일치하도록 /etc/passwd를 변경해야 합니다.
수정해야 할 사용자가 한 명뿐이거나 크롤링하고 살펴볼 데이터가 적다면 이는 더 간단할 것입니다.
파일 권한을 변경하는 프로그램을 실행한 후에는 그냥 실행하면 된다고 생각했습니다.
usermod -u fixedUID jsmith -o
40명의 사용자 각각에 대해. 그러나 usermod의 매뉴얼에는 /home/jsmith에서 자체적으로 파일을 chown할 것이라고 명시되어 있습니다(따라서 간단한 통과 수정에 대한 나의 시도는 무산되었습니다). 이 기능을 비활성화하는 방법을 모르고 마지막 usermod 단계에서 1패스 수정이 41패스 수정으로 바뀔까 봐 걱정됩니다.
내 질문
파일 시스템의 모든 항목을 삭제한 후 사용자 UID를 어떻게 변경합니까? "vipw"보다 더 좋은 방법이 있나요?
답변1
사용자의 홈 디렉터리를 일시적으로 변경하고(예: /tmp/home/username
), uid를 변경한 다음 homedir을 다시 원래 위치로 변경해 보십시오.
예를 들어:
# mkdir -p /tmp/home/jsmith ## uncomment if required.
usermod -d /tmp/home/jsmith jsmith
usermod -u fixedUID jsmith -o
usermod -d /home/jsmith jsmith
사용자의 홈 디렉토리가 아닌 경우 /home/username
다음 명령을 사용하여 실제 홈 디렉토리를 추출할 수 있습니다 getent
.
# mkdir -p /tmp/home/jsmith ## uncomment if required.
homedir=$(getent passwd jsmith | awk -F: '{print $6}')
usermod -d /tmp/home/jsmith jsmith
usermod -u fixedUID jsmith -o
usermod -d "$homedir" jsmith