如何將使用者帳戶轉移到新的 Linux 機器上?

如何將使用者帳戶轉移到新的 Linux 機器上?

我目前有一個 Linux 機器託管我們的內部 Subversion 儲存庫。存取此儲存庫是透過 svn+ssh 進行的,並針對電腦上的使用者帳戶進行身份驗證。我最近購買了一個閃亮的新盒子(也安裝了 Linux),並希望將 subversion 儲存庫轉移到它(因為它在使用 RAID 1+0 配置的六個磁碟上有更多空間)。

如何將目前機器上的所有使用者、群組和檔案資訊轉移到新機器上,以盡量減少對儲存庫目前使用者的影響?我目前的想法是複製 /etc/passwd 和 /etc/group 檔案(以及影子檔案?)中的相關條目,並複製 /home 中的使用者資料夾。我有什麼遺漏的嗎?

編輯:額外資訊。舊盒子是Ubuntu 8,新盒子是Ubuntu 9。

答案1

來自一個cyberciti.biz 文章:

傳統 Linux 使用者管理需要以下檔案/目錄:

  • /etc/密碼- 包含每個用戶帳戶的各種訊息

  • /etc/影子- 包含使用者帳戶的加密密碼資訊和可選的密碼老化資訊。

  • /etc/組- 定義使用者所屬的群組

  • /etc/gshadow- 群組影子檔案(包含群組的加密密碼)

  • /var/spool/郵件- 通常用戶電子郵件儲存在這裡。

  • /家- 所有用戶資料都儲存在這裡。

您需要將上述所有檔案和目錄從舊伺服器備份到新Linux伺服器。

答案2

我們談的是多少用戶?

如果只有幾個,那麼在新系統上執行「useradd」會更安全,確保為要遷移的每個使用者指定相同的 uid 和 gid。

然後,在新電腦上建立具有相同 uid/gid 的帳戶後,停用舊電腦上的登錄,並使用 rsync 傳輸其主目錄。剩下的唯一步驟是在遷移後重設密碼。

複製 /etc/passwd 和 /etc/group 等內容的問題是,如果你搞砸了,你將完全阻止自己(或 root)登入新系統。此外,不同的 Unix 風格可能對這些檔案有不同的解釋,所以你應該非常小心。只需一張小紙條,您就可以開啟「訪客」使用者的登入資訊或任意數量的其他安全漏洞。

答案3

寫得很快並且很骯髒為了這。為我遷移 CentOS 伺服器提供了幫助,但應該適用於大多數現代 Linux 機器。適應您的需求

顯然,使用風險自負。

轉移用戶.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

相關內容