众所周知Linux是一个多用户的操作系统,那为什么需要有用户的存在呢?这是一个值的思考的问题。从生活角度就可以很轻松的理解为什么需要用户,Linux中的每一个用户就可以看作每一个人,每个用户所拥有的资源就可以看作每个人所拥有的钱,每个人就只能花自己的不能花别的钱。所以对于操作系统也一样,每个用户都拥有自己的运行环境,分配自己所拥有的资源,不能在别的用户环境中运行。所以,对于Linux操作系统来说,用户存在的意义就是安全。而组存在的意义就是对权力的共享。
如何对操作系统中的用户进行管理呢?请认真阅读本篇文章。
1.用户的查看
就像人一样,每个人都拥有一个唯一的只属于自己的身份证号,用户也一样,每个用户都拥有唯一的id号码,只要用户id存在,则证明该用户存在。
[root@localhost ~]# whoami #查看当前用户
[root@localhost ~]# id -u root #查看root用户的uid
[root@localhost ~]# id -g root #查看root用户初始组id
[root@localhost ~]# id -gn root #查看用户的组不显示id显示名字
[root@localhost ~]# id student #查看student用户的信息
[root@localhost ~]# id -G student #查看student用户所有组
[root@localhost ~]# id -Gn student #查看student用户的组显示名字,不显示id
如下图:
2.用户切换
Linux操作系统中,用户之间可以进行切换。一个用户包含两方面内容,身份和环境,所以在切换用户的时候不仅需要将身份切换,还要将运行环境进行切换,下图中,pwd可以显示现在所处路径,侧面可以反映对环境的切换。
如下图,是对用户身份和环境都进行了切换,所以切换前后所处路径是不同的:
如果不加“-”,则只是对身份进行了切换,环境没有切换,如下图:
3.用户的创建
一个用户所涉及的文件:
/etc/passwd #用户密码信息
/etc/group #用户组信息
/etc/shadow #用户认证信息
/etc/skel/.* #默认开启shell的配置,用户的骨文件
/home/username #用户家目录
[root@localhost ~]# vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
#用户信息文件 用户:密码:uid:gid:描述:家目录:默认shell
[root@localhost ~]# vim /etc/group
root:x:0:
#用户文件信息 组名:组密码:组id:组成员
[root@localhost ~]# vim /etc/shadow
postfix:!!:16197::::::
/home/username #用户家目录文件
我们可以使用以下命监控用户信息:
[root@localhost ~]# watch -n 1 'tail -n 3 /etc/passwd /etc/group;echo ===============;ls -l /home/'
#创建组
[root@localhost ~]# groupadd -g 8888 test
[root@localhost ~]# groupadd -g 6666 westos
#创建用户,在建立用户的时候确保初始组存在
[root@localhost ~]# useradd -u 1111 #uid
-g 6666 #初始组id
-G 8888 #附加组
-c "hello westos" #用户说明
-d /home/westos #用户家目录
-s /bin/sh westos #指定默认shell
下图就是使用上一个命令创建的uid=1111,gid=6666,附加组为8888,用户说明为“hello”的westos用户。
那如何删除用户,使用userdel命令,如下图,在删除用户时需要加上-r,如果不加-r用户不删除配置文件,在重新创建用户时是会出现错误。删除用户,删除组的命令如下:
[root@localhost ~]# userdel -r westos
[root@localhost ~]# groupdel test
新建的用户uid总是从1000开始,这是因为在/etc/login.defs文件中进行了定义,定义部分如下:
UID_MIN 1000
UID_MAX 60000
4.更改用户信息
#更改组id
[root@localhost ~]# groupadd test
[root@localhost ~]# groupmod -g 2222 test
#更改用户信息
[root@localhost ~]# useradd westos
[root@localhost ~]# usermod -l redhat westos #更改用户名
[root@localhost ~]# usermod -l westos redhat
[root@localhost ~]# usermod -g 2222 westos #更改用户gid
[root@localhost ~]# usermod -G 1001 westos #更改用户附加组
[root@localhost ~]# usermod -u 8888 westos #更改用户uid
[root@localhost ~]# usermod -c "hahaha" westos #更改用户说明
[root@localhost ~]# usermod -c "" westos #清除用户说明信息
[root@localhost ~]# usermod -G "" westos #清除用户附加组
[root@localhost ~]# usermod -aG 21 westos #添加用户附加组
[root@localhost ~]# usermod -d /hom/lee westos #更改用户家目录指向,与原来的/home/westos就没有了关系,不会产生lee目录
[root@localhost ~]# usermod -d /home/westos westos #将westos家目录改为westos
[root@localhost ~]# usermod -s /sbin/nologin westos #更改shell,这个shell不允许登陆
[root@localhost ~]# usermod -L student #冻结用户密码,冻结后,在输入密码登陆时禁止
[root@localhost ~]# usermod -U westos #解锁
5.用户信息认证
westos:!!:17805:0:99999:7:::(9段)
用户名:用户密码:用户密码最后一次被更改的时间:用户密码最短有效期(在这些天内,密码不能被修改):密码最长有效期(用户在这些天内必须被修改):警告期:用户非活跃天数:用户到期日:用户自定义
[root@localhost etc]# passwd -S westos #查看用户密码信息
可以使用下述命令对用户密码信息进行监控:
[root@localhost home]# watch -n 1 'tail -n 3 /etc/shadow;passwd -S westos'
上图中处红框标注处显示的是NP,表示没有密码,这是因为在创建westos用户的时候没有设置密码,在密码设置之后,就会变为下图:
#添加用户密码,root用户在更改普通用户密码时没有限制,普通用户在更改密码时有强度限制
[root@localhost ~]# passwd westos
Changing password for user westos.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
密码锁定后在密码前面会出现“!”的标志,“!”的数量表示密码锁定的强度,如下图:
[root@localhost ~]# usermod -L westos #密码锁定
再锁定一次后就会如下图:
[root@localhost ~]# passwd -l westos #密码所定,强度为!!,需要用usermod -U westos解锁两次。
[root@localhost ~]# passwd -u westos #解锁!!
[root@localhost ~]# passwd -e westos #用户密码最后一次被更改的时间,设置为0的时候在需要密码登陆时会被强制修改密码。
[root@localhost ~]# chage -d 0 westos
[root@localhost ~]# passwd -n 1 westos #设置密码最短有效期
[root@localhost ~]# chage -m 1 westos
[root@localhost ~]# passwd -i 7 westos #设置用户非活跃天数
[root@localhost ~]# chage -I 2 westos
[root@localhost ~]# chage -E 2018-11-11 westos #设置用户到期日
[root@localhost ~]# chage -E 2018-11-11 westos #设置用户到期日
6.用户授权
1.权力下放文件为/etc/sudoers
此文件可以用vim直接编写,但是不提供于法检测
也可以使用visudo编辑此文件,visudo命令提供于法检测,如果文件修改语法出现问题,在退出后会出现如下情况,“e”建继续编辑。
给文件添加如下内容之后,tom用户在localhost主机上以root用户的身份免密执行useradd和userdel命令:
在使用时,需要用sudo进行调用: