
我的處境有點奇怪。我最近一直致力於從 debian 切換到 arch,並且我的主分區都指向同一個分區(不同的用戶名,所以這不是問題)。
我想做的是兩件事之一:
- 在 arch 上使用與 debian 相同的用戶名和群組設定用戶,然後一切就正常了!或者
- 將我想要在主資料夾之間共享的檔案移到它們自己的分割區,並使用 fstab 掛載它。
對於第二個,我有大約 150GB 的檔案需要移動到它們自己的分割區,並且我的主分割區上有大約 15GB 的可用空間。所以我想要做的是以某種方式創建一個 10gb ext4 分區,移動 10gb 左右的文件,再次擴展分區,再次移動文件,等等,直到所有文件都移動到自己的分區。
我可以手動執行此操作,但如果我可以說“將 10GB 左右的文件從這裡移動到那裡,然後調整其大小並重複,直到文件用完”,那就更容易了。
這可能嗎?
答案1
/home/ 目錄中的資料和設定文件應該與發行版無關,因為它與應用程式而不是作業系統相關。例如,某些發行版可能會調整其應用程式版本以使用不同的資料夾名稱/home/rob
,但您不需要做更多的事情,只需重命名資料夾或符號連結即可使其符合應用程式的期望。
因此,在 arch 上建立一個可以存取 debian 主目錄中已有檔案和目錄的使用者應該不成問題。
您需要做的第一件事是計算 debian 用戶的 UID,並確保這在 arch 上是相同的。 UID 是「真實」使用者 ID,您登入時使用的使用者 ID 只是 UID 的人類表示。假設您的 arch 使用者是“rob”,而 rob 的主目錄是/home/rob
:
$ ls -alnd /home/rob
drwxr-xr-x 94 1000 1000 12288 Jul 3 21:36 /home/rob
uid 和 gid(組 ID)是第三列和第四列。所以這個資料夾由 uid 1000 和 gid 1000 擁有。
$ grep 1000 /etc/passwd
rob:x:1000:1000:,,,,:/home/rob:/bin/bash
$ grep 1000 /etc/group
rob:x:1000:
所以你可以看到在這種情況下組名也是“rob”。這是一個分發選擇 - 有些會預設建立具有相同名稱的主要群組的用戶,有些會建立一個users
群組(通常 gid 100)並將其設為主要群組。就解決這個問題而言,這並不重要,特別是如果您是唯一用戶的話。
我不記得 arch 做了什麼,但我假設它創建了一個users
gid 100 的群組。
所以我們只需要建立一個新用戶rob
,並將其指向該資料夾,並確保它設定了正確的 uid:
$ adduser --home /home/rob --uid 1000 --no-create-home --gid 100 rob
或者,如果您想先為 rob 建立一個群組,請執行以下操作:
$ adduser --group --gid 1000 rob
然後
$ adduser --home /home/rob --uid 1000 --no-create-home --gid 1000 rob
現在設定 rob 帳號的密碼
$ passwd rob
然後登錄,它應該可以像在 arch 上一樣進行訪問。
答案2
選項#1 很有可能發揮作用。您只需要使 uid 和 gid 匹配。使用groupadd -g
和useradd -u
將它們添加到用戶資料庫中,手動選擇的 uid 和 gid 與您在 Debian 上找到的相匹配id -a
find /home -printf 'user %u %U\ngroup %g %G\n' | sort -u
希望該清單僅包含非特權使用者帳戶的 uid 和 gid,並且來自其他系統的 uid 和 gid 會使用正確的名稱或沒有名稱的數字進行報告。如果相同的 uid 或 gid 在清單中以兩個不同的名稱出現兩次,事情會更加複雜。
對於報告中沒有姓名的用戶,請使用groupadd -g gid group
和useradd -u uid -g gid username
建立用戶資料庫條目並為其提供姓名。然後運行passwd username
為您創建的用戶設定密碼。