例如,如果我要运行命令adduser test
,在创建用户主目录时是否会自动创建 .bashrc test
?如果它不是在创建用户时创建的,那么在什么条件下会创建它?
另外,如果我将 .bashrc 文件添加到用户的主目录,它会被操作系统覆盖吗?
提前致谢。
答案1
在大多数情况下,初始用户文件(包括.bashrc
)是在创建用户时创建的。它们是存储在名为的“骨架”目录中的文件的副本/etc/skel
。有两个主要命令:
useradd
是后端命令,如果直接使用它(不带任何选项),只会创建一个系统用户(及其组):$ sudo useradd new-user $ ls -la /home/new-user/ ls: cannot access '/home/new-user/': No such file or directory
useradd
/etc/skel
如果-m
--create-home
提供了选项,将创建一个主目录并用副本填充它。感谢此评论致@jwodder。该选项
-s
--shell
将更改新用户的登录 shell 的名称。无论新用户的登录 shell 是什么,“skeletal”目录的全部内容/etc/skel
都将填充到新用户的主目录中。可以使用该选项定义不同的“骨架”目录
-k
--create-home
。该命令的配置文件是
/etc/default/useradd
。
adduser
是用户友好且交互的前端useradd
。此命令将默认从复制/etc/skel
到用户$HOME
目录:$ sudo adduser new-user Adding user `new-user' ... Adding new group `new-user' (1002) ... Adding new user `new-user' (1002) with group `new-user' ... Creating home directory `/home/new-user' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for new-user Enter the new value, or press ENTER for the default Full Name []: New User Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] $ ls -a /home/new-user/ . .. .bash_logout .bashrc .config examples.desktop .profile .Xdefaults
该命令的配置文件是
/etc/adduser.conf
。新用户的登录 shell 的默认值由变量 决定
DSHELL=
。也可以通过选项 指定--shell
。无论新用户的登录 shell 是什么,“骨架”目录的全部内容/etc/skel
都将填充到新用户的主目录中。此文件中的变量
SKEL=
指定包含“骨架”用户文件的默认目录。该选项
--no-create-home
将强制命令adduser
不创建用户主目录,相应地,“骨架”目录的内容将不会被复制。如果使用一个非选项参数和
--system
选项调用,adduser
将添加系统用户...主目录的创建规则与普通用户相同。新的系统用户将拥有 shell/bin/false
(除非用选项覆盖--shell
),并且登录被禁用。骨架配置文件未被复制。 ...来自手册页。
此外,使用任何 GUI 工具创建用户时User Accounts
,其结果与命令的结果相同adduser
。
参考: