我的情况有点奇怪。我最近一直在努力从 debian 切换到 arch,并且我的主分区指向同一个分区(不同的用户名,所以这不是问题)。
我想要做的是以下两件事之一:
- 在 arch 上设置与 debian 相同的用户名和组的用户,然后一切就正常了!或者
- 将我想要在主文件夹之间共享的文件移动到它们自己的分区,然后使用 fstab 挂载它。
对于第二个,我有大约 150gb 的文件需要移动到它们自己的分区,而我的主分区上有大约 15gb 的可用空间。因此,我想要做的是以某种方式创建一个 10gb 的 ext4 分区,移动 10gb 左右的文件,再次扩展分区,再次移动文件,等等,直到所有文件都移动到它们自己的分区。
我可以手动完成,但如果我可以说“将 10GB 左右的文件从这里移动到那里,然后调整大小并重复,直到文件用完”,会更容易。
那可能吗?
答案1
/home/ 目录中的数据和配置文件应该与发行版无关,因为它与应用程序有关,而不是与操作系统有关。例如,某些发行版可能会调整其应用程序版本以使用不同的文件夹名称/home/rob
,但您只需重命名文件夹或符号链接即可使其与应用程序的期望相匹配。
因此,在 arch 上创建一个可以轻松访问 debian 主目录中已有的文件和目录的用户应该不是什么大问题。
您需要做的第一件事是找出 debian 用户的 UID,并确保它在 arch 上是相同的。UID 是“真实”用户 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 所有。在 debian 端,这将对应于您熟悉的 passwd 中的用户名和组名:
$ 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 上找到的 uid 和 gid 相匹配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
为您创建的用户设置密码。