Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:
用户账号的添加、删除与修改。
用户口令的管理。
用户组的管理。
一、用户账号
用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。
添加用户 useradd
useradd 选项 用户名
参数说明:
选项:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
用户名:
-m 使用者目录如不存在则自动建立。
指定新账号的登录名。
示例:
#会默认创建用户主目录、用户组
[root@root home]# useradd gj
[root@root home]# ll
total 8
drwxr-xr-x 2 root root 4096 Mar 7 13:36 docker
drwx------ 2 gj gj 4096 Jun 13 12:22 gj
[root@root home]#
增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。
修改用户 usermod
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
usermod 选项 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。
-l 新的用户名
示例:
[root@root home]# usermod -c "修改用户名" -l gong gj
用户删除 userdel
如果一个用户的账号不再使用,可以从系统中删除。
删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。
userdel 选项 用户名
常用的选项是 -r,它的作用是把用户的主目录一起删除。
示例:
[root@root home]# useradd yj #创建新的用户
[root@root home]# ll
total 12
drwxr-xr-x 2 root root 4096 Mar 7 13:36 docker
drwx------ 2 gong gj 4096 Jun 13 12:22 gj
drwx------ 2 yj yj 4096 Jun 13 12:32 yj
[root@root home]# userdel -r yj #删除用户
[root@root home]# ll
total 8
drwxr-xr-x 2 root root 4096 Mar 7 13:36 docker
drwx------ 2 gong gj 4096 Jun 13 12:22 gj
切换用户
1.切换用户的命令为:su username 【username就是用户名】
2.从普通用户切换到root用户,还可以使用命令:sudo su
3.在终端输入exit或logout或使用快捷方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行的exit命令
4.在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例如:【su - root】
$
表示普通用户
#
表示超级用户,也就是root用户
[root@root home]# su gong
[gong@root home]$ cd gj/
[gong@root ~]$ ls
[gong@root ~]$ touch gj.txt #创建文件
[gong@root ~]$ exit #退回原来用户
exit
[root@root home]#
gong代表用户名,@root代表计算机名称。
口令管理
用户密码操作的是/etc/shadow文件
passwd 选项 username
-l 锁定账号密码!
-u 解锁账号
-d 删除密码(账号无密码可登录)
-n/-x 密码最小/最大使用期
-w 密码过期前几天发出警告
-i 密码过期几天后锁定账号
-e 密码立刻过期(下次登录必须修改密码)
-S 查看账号的密码状态(L锁定、P活动、N没密码)
示例:
在linux中密码是不可见的
当前用户是root
[root@root home]# passwd gong
Changing password for user gong.
New password:
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password:
passwd: all authentication tokens updated successfully.
当前用户是gong
[gong@root ~]$ passwd
Changing password for user gong.
Changing password for gong.
(current) UNIX password:
New password:
当普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。
二、管理用户
上面我们也讲过增加用户账号就是在/etc/passwd增加记录。
示例:
[gong@root home]$ vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
ftp_user:x:1003:1003::/var/ftp_user:/bin/bash
gong:x:1004:1004:修改用户名:/home/gj:/bin/bash
gong:x:1004:1004:修改用户名:/home/gj:/bin/bash 这条就是我创建的用户。其中每一行代表一个用户,每个用户的描述是用冒号分隔开的 7 个字段。
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
上面我们也指定了用户的密码,那我们来看看密码文件吧。
示例:
[root@root etc]# cat shadow
nscd:!!:18312::::::
tcpdump:!!:18312::::::
nginx:!!:18327::::::
dockerroot:!!:18327::::::
ftp_admin:$6$oPytIPeL$gqC0b1.L2SDnPXomGWdiUaP8ZkQduuqkhDAbkeMb/er1/5ykrATyQHXxXJaIrt0OgVy4ZMyrH9snB7rSgdt5H.:18331:0:99999:7:::
ftp_user:$6$LZc9qtSf$6rjc5Am8ENd/YpA0QWevNxF6VTHMOURV.DMx9pjxnvK.4NLd21FPdOIAlb7DMvBQUw1vommO82gd1K/5HwBAo.:18331:0:99999:7:::
gong:$6$LHauKGmR$3C/vUUbCOhXWrMY.cd0zZljbTmvsRlRzMul7bCYgG5aT0j.HSSpbtXr/gpzvRLc0TtgEC5G3RmM/coMvmio/e0:18426:0:99999:7:::
它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。这些字段是:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
增加用户组
groupadd 选项 用户组
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
示例:
[root@root ~]# groupadd gongj123
此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。
示例
groupadd -g 101 group2
此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。
修改用户组
groupmod 选项 用户组
常用的选项有:
-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字
示例:
groupmod -n gongj123456 gongj123
将组gongj123的组名修改为gongj123456。
删除用户组
groupdel 用户组
示例:
groupdel group2
切换组
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。
用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:
$ newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。
用户组的所有信息都存放在/etc/group文件中。
将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。
每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。
当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。
用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:
组名:口令:组标识号:组内用户列表
示例:
[root@root ~]# cat /etc/group
root:x:0:
gj:x:1004:
gongj123456:x:1007:
"组名"是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
"口令"字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
"组标识号"与用户标识号类似,也是一个整数,被系统内部用来标识组。
"组内用户列表"是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。