Linux是一个多用户多任务的操作系统,有着很丰富的用户管理工具,这些工具包括用户的查询。添加、修改、以及不同用户之间相互切换等;通过这些工具,我们可以简单、方便、安全的进行用户管理工作。
添加用户的命令useradd和adduser,这两个命令所能达到的效果是一样的。当然除了useradd和adduser命令意外,我们还能通过修改用户配置文件/etc/passwd和/etc/group及手动创建的办法来直接添加用户,不过不推荐这个方法。这里推荐大家统一使用useradd命令。
useradd 添加账户
当使用useradd命令不加参数选项,后面直接跟所添加的用户名时,系统首先会读取配置文件/etc/login.defs和/etc/default/useradd文件中所配置的信息建立用户的家目录,并复制/etc/skel中的所有文件(包括隐藏的环境配置文件)到新用户的家目录中。
useradd语法:
[root@localhost ~]# man useradd
NAME
useradd - create a new user or update default new user information
SYNOPSIS
useradd [options] LOGIN
useradd -D
useradd -D [options]
描述:
新账号建立
当不加-D参数时,useradd指令使用命令列来指定新账号的设定值和使用系统上的预设值
(指前文提到的/etc/login.defs和/etc/default/useradd等配置文件)。
新用户账号将产生一些系统档案,如用户目录的建立,拷贝起始档案等,这些均可以利用命令列选项指定。
下面是具体的选项:
-c comment :新账户的password的说明栏
-u: 指定 UID 标记号。这个值是唯一的,除非用-o选项。数字不可为负值
-d: 指定宿主目录,缺省为 /home/用户名
-e: 指定帐号失效时间
-f: 账户过期几天后永久停权。
-g: 指定所属的基本组(组名或GID)
-G: 指定所属的附加组(组名或GID)
-m: 用户目录如不存在则自动建立。
-M: 不为用户建立并初始化宿主目录。优先于/etc/login.defs文件的设定。
-n: 默认情况下,用户的用户组和用户的名称会相同,如果命令加了-n参数,就不会生成和用户同名的用户组
-r: 用来建立系统账户。系统账户的UID会比定义在/etc/login.defs的UID_MIN来的小。
-s: 指定用户的登录Shell
当使用useradd命令不加参数选项,后面直接跟所添加的用户名时,系统首先会读取配置文件/etc/login.defs和/etc/default/useradd中所定义的参数或规则,根据设置的规则添加用户,同时会向/etc/passwd和/etc/group文件内添加新建用户和用户组记录。
当然/etc/passwd和/etc/group的加密资讯文件/etc/shadows和/etc/gshadow也会同步生成记录,同时系统还会根据/etc/default/useradd文件中所配置的信息建立用户的家目录,并复制/etc/skel中的所有文件(包括隐藏的环境配置文件)到新用户的家目录中。
改变新建用户的预设值 :
当执行useradd命令或加-D选项时,可以更改新建用户的默认配置值,或是由命令列编辑的方式更新预设值
为了方便读者阅读查看,依然用表格的方式把useradd加-D选项后,命令后面依然可使用的参数选项展现给大家如下所示
/etc/passwd -使用者账号资讯
/etc/shadow -使用者账号资讯加密
/etc/group -群组资讯
/etc/default/useradd -定义资讯
/etc/login.defs -系统广义设定
/etc/skel -内含定义档的目录
SEE ALSO
chfn(1), chsh(1), passwd(1), crypt(3), groupadd(8), groupdel(8),
groupmod(8), login.defs(5), userdel(8), usermod(8).
useradd实例:
实例3:不加任何参数,直接执行useradd usesname添加用户
[root@localhost ~]# useradd zhonggy
[root@localhost ~]# ls -ld /home/zhonggy/
drwx------ 3 zhonggy zhonggy 4096 May 7 09:17 /home/zhonggy/
在这个例子中,我们添加了一个名为zhonggy系统用户,当查看/home/目录时,会发现系统自动建立了一个zhonggy的目录。
我们再来看/etc/passwd文件中有关新用户zhonggy的记录:
[root@localhost ~]# cat /etc/passwd | grep zhonggy
zhonggy:x:505:505::/home/zhonggy:/bin/bash
[root@localhost ~]# finger zhonggy #使用finger命令来查看用户信息
Login: zhonggy Name: (null)
Directory: /home/zhonggy Shell: /bin/bash
Never logged in.
No mail.
No Plan.
从上文过滤出的zhonggy用户记录来看,用户的UID和GID分别为505,并且zhonggy的家目录为/home/zhonggy,所对应的shell为bash
接下来,我们再看看/etc/shadow、/etc/group和/etc/gshadow文件,是不是也有与zhonggy用户有关的记录:
[root@localhost ~]# grep zhonggy /etc/shadow
zhonggy:!!:16562:0:99999:7:::
You have new mail in /var/spool/mail/root
[root@localhost ~]# grep zhonggy /etc/group
zhonggy:x:505:
[root@localhost ~]# grep zhonggy /etc/gshadow
zhonggy:!::
提示:根据上文结果,我们发现/etc/shadow、/etc/group和/etc/gshadow几个文件都存在和zhonggy用户相关的记录。
我们还可以查看/etc/default/useradd 和/etc/login.defs两个文件的规则,看一下zhonggy用户的增加是不是符合这两个配置文件预设的值。最后可以查看/home/zhonggy目录下的文件,是不是和/etc/skel目录下的一样。
实例 4:useradd的-g、-u参数,执行useradd [参数] username 添加用户
[root@localhost ~]# groupadd -g 801 sa
#创建用户组sa制动gid 801,这个是groupadd命令的用法
[root@localhost ~]# useradd -g sa -u 901 oldboy1
#创建用户oldboy1属于指定组sa,指定uid901,用户名oldboy1
[root@localhost ~]# id oldboy1 #通过id命令查看结果
uid=901(oldboy1) gid=801(sa) groups=801(sa) context=root:system_r:unconfined_t:SystemLow-SystemHigh
生产场景中的创建账户的完整命令例子:
groupadd -g 801 sa
seradd -g sa -u 901 ett
echo “6fuwrfwq3e” |passwd ett --stdin
echo “ett ALL=(ALL) NOPASSWD:ALL” >>/etc/sudoers
visudo -v
history -c
实例5:useradd的——M、-s参数的例子
[root@localhost ~]# useradd oldboy2 -M -s /sbin/nologin
#-M表示不创建家目录,-s指定用户登录后的shell,这里是/sbin/nologin表示禁止登陆。此例在生产环境中部署apache,mysql,nagios服务时经常用到。
[root@localhost ~]# ls -ld /home/ | grep oldboy2
[root@localhost ~]# grep oldboy2 /etc/passwd
oldboy2:x:902:902::/home/oldboy2:/sbin/nologin