用户和用户组
1.1 用户分类
1.1.1 按位置分类
- 本地账号
- 远程(域)账号
1.1.2 按功能分类
- 超级用户:即root用户,root用户是超级用户,权利无限,需要做好保密工作。root用的UID为0。
- 普通用户
- 系统用户:这类用户是为了满足系统自己的运行而内建的一些账号。在RHEL7中,它们的UID范围为:1-999;RHEL6中UID范围为:1-499
- 由管理员创建的普通用户,权限受到一定限制,只有在自己的宿主目录权限是完整的。RHEL7中UID范围:1000+;RHEL6中UID范围:500+。
- 伪用户:与系统和程序有关,通常不需要或者不能登录系统,也没有宿主目录。它们是为了应用程序的运行而附加的用户,比如:nginx、apache。
root用户和普通用户登录系统后界面的区别:
root用户:
Last login: Tue Oct 24 16:47:39 2017 from 192.168.1.68
[root@caimeidev2 ~]#
普通用户:
Last login: Tue Oct 24 16:47:39 2017 from 192.168.1.68
[cmuser@caimeidev2 ~]$
注意"#"
和"$"
1.2 用户文件位置和结构
用户信息文件:该信息保存在/etc/passwd文件
用户密码文件:该信息保存在/etc/shadow文件,包含用户对应的密码信息
/etc/shadow文件中每个字段所包含的意思:
1.3 用户相关命令
1.3.1 useradd命令
作用:
添加用户
常用选项:
-u UID
-d 宿主目录
-g 起始组(只能有一个)
-G 附加组(可以有多个)
-s 登陆shell
-M 不要自动建立用户的登入目录
参数:
用户名
示例:
1. 添加一个叫zhangsan的用户,useradd zhangsan
2. 创建用户lisi并指定其UID为1100,useradd -u 1100 lisi
3. 创建用户wangwu并指定其宿主目录为/opt/wangwu,useradd -d /opt/wangwu wangwu
4. 创建用户zhaoliu,但是强制其不创建宿主目录,useradd -M zhaoliu
5. 创建用户chenqi,并指定其所属组和附加组,useradd -g 1100 -G 1100,1004 chenqi
6. 创建一个不需要登录的用户caoba,useradd -s /sbin/nologin caoba
1.3.2 usermod命令
作用:
修改用户信息
说明:
usermod命令的使用方式和useradd命令一直,这里不再赘述。
1.3.3 userdel命令
作用:
删除用户
常用选项:
-r 连同用户的宿主目录一起删除
参数:
用户名
示例:
1. 删除用户caoba,连同其家目录一起删除,userdel -r caoba
1.3.4 passwd命令
作用:
修改用户密码
常用选项:
–stdin 非交互式修改用户密码:
格式:
passwd 用户名
echo “密码” | passwd –stdin 用户名
示例:
1. 修改用户zhangsan的密码,passwd zhangsan
2. 通过非交互式方式修改用户zhangsan的密码,echo “123456” | passwd –stdin zhangsan
1.3.5 chpasswd
作用:
修改用户密码
示例:
[root@caimeidev2 ~]# echo username:password | chpasswd
2 用户组管理
2.1 用户组分类
2.1.1 按位置分类
- 本地组
- 远程(域)组
2.1.2 按功能分类
- 超级用户组,GID为0
- 普通用户组
- 系统用户组,RHEL7中GID范围1-999,RHEL6中1-499
- 本地用户组,RHEL7中GID范围1000+,RHEL6中500+
2.2 用户组文件位置和结构
- 用户组信息文件,/etc/group
- 用户组密码文件,/etc/gshadow,这个文件一般不怎么使用,这里不做详细介绍。
2.3 用户组相关命令
2.3.1 groupadd命令
作用:
新建一个用户组
常用选项:
-g 指定组ID
参数:
用户组名
示例:
1. 创建一个组名叫alex的用户组,groudadd alex
2. 创建一个组名叫jack的用户组,并且指定组ID为1200,groupadd -g 1200 jack
2.3.2 groupmod命令
作用:
修改用户组信息
说明:
groupmod命令和groupadd命令用法一直,这里不再赘述。
2.3.3 groupdel命令
作用:
删除用户组
常用选项:
无
参数:
用户组名
示例:
1. 删除用户组jack,groupdel jack
3 查看用户信息
3.1 id命令
作用:
查看用户简单信息
常用选项:
无
参数:
id 用户名
示例:
1. 查看root用户的信息,id root
3.2 w命令
作用:
显示已登录系统的用户列表,并显示用户正在执行的命令和程序
常用选项:
无
参数:
无
示例:
3.3 who
作用:
显示目前登录系统的用户信息
常用选项:
无
参数:
无
示例:
3.4 whoami命令
作用:
显示目前登录系统的用户信息
常用选项:
无
参数:
无
示例:
注意:合起来写和分开写有一定的区别。
w、who、whoami三个命令比较有趣的是命令越长信息越少。
[root@caimeidev2 ~]# w
12:04:02 up 3:33, 1 user, load average: 0.00, 0.04, 0.01
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.1.68 11:09 0.00s 0.01s 0.00s w
[root@caimeidev2 ~]# who
root pts/0 2017-10-26 11:09 (192.168.1.68)
[root@caimeidev2 ~]# whoami
root
3.5 finger命令
作用:
显示目前登录系统的用户信息
常用选项:
无
参数:
无
示例:
4 用户切换
4.1 su命令
作用:
可以用来从一个用户切换到另外一个用户。需要注意的是root用户切换到普通用户时,不需要密码,而普通用户切换到root用户或普通用户时,需要密码。
常用选项:
- 使 shell环境 成为切换用户的 shell
参数:
用户名
示例:
1. 比较su和su -的区别
上图中第一次用su切换用户zhangsan和后面一次用su - 切换的界面展现形式是不一样的,第一次虽然切换用户,但是shell环境还是root的,而第二次则用户和shell环境都切换成zhangsan的了。
总结:
su命令和su - 命令最大的本质区别就是:前者只是切换了身份,但Shell环境仍然是原来用户的Shell;而后者用户和Shell环境一起切换成新用户的了。只有切换了Shell环境才不会出现PATH环境变量错误。
5 实战
- 用户宿主目录不小心被删除了,怎么办?
宿主目录里面有什么?宿主目录里面比较重要的是“.bash”开头的几个文件,其他的为缓存文件
我们需要这样恢复,先在home下新建一个和用户名对应的目录,然后在把用户模板文件拷贝过来,用户模板文件存放在/etc/skel