为什么新用户继承已删除用户的文件?

为什么新用户继承已删除用户的文件?

所以我必须做书上的练习作为家庭作业。首先,您必须创建一个用户,例如:

useradd -c "Steven Baxter" -s "/bin/sh" sbaxter

然后你必须向该/home/sbaxter目录添加一些文件:

touch /home/sbaxter/ some.txt new.txt files.txt

然后您必须删除该sbaxter用户并创建一个名为 的新用户mjane。令我惊讶的是,当我运行时find /home/ -user mjane,新用户mjane现在拥有 sbaxter 的所有旧文件,发生了什么?

答案1

魔鬼在于细节,在useradd手册页中(您可以通过发出 来看到这一点man 8 useradd):

   -u, --uid UID
       The numerical value of the user's ID. This value must be unique,
       unless the -o option is used. The value must be non-negative. The
       default is to use the smallest ID value greater than or equal to
       UID_MIN and greater than every other user.

因此,它将默认使用密码文件中未使用的最小 uid,即大于其他用户的 uid。删除 sbaxter 会将其从 passwd 文件中删除,因此他的 uid 是“空闲”的,并被分配给 mjane(因为使用useradd该命令时两个用户选择的uid是相同的)。useradd

磁盘上的文件仅存储 uid,而不存储用户名翻译(因为此翻译是在密码文件中定义的)。您可以通过发出命令ls -ln查看 uid 所有权文件的内容来确认这一点。

我实际上会推荐你禁用而不是删除帐户。大多数 Linux 发行版上的锁定帐户可以通过 来实现usermod -L -e today <username>,它会锁定密码并将帐户设置为今天到期(您可以使用 来查看帐户的到期日期chage -l)。

答案2

已删除用户的 UID 被新用户重用,文件系统使用 UID 来表示所有权,而不是用户名。

相关内容