
현재 내부 Subversion 저장소를 호스팅하는 Linux 상자가 있습니다. 이 저장소에 대한 액세스는 svn+ssh를 통해 이루어지며 시스템의 사용자 계정에 대한 인증이 수행됩니다. 최근에 반짝이는 새 상자(Linux와 함께 설치됨)를 구입했으며 Subversion 저장소를 그 상자로 전환하고 싶습니다(RAID 1+0을 사용하여 구성된 6개의 디스크에 걸쳐 더 많은 공간이 있기 때문입니다).
저장소의 현재 사용자에게 미치는 영향을 최소화하기 위해 현재 시스템의 모든 사용자, 그룹 및 파일 정보를 새 시스템으로 전송하려면 어떻게 해야 합니까? 현재 내 생각은 /etc/passwd 및 /etc/group 파일(및 섀도우 파일?)의 관련 항목을 복사하고 /home의 사용자 폴더를 복사하는 것입니다. 내가 놓친 것이 있나요?
편집: 추가 정보. 이전 상자는 Ubuntu 8이고 새 상자는 Ubuntu 9입니다. 약 12명의 사용자와 12개의 사용자 지정 그룹이 있습니다.
답변1
기존 Linux 사용자 관리에는 다음 파일/디렉터리가 필요합니다.
/etc/passwd- 각 사용자 계정에 대한 다양한 정보를 포함합니다.
/etc/shadow- 사용자 계정의 암호화된 비밀번호 정보가 포함되어 있으며 선택적으로 비밀번호 만료 정보가 포함되어 있습니다.
/etc/그룹- 사용자가 속한 그룹을 정의합니다.
/etc/gshadow- 그룹 섀도우 파일(그룹의 암호화된 비밀번호 포함)
/var/스풀/메일- 일반적으로 사용자 이메일은 여기에 저장됩니다.
/집- 모든 사용자 데이터는 여기에 저장됩니다.
위의 모든 파일과 디렉터리를 이전 서버에서 새 Linux 서버로 백업해야 합니다.
답변2
우리는 얼마나 많은 사용자에 대해 이야기하고 있습니까?
소수인 경우 새 시스템에서 "useradd"를 실행하고 마이그레이션하는 각 사용자에 대해 동일한 uid 및 gid를 지정하는 것이 훨씬 안전합니다.
그런 다음 동일한 uid/gid를 사용하여 새 시스템에 계정이 생성되면 이전 시스템에서 로그인을 비활성화하고 rsync를 사용하여 홈 디렉터리를 통해 전송합니다. 남은 유일한 단계는 마이그레이션 후 비밀번호를 재설정하는 것입니다.
/etc/passwd 및 /etc/group과 같은 항목을 복사할 때 문제는 문제가 발생하면 자신(또는 루트)이 새 시스템에 로그인하는 것을 완전히 차단한다는 것입니다. 또한 유닉스 버전에 따라 이러한 파일이 다르게 해석될 수 있으므로 매우 주의해야 합니다. 한 번의 작은 실수로 사용자 "게스트"로 로그인하거나 기타 보안 허점이 생길 수 있습니다.
답변3
뭔가를 아주 빨리 썼고매우 더러운이를 위해. CentOS 서버 마이그레이션에 도움을 주었지만 대부분의 최신 Linux 시스템에서도 작동합니다. 필요에 따라 채택하세요
분명히, 자신의 책임하에 사용하십시오.
transferuser.sh
#!/bin/sh
# Transfer user from old passwd / shadow to existing system. Create homedir if
# necessary
# configurables
OLDETC=/path/to/extract/old/etc
# end configurables
if [ $# -ne 1 ]; then
echo "Usage: $0 <username>"
exit 1
fi
NEWUSER=$1
OLDPWD=${OLDETC}/passwd
OLDSHDW=${OLDETC}/shadow
OLDGRP=${OLDETC}/group
OLDGSHDW=${OLDETC}/gshadow
id $NEWUSER > /dev/null 2>&1
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "ERROR: user $NEWUSER already exist on this system"
exit 2
fi
grep -q "${NEWUSER}:" $OLDPWD
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo "ERROR: user $NEWUSER does not exist in $OLDPWD"
exit 3
fi
# all seems good, lets blindly transfer user
grep "${NEWUSER}:" $OLDPWD >> /etc/passwd
grep "${NEWUSER}:" $OLDSHDW >> /etc/shadow
grep "${NEWUSER}:" $OLDGRP >> /etc/group
grep "${NEWUSER}:" $OLDGSHDW >> /etc/gshadow
/usr/sbin/mkhomedir_helper ${NEWUSER}
# check consistency:
pwck -r
grpck -r