用户管理用户授权

1.用户存在的意义:
 用户概念在系统中是系统安全机制的一部分
2.组存在的意义
共享,开放权力
3.用户的查看
(1)whoami   # 查看系统的当前用户

[root@localhost Desktop]# whoami 
	root

在这里插入图片描述

(2)id       # 查看指定用户id信息

id -u       # 查看用户的uid
id -g       # 查看用户的gid
id -n       # 显示名字而不显示id数字

[root@desktop Desktop]# id
	uid=0(root) gid=0(root) groups=0(root)
[root@desktop Desktop]# id root
	uid=0(root) gid=0(root) groups=0(root)
[root@desktop Desktop]# id student
	uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
[root@desktop Desktop]# id -u
	0
[root@desktop Desktop]# id -g
	0
[root@desktop Desktop]# id -nu
	root
[root@desktop Desktop]# id -ng
	root

在这里插入图片描述

(3)用户切换

 su - 用户名称     # ‘-’表示在用户身份切换时同时切换当前用户的环境
 su 用户名称       # 仅仅切换用户身份 

[root@desktop Desktop]# su student
[student@desktop Desktop]$ pwd     #其实并没有切换到student用户
	/root/Desktop
[student@desktop Desktop]$ exit
[root@desktop Desktop]# su - student
	Last login: Tue Oct  2 09:33:22 EDT 2018 on pts/0
[student@desktop ~]$ pwd
	/home/student

在这里插入图片描述

注1:su - 切换时,高级用户切换到低级用户,不需要输入密码,低级用户切换到高级用户需要密码,切换到其他普通用户也需要输入密码 

[root@localhost Desktop]# su - student
Last login: Thu May 11 20:23:54 EDT 2017 on pts/0
[student@localhost ~]$ su - root
Password:
 Last login: Sun Sep 30 22:01:45 EDT 2018 from 172.25.254.42 on pts/1 

 注2:每次su - 切换到其他用户操作之后必须退出,然后再切换到其他用户,如果不切换,就会报错

  [root@localhost Desktop]# gedit file       # root用户可以打开gedit文件
  [root@localhost Desktop]# su - student
  	Last login: Sun Sep 30 23:02:51 EDT 2018 on pts/1
  [student@localhost ~]$ su - root           # 通过两层切换又切换到root用户
  	Password: 	
  	Last login: Sun Sep 30 23:07:19 EDT 2018 from 172.25.254.42 on pts/1
  [root@localhost ~]# gedit file1            # 但是此时不能打开gedit文件,因为打开时,要层层上报,先要经过student用户,才能回到root用户,而student用户不能打开gedit文件,这就报错了 	
  	(gedit:31482): Gtk-WARNING **: cannot open display: 

在这里插入图片描述

4.用户在系统中的存在方式
/etc/passwd      # 用户信息文件 
 用户名称  :  密码  :  uid  :   gid   :   说明   : 家目录  :   默认shell                        
		                            ^                
		                  打开虚拟机时,列表的显示信息	  

在这里插入图片描述

/etc/group            # 用户信息组文件  

组名称   :组密码   :组id   :   组成员 

/etc/shadow           # 认证信息文件 
/etc/skel/.*          # 默认开启shell的配置,用户的骨文件
/home/username       # 用户的家目录 	
5.用户管理命令
(1)用户的删除(userdel)

userdel student      # 删除用户但不删除用户的配置文件
userdel -r student   # 删除用户并且删除用户的配置文件
 [root@localhost Desktop]# useradd westos
 [root@localhost Desktop]# userdel westos
 [root@localhost Desktop]# useradd westos  # 再次建立时就会报错,因为配置文件存在
 useradd: warning: the home directory already exists.
 Not copying any file from skel directory into it.
 Creating mailbox file: File exists	

在这里插入图片描述

解决方案:
[root@localhost Desktop]# userdel -r westos 

(2)用户建立(useradd)   
  建立用户时,读取/etc/login.defs文件内容确定规则,默认uid和gid相等

 useradd -u 8888 westos          # 指定用户uid,默认从1000开始
 useradd -g 8888 westos          # 指定用户初始组id,8888用户组必须是存在的
 useradd -G 8888 westos          # 指定用户的附加组id,8888用户组必须是存在的
 useradd -c "hello" westos       # 指定用户的说明
 useradd -d /home/westos westos  # 指定用户的家目录
 useradd -s /bin/bash westos     # 指定用户的默认shell		

[root@localhost ~]# watch -n 1 'tail -n 4 /etc/passwd /etc/group;ls -ld /home/'   # 监控命令
 	Every 1.0s: tail -n 4 /etc/passwd /etc/group;ls il /home/  Sun Sep 30 23:53:00 2018 	
 	==> /etc/passwd <==	
 	pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
 	gdm:x:42:42::/var/lib/gdm:/sbin/nologin	
 	gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin		
 	tcpdump:x:72:72::/:/sbin/nologin 	
 	
 	==> /etc/group <==	
 	stapsys:x:157:	
 	stapdev:x:158:	
 	tcpdump:x:72:	
 	slocate:x:21:	
 	total 15
 	drwx------  2 root    root    12288 May 11  2017 lost+found
 	drwx------. 5 student student  1024 Oct  1 11:22 student

 [root@localhost Desktop]# useradd westos

在这里插入图片描述

[root@localhost Desktop]# userdel -r westos
[root@localhost Desktop]# useradd -u 8888 westos

在这里插入图片描述

(3)用户组的建立(groupadd)

groupadd -g 8888  组名              # 建立用户组并指定用户组的id
groupdel     组名                   # 删除用户组 	

[root@localhost Desktop]# userdel -r westos   # 删除用户时,会连同用户所在的组一起删掉,除非组名不一样
[root@localhost Desktop]# groupadd -g 8888 westos	
	==> /etc/group <==	
	stapdev:x:158:	
	tcpdump:x:72:	
	slocate:x:21:	
	westos:x:8888:
[root@localhost Desktop]# useradd -g 8888 westos

在这里插入图片描述

[root@localhost Desktop]# userdel -r westos
[root@localhost Desktop]# groupadd -g 8888 westos
[root@localhost Desktop]# useradd -G 8888 linux

在这里插入图片描述

[root@localhost Desktop]# id linux	
	uid=1001(linux) gid=1001(linux) groups=1001(linux),8888(westos)
[root@localhost Desktop]# userdel -r linux
[root@localhost Desktop]# groupdel westos
[root@localhost Desktop]# useradd -c "wesros user" westos

在这里插入图片描述

[root@localhost Desktop]# cat /etc/shells  # 系统中所有版本的shell

在这里插入图片描述

(4)更改信息 

##更改用户组信息
groupmod -g 8888 westos   # 更改组id 

##更改用户信息 

usermod -l  新名称 旧名称      # 更改用户的名称
usermod -u  8888 westos       # 更改用户uid
usermod -g  8888 westos       # 更改用户的初始组
usermod -G  8888 westos       # 更改用户的附加组
usermod -aG 8888 westos       # 添加用户的附加组,
usermod -G  ""   westos       # 清空附加组的身份
usermod -d /home/la westos    # 更改用户的家目录的指向
usermod -md /home/la westos   # 更改用户家目录
usermod -s /bin.sh  westos    # 更改用户的shell
usermod -L westos             # 冻结用户
usermod -U westos             # 解冻用户 	

[root@localhost Desktop]# userdel -r westos 
[root@localhost Desktop]# groupadd -g 6666 westos  # 添加初始组id

在这里插入图片描述

[root@localhost Desktop]# groupmod -g 8888 westos  # 修改初始组id

在这里插入图片描述

[root@localhost Desktop]# useradd linux

在这里插入图片描述

[root@localhost Desktop]# usermod -l redhat linux   # 修改用户名为redhat	

在这里插入图片描述

[root@localhost Desktop]# usermod -l linux redhat   # 把名字改回来
[root@localhost Desktop]# usermod -u 8888 linux     # 修改用户的uid		

在这里插入图片描述

[root@desktop Desktop]# usermod -g 8888 linux  # 修改linux的gid为8888,前提是8888这个组必须存在	   

在这里插入图片描述

[root@desktop Desktop]# usermod -G 8888 linux  # 更改用户的附加组,-G只能改,即只能更改成一个用户有一个附加组

在这里插入图片描述

[root@desktop Desktop]# usermod -G 21 linux  # 更改linux用户的附加组为gid为21的组

在这里插入图片描述

[root@desktop Desktop]# usermod -aG 8888 linux # 给用户添加附加组,此时,一个用户可以拥有多个附加组

在这里插入图片描述

[root@desktop Desktop]# usermod -d /home/westos linux  # 修改用户的家目录的指向为/home/westos

在这里插入图片描述

[root@localhost Desktop]# usermod -d /home/linux linux  # 先改回去,保证家目录指向与家目录相同
[root@localhost Desktop]# usermod -md /home/la linux  # 家目录指向和家目录一起改

在这里插入图片描述

[root@localhost Desktop]# usermod -d /home/westos linux  # 把家目录的指向又改为/home/westos	

在这里插入图片描述

# 恢复环境
[root@localhost Desktop]# usermod -d /home/la linux  
[root@localhost Desktop]# usermod -md /home/la linux

[root@desktop Desktop]#  usermod -s /sbin/nologin linux

在这里插入图片描述

[root@desktop Desktop]# su - linux   # /sbin/nologin是系统用户,外界不能登陆
	This account is currently not available.
[root@desktop Desktop]# usermod -s /bin/bash linux  # 恢复
[root@localhost Desktop]# usermod -L student   # student用户的密码被冻结了
[root@localhost Desktop]# su - linux	
	Last login: Mon Oct  1 02:17:19 EDT 2018 on pts/0
[linux@localhost ~]$ su - student   # 切换student失败	 
	Password: 	 
	su: Authentication failure
[linux@localhost ~]$ exit	
	logout
[root@localhost Desktop]# usermod -U student   # 解冻密码
[root@localhost Desktop]# su - linux	
	Last login: Mon Oct  1 02:33:07 EDT 2018 on pts/0
[linux@localhost ~]$ su - student   # 可以切换	
	Password: 	
	Last login: Sun Sep 30 23:07:47 EDT 2018 on pts/1	
	Last failed login: Mon Oct  1 02:33:21 EDT 2018 on pts/0	
	There was 1 failed login attempt since the last successful login.
7.用户认证信息
(1)/etc/shadows		#记录用户认证信息

[root@localhost Desktop]# tail -n 3 /etc/shadow	
	gnome-initial-setup:!!:16261::::::	
	tcpdump:!!:16261::::::	
	linux:!!:17805:0:99999:7:::	

此文件一共有九列:                  
  
用户名称:用户密码:用户密码最后一次被更改的时间:用户密码最短有效期:用户密码最长有效期:密码警告期限:用户非活跃天数:用户到期日:用户自定义列,目前没有启用	
                                ^
                   如果是0,则登陆时必须先更改密码
[root@desktop Desktop]#  watch -n 1 ' tail -n 4 /etc/shadow'   # 监控
	Every 1.0s:  tail -n 4 /etc/shadow                     Tue Oct  2 11:51:46 2018 g
	nome-initial-setup:!!:16261::::::
	tcpdump:!!:16261::::::
	apache:!!:17694::::::
	linux:!!:17806:0:99999:7:::
[root@localhost Desktop]# useradd westos	

在这里插入图片描述

[root@localhost Desktop]# passwd westos	 

在这里插入图片描述

[root@localhost Desktop]# usermod -L westos  # 冻结密码,即给密码前加一个叹号

在这里插入图片描述

[root@localhost Desktop]# usermod -U westos  # 解冻密码,即消除叹号	

在这里插入图片描述

[root@localhost Desktop]# passwd -d westos  # 删除密码   

在这里插入图片描述

[root@localhost Desktop]# passwd -n 1 westos	

在这里插入图片描述

[root@localhost Desktop]# passwd -n 0 westos # 恢复环境
[root@localhost Desktop]# vim /etc/shadow   # 以文件形式改变westos用户的用户密码最后一次被更改的时间,当改为0时,每次登陆时都要改密码 
          41 westos::0:0:99999:7:::      

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(2)用户密码

passwd  -S      westos        # 查看westos用户密码信息
passwd 		westos        # 更改westos密码,超级用户才可以执行此条命令
passwd  -d 	westos        # 清空westos密码
passwd  -e      westos        # 修改用户密码最后一次被更改的时间,会改变用户最后一次更改密码时间为0,此时用户在登陆时会被强制更改密码
chage  -d 0     westos  
passwd -n 1     westos	      # 改变用户密码最短有效期,westos用户在1天之内不能修改密码
chage  -m 1     westos
passwd -w 2	westos	      # 改变用户密码最长有效期,密码过期前两天有警告输出
chage  -W 2	westos   
passwd -i 1	westos	      # 改变用户非活跃天数,密码过期后仍可登陆系统的天数
chage  -I 1	westos
chage  -E  2018-11-11 westos  # 用户到期日,westos用户在2018-11-11日会被冻结
passwd  -l 	westos        # 冻结westos用户密码,即在用户密码前加入“!!”
passwd  -u 	westos        # 解冻密码
usermod -L 	westos        # 冻结密码,在用户密码前加入‘!’
usermod -U 	westos        # 解冻密码,但只在密码不为空时使用
#用户自定义列,目前没有启用  

注意:	
普通用户改密码时	
	1.必须知道当前永久原始密码	
	2.密码不能和帐号名称相似	
	3.密码不能是纯数字或纯字母	
	4.密码不能是有序的字母和数字的组合	

 区分passwd和usermod冻结和解冻密码

[root@localhost Desktop]# passwd -l westos    # 冻结westos用户密码,即在密码前加两个叹号	
	Locking password for user westos.	
	passwd: Success	

在这里插入图片描述

[root@localhost Desktop]# passwd -u westos   # 解锁,一次性消掉两个叹号	
	Unlocking password for user westos.	
	passwd: Success 	

在这里插入图片描述

[root@localhost Desktop]# passwd -l westos
[root@localhost Desktop]# usermod -U westos  # 解锁,但一次只能消除掉一个叹号

在这里插入图片描述

[root@localhost Desktop]# usermod -U westos  # 必须解锁两次才能将锁解开

# passwd的其他用法
[root@localhost Desktop]# passwd -e westos  # 以命令方式修改用户密码最后一次被更改的时间
	Expiring password for user westos.
	passwd: Success
[root@localhost Desktop]# passwd westos   # 重设密码就可以恢复
8.用户授权
(1)权力下放文件为/etc/sudoers   
    此文件可以用vim直接编辑,但是不提供语法检测,  
    也可以用visudo编辑,提供语法检测 

(2)下放方式用户   主机名=(得到的用户身份) 命令	
tom  localhost=(root)    /usr/sbin/useradd  # tom用户在localhost主机上以root用户身份执行useradd命令
tom  localhost=(root)  NOPASSWD: /usr/sbin/useradd # tom用户在localhost主机上以root用户身份免密执行useradd命令

(3)测试

[root@localhost Desktop]# visudo	
	99 ##Allow tom to run useradd	# 这只是一行解释,不写也可以
	100 tom    localhost=(root) /usr/sbin/useradd
[root@localhost Desktop]# useradd tom
[root@localhost Desktop]# passwd tom
[root@localhost Desktop]# su - tom
[tom@localhost ~]$ useradd lala    # 还是不能建立用户,因为执行useradd命令时,根本没有调用/etc/sudoers文件	
	-bash: /usr/sbin/useradd: Permission denied
[tom@localhost ~]$ sudo useradd lala  # 用sudo命令调用文件,使之生效	
	[sudo] password for tom:    # 需要输入tom用户的密码,才能执行命令
[tom@localhost ~]$ id lala   # 用户建立成功	
	uid=8892(lala) gid=8895(lala) groups=8895(lala) 

		
# 免密
[root@localhost Desktop]# visudo   # 注意语法	
	99 ##Allow tom to run useradd	
	100 tom    localhost=(root) NOPASSWD: /usr/sbin/useradd
[root@localhost Desktop]# su - tom	
	Last login: Mon Oct  1 03:56:42 EDT 2018 on pts/2
[tom@localhost ~]$ sudo useradd linux
[tom@localhost ~]$ id linux	
	uid=8893(linux) gid=8893(linux) groups=8893(linux)

猜你喜欢

转载自blog.csdn.net/wzt888_/article/details/82935889