/usr/sbin/useradd 命令和
/etc/skel
目录(两者都易于设置和使用)共同提供了一种方法,确保新用户添加到您的 LFS 系统时,在 PATH、键盘处理和其他环境变量等方面具有相同的初始设置。使用这两种工具可以更轻松地确保系统中每个新添加的用户都具有这种初始状态。
/etc/skel 目录保存了各种初始化文件和其他文件的副本,当
/usr/sbin/useradd
程序添加新用户时,这些文件可能会被复制到新用户的主目录中。
useradd 程序使用保存在
/etc/default/useradd 中的一组默认值。该文件由
Shadow 包在基础 LFS
安装中创建。如果它已被删除或重命名,useradd 程序会使用一些内部默认值。您可以通过运行
/usr/sbin/useradd -D
来查看默认值。
要更改这些值,只需以 root 用户身份修改 /etc/default/useradd 文件。另一种替代直接修改文件的方法是以
root 用户身份运行 useradd,并在命令行中提供所需的修改。有关如何执行此操作的信息,可以在
useradd 手册页中找到。
首先,创建一个 /etc/skel 目录,并确保它仅对系统管理员(通常是
root)可写。以 root 身份创建该目录是最佳做法。
您从本书此部分放入 /etc/skel
的任何文件的模式应仅对所有者可写。此外,由于无法预知用户最终可能会在其副本中放置何种敏感信息,您应使其对“组”和“其他”不可读。
您也可以将其他文件放入 /etc/skel,它们可能需要不同的权限。
决定应在每个(或大多数)新用户的主目录中提供哪些初始化文件。您的决定将影响您在接下来的两节(Bash Shell 启动文件 和
vimrc 文件)中的操作。这些文件中的部分或全部将对
root、任何已有用户和新用户有用。
您可能想要放入 /etc/skel 的那些章节中的文件包括
.inputrc、.bash_profile、.bashrc、.bash_logout、.dircolors 和 .vimrc。如果您不确定其中哪些应放在那里,只需继续阅读以下各节,阅读每节及其提供的任何参考资料,然后做出决定。
对于放入 /etc/skel
的文件,您将运行一组略有修改的命令。每节都会提醒您这一点。简而言之,本书中的命令是为 不 添加到 /etc/skel 的文件编写的,而是直接将结果发送到用户的主目录。如果文件将放入
/etc/skel,请修改本书的命令以将输出发送到那里,然后将文件从
/etc/skel 复制到相应的目录,例如 /etc、~
或系统中任何其他已有用户的主目录。
当使用 useradd 添加新用户时,请使用
-m 参数,该参数告诉 useradd 创建用户的主目录,并将文件从 /etc/skel(可覆盖)复制到新用户的主目录。例如(以 root 用户身份执行):
useradd -m <新用户>
如果您与其他 Linux 发行版(例如用于构建 LFS 的主机发行版)共享 /home 或 /usr/src,您可以创建具有相同 UID(以及相同的主组
GID)的用户,以保持文件所有权在各个系统间一致。首先,在 其他发行版 上,获取该用户的 UID 和用户主组的 GID:
getent passwd <用户名> | cut -d ':' -f 3,4
该命令应输出 UID 和 GID,以冒号分隔。现在,在 BLFS 系统上,创建主组和用户:
groupadd -g<GID><用户名>&& useradd -u<UID>-g<用户名><用户名>