linux系统中,可以使用useradd命令新建用户,此命令的基本格式如下:
[root@linuxcool~]#useradd[选项]用户名
该命令常用的选项及各自的含意,如表1所示。
表1useradd命令常用选项
选项
涵义
-uUID
手工指定用户的UID,注意UID的范围(不要大于500)。
-d主目录
手工指定用户的主目录。主目录必须写绝对路径,但是假如须要手工指定主目录,则一定要注意权限;
-c用户说明
手工指定/etc/passwd文件中各用户信息中第5个数组的描述性内容,可随便配置;
-g组名
手工指定用户的初始组。通常以和用户名相同的组作为用户的初始组,在创建用户时会默认构建初始组。一旦自动指定,则系统将不会在创建此默认的初始组目录。
-G组名
指定用户的附加组。我们把用户加入其他组,通常都使用附加组;
手工指定用户的登陆Shell,默认是/bin/bash;
-e曰期
指定用户的失效曰期,格式为”YYYY-MM-DD”。也就是/etc/shadow文件的第八个数组;
-o
容许创建的用户的UID相同。诸如,执行”useradd-u0-ousertest”命令构建用户usertest,它的UID和root用户的UID相同,都是0;
-m
构建用户时强制构建用户的家目录。在构建系统用户时,该选项是默认的;
-r
创建系统用户,也就是UID在1~499之间,供系统程序使用的用户。因为系统用户主要用于运行系统所需服务的权限配置,因而系统用户的创建默认不会创建主目录。
虽然,系统早已帮我们规定了特别多的默认值linux命令位置,在没有特殊要求下,无需使用任何选项即可成功创建用户。诸如:
[root@linuxcool~]#useraddlamp
此行命令就表示创建lamp普通用户。
不要小看这条简单的命令,它会完成以下几项操作:
在/etc/passwd文件中创建一行与lamp用户相关的数据:
[root@linuxcool~]#grep”lamp”/etc/passwd
lamp:x:500:500::/home/lamp:/bin/bash
可以看见,用户的UID是从500开始估算的。同时默认指定了用户的家目录为/home/lamp/,用户的登陆Shell为/bin/bash。
在/etc/shadow文件中新增了一行与lamp用户密码相关的数据:
[root@linuxcool~]#grep”lamp”/etc/shadow
lamp:!!:15710:0:99999:7:::
其实,这个用户还没有设置密码,所以密码数组是”!!”,代表这个用户没有合理密码,不能正常登陆。同时会根据默认值设定时间数组,比如密码有效期有99999天,距离密码过期7天系统会提示用户“密码正式过期”等。
在/etc/group文件中创建一行与用户名一模一样的群组:
[root@linuxcool~]#grep”lamp”/etc/group
lamp:x:500:
该群组会作为新建用户的初始组。
在/etc/gshadow文件中新增一行与新增群组相关的密码信息:
[root@linuxcool~]#grep”lamp”/etc/gshadow
lamp:!::
其实,我们没有设定组密码,所以这儿没有密码,也没有组管理员。
默认创建用户的主目录和邮箱:
[root@linuxcool~]#ll-d/home/lamp/
drwx——3lamplamp40961月600:19/home/lamp/
[root@linuxcool~]#ll/var/spod/mail/lamp
-rw-rw—-1lampmail01月600:19/var/spool/mail/lamp
注意这两个文件的权限,都要让lamp用户拥有相应的权限。
将/etc/skel目录中的配置文件复制到新用户的主目录中(至于为何,学完本节内容都会明白)。
可以看见,useradd命令创建用户的过程,虽然就是更改了与用户相关的几个文件或目录,上面章节早已对那些文件做了详尽介绍。
不仅默认创建用户,我们还可以借助useradd命令的各类选项亲自订制要创建的用户,比如:
[root@linuxcool~]#groupaddlamp1
#先手工添加lamp1用户组linux命令位置,由于我一会儿要把lamp1用户的初始迎指定过来,假若不事先构建,则会报告用户组不存在
[root@linuxcool~]#useradd-u550-glamp1-Groot-d/home/lamp1-c”testuser”-s/bin/bashlamp1
#在构建用户lamp1的同时,指定了UID(550)、初始组(lamp1)、附加组(root)、家目录(/home/lamp1/)、用户说明(testuser)和用户登入Shell(/bin/bash)
[root@linuxcool~]#grep”lamp1″/etc/passwd/etc/shadow/etc/group
#同时查看三个文件
/etc/passwd:lamp1:x:550:502:testuser:/home/lamp1:/bin/bash
#用户的UID、初始组、用户说明、家目录和登陆Shell都和命令手工指定的一致
/etc/shadow:lamp1:!!:15710:0:99999:7:::
#lamp1用户还没有设定密码
/etc/group:root:x:0:lamp1
#lamp1用户加入了root组,root组是lamp1用户的附加组
/etc/group:lampl:x:502:
#GID为502的组是lamp1组
[root@linuxcool~]#ll-d/home/lamp1/
drwx——3lamp1lamp140961月601:13/home/lamp1/
#家目录也完善了,不须要手工构建
通过以上2种方法,都可以成功创建用户。一般情况下,根本不须要手工指定任何内容,由于使用默认值就可以满足我们的要求。那你有没有想过,useradd命令的这种默认值保存那里,能够手工更改呢?
答案是肯定的。useradd命令在添加用户时参考的默认值文件主要有两个,分别是/etc/default/useradd和/etc/login.defs。上面我们早已详尽介绍了/etc/login.defs,这儿不再过多赘言,本节带你们详尽了解/etc/default/useradd文件。
/etc/default/useradd文件
首先,使用Vim命令查看/etc/default/useradd文件中包含什么内容:
[root@linuxcool~]#vim/etc/default/useradd
#useradddefaultsfile
GR0UP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
另外,也可以直接通过命令进行查看,结果是一样的:
[root@linuxcool~]#useradd-D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
-D选项指的就是查看新建用户的默认值。
表2对此文件中的各项做了详尽的解释。
表2/etc/default/useradd文件内容
参数
涵义
GR0UP=100
这个选项用于构建用户的默认组linux漏洞扫描,也就是说,在添加每位用户时,用户的初始组就是GID为100的这个用户组。但CentOS并不是这样的,而是在添加用户时会手动构建和用户名相同的组作为此用户的初始组。也就是说这个选项并不会生效。
Linux中默认用户组有两种机制:一种是私有用户组机制,系统会创建一个和用户名相同的用户组作为用户的初始组;另一种是公共用户组机制,系统用GID是100的用户组作为所有新建用户的初始组。目前我们采用的是私有用户组机制。
HOME=/home
指的是用房主目录的默认位置,所有新建用户的主目录默认都在/home/下,刚才新建的lamp1用户的主目录就为/home/lamp1/。
INACTIVE=-1
指的是密码过期后的宽限天数,也就是/etc/shadow文件的第七个数组。这儿默认值是-1,代表所有新构建的用户密码永远不会失效。
EXPIRE=
表示密码失效时间,也就是/etc/shadow文件的第八个数组。默认值是空,代表所有新建用户没有失效时间,永久有效。
SHELL=/bin/bash
表示所有新构建的用户默认Shell都是/bin/bash。
SKEL=/etc/skel
在创建一个新用户后,你会发觉,该用房主目录并不是空目录,而是有.bash_profile、.bashrc等文件,这种文件都是从/etc/skel目录中手动复制过来的。为此,修改/etc/skel目录下的内容就可以改变新建用户默认主目录中的配置文件信息。
CREATE_MAIL_SPOOL=yes
指的是给新建用户构建邮箱,默认是创建。也就是说,对于所有的新建用户,系统就会新建一个邮箱,置于/var/spool/mail/目录下,和用户名相同。诸如linux删除文件夹,lamp1的邮箱坐落/var/spool/mail/lamp1。
注意,此文件中各选项值的更改形式有2种,一种是通过Vim文本编辑器自动更改,另一种就是使用文章开头介绍的useradd命令,不过所用的命令格式发生了改变:
useradd-D[选项]参数
用此命令更改/etc/default/useradd文件,可使用的选项如表3所示。
useradd-D命令可用选项
选项+参数
涵义
-bHOME
设置所创建的主目录所在的默认目录,只需用目录名替换HOME即可,比如useradd-D-b/gargae。
-eEXPIRE