【linux】03_用户管理与组管理

前言:Linux系统是个多用户系统,每个帐号都可以用来做什么,我们一定要清楚,这涉及到安全问题。在工作中尽量避免使用root帐号直接登陆系统,因为root帐号权限太高,可能会发生误操作。

1.用户在系统中的存储方式

1./etc/passwd 用户信息文件
在这里插入图片描述
这里只显示/etc/passwd前15行。上图可以看到,一共有7个字段。

  • 字段1:用户名
  • 字段2:该账号的口令。这里显示x,是因为早期的Unix系统口令确实存放在这里,但考虑到安全因素,后来就将口令存放在/etc/shadow中,这里只用x代替。
  • 字段3:用户标识号uid。系统是通过这个数字识别用户身份的。这里的0就是root,如果我们把其他用户的uid修改为0,系统会认为这也是系统管理员,即一个系统上的系统管理员不一定只有root。如果我们自定义一个普通用户,会看到该账户的标识号是大于或等于1000。
  • 字段4:组标识号gid。这个字段对应着/etc/group中的一条记录。
  • 字段5:为注释说明,没有实际意义。通常记录该用户的一些属性。
  • 字段6:用户的家目录,当用户登陆时,就处在这个目录下。用户的家目录是可以自定义的,只需要将/etc/passwd文件中对应用户那行的本字段修改即可。
  • 字段7:用户的shell(Linux的shell有sh、csh、ksh、tcsh、bash等多种,而RH/CS的shell是bash)。所谓shell就是用户登陆后,要启动一个进程,用来将用户下达的指令传给内核。上图中,可以看到该字段不仅有/bin/bash还有一些/sbin/nologin,它表示不允许该账号登陆。如果想建立一个不允许登陆的账号,可以把该字段改成/sbin/nologin,默认是/bin/bash。

2./etc/shadow 认证信息文件
在这里插入图片描述
这里以用户kiosk的身份查看/etc/shadow文件,权限受限。查看了该文件权限后,发现是000,但root账户是可以访问或者更改的。
【注】很多程序的运行都与权限有关,而权限与uid与gid有关。因此各程序需要读取/etc/passwd来了解不同账号的权限。所以/etc/passwd的权限需设置为644这种情况。早期密码虽然加密过,但由于存放在/etc/passwd的第二个字段下,容易被窃取。因此后来将密码移动到/etc/shadow文件中,并加入很多的密码限制参数。
在这里插入图片描述
shadow文件中由:分隔成9个字段。

  • 字段1:用户名,与/etc/passwd对应。
  • 字段2:用户密码,是该账号的真正密码。虽然已经加密过,但仍有被破解的风险。所以/etc/shadow文件权限设置为000。
  • 字段3:上次更改密码的日期,这个数字以1970年1月1日和上次更改密码的日期为基准计算而来。
  • 字段4:要过多少天才可以更改密码,默认是0,即不受限制。
  • 字段5:密码多少天后到期,即在多少天内必须改密码。默认是99999,即永远不需改。
  • 字段6:密码到期前的警告期限。若这个值设置为7,则表示当7天后密码到期,系统就发出警告,提醒用户他的密码将在7天后到期。
  • 字段7:账号失效期限。若这个值设置为3,则表示密码已经到期,但用户没有在到期前修改密码,那么再过3天,该用户的账号就会被锁定失效。
  • 字段8:账号的生命周期。与字段3算法一样。表示该账号在这个日期前可以使用,到期失效。
  • 字段9:保留,没有意义。

用户密码:
账户创建后,默认是没有设置密码的,只有设置好密码后,才可以登录系统。

用户密码的命令:
passwd		westos	##更改westos密码
passwd -l	westos	##对密码加锁
passwd -u	westos	##对密码解锁
passwd -d	westos	##清空westos密码

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

passwd命令后如果不加用户名,则是为自己设定密码。
在这里插入图片描述
passwd -l使zoe账号失效,其实就是在/etc/shadow文件中第二轮列前面加了!!。
在这里插入图片描述
登陆不上去了。
(如果管理员想让某个账号暂时无法使用密码登陆主机,最简单的方法就是让他的密码变成不合法即改变shadow的第2字段长度)
在这里插入图片描述
解锁之后,密码字段恢复正常。
在这里插入图片描述
用户可以正常登入。

用户密码最后一次被更改的时间:
passwd -e westos	##改变用户最后一次更改密码的时间为0
				    ##用户在登录时会被强制修改密码

用户密码最短有效期:
passwd -n 1 westos	##westos用户在1天之内不能修改密码

用户到期日:
	chage -E 2018-09-23 westos	##westos用户在2018-09-23日到期

3./etc/group 用户组信息文件
在这里插入图片描述

  • 字段1:组名称
  • 字段2:该组的口令
  • 字段3:gid
  • 字段4:组成员

4./etc/skel/.* 默认开启shell的配置,用户的骨文件

5./home/username 用户的家目录

2.用户管理

1.用户的查看

1)
	查看当前用户
	whoami		##查看当前用户
2)
	系统中用户的查看
	id 		##查看指定用户id信息
	id
		-u	##查看用户的uid
		-g	##查看用户的gid
		-G	##查看用户所在的所有组的id
		-n	##显示名字而不显示id数字

在这里插入图片描述
2.用户的切换

1)命令su
su - 用户名称
su - 中“-”表示用户身份切换时同时切换当前用户的各种环境变量
su - 执行高级用户切换到低级用户时不需要密码,低级用户切换到高级用户需要,平级切换也需要
【注意】每次su切换到其他用户操作完成之后退出,再切换到另外用户操作
在这里插入图片描述
如果不加-切换到root账户时,当前目录没有变化。
在这里插入图片描述
加上-切换到root账户时,当前目录为root的家目录,这跟直接登陆root账户是一样的。
2)命令sudo
使用su可以实现从普通用户切换到root身份,但如果哪个用户泻露了root的密码,系统就很不安全了。为了改进这个问题,Linux系统工程师设计了sudo这个命令。使用sudo命令执行一个只有root才能执行的命令是可以办到的,但是需要输入用户自己的密码。默认情况下,只有root用户才能使用sudo命令,普通用户想要使用sudo,是需要root预先设定的。

1.权力下放文件为/etc/sudoers
  此文件可以用vim直接编辑,但是不提供语法检测
  也可以使用visudo编辑此文件,visudo命令是提供语法检测的

这里我使用的是vim直接编辑该文档。
在这里插入图片描述
编辑相关文件/etc/sudoers。默认root支持sudo,是因为文件中有一行
root ALL=(ALL) ALL。(下图第98行)
在这里插入图片描述
在这一行下面加入zoe ALL=(ALL) ALL,就可以让zoe用户拥有sudo权限。
这个命令分成三段理解,其中zoe表示指定一个名为zoe的用户,使其拥有isudo特权;ALL=(ALL),左边ALL指的是所有主机,右边ALL指的是获取哪个用户的身份,这一句几乎不用配置;最后一段设定的是使用sudo的命令有哪些。

用户	主机名称=(得到的用户身份)	命令

tom	localhost=(root)	/usr/sbin/useradd	 
##tom用户可以在localhost主机以root用户身份执行useradd命令
tom	localhost=(root) NOPASSWD: /usr/sbin/useradd	
##tom用户可以在localhost主机以root用户身份免密执行useradd

再验证一下zoe账户的权限:
在这里插入图片描述
先切换到zoe账户,执行ls,发现无法打开目录,权限不够,因为当前所在的目录仍为/root,zoe账户没有任何权限。
在这里插入图片描述
然而使用命令sudo ls,再输入zoe账户自身的密码后,就有了权限。初次使用sudo命令时,会出现上面的提示,当再次使用sudo命令时就不再提示。
如果每增加一个用户就设置一行,太麻烦了,这里有其他方法。
在这里插入图片描述
把第105行前面的#去掉即可,使这一行生效。这句命令的意思是,wheel这个组的所有用户都拥有了sudo的权利。接下来,只要把需要设置sudo权限的所有用户加入到wheel这个组中即可。

3.用户管理命令
1)用户的建立

	useradd	-u 8888 	westos	    ##指定用户uid
	useradd	-g 21		westos	    ##指定用户初始组id,“21”用户组必须时存在的
	useradd	-G 21		westos	    ##指定用户附加组id,“21”用户组必须时存在的
	useradd	-c “hello” 	westos	    ##指定用户的说明
	useradd	-d /home/lee	westos	##指定用户的家目录
	useradd	-s /sbin/nologin westos	##指定用户默认shell,禁止该用户交互式登陆
【注意】也可以连在一起写,一句命令设定想要为用户设定的所有内容

在这里插入图片描述
使用u参数,在创建用户zoe的同时直接指定其uid为1688 。否则应该为1002(1001+1)
在这里插入图片描述
使用g参数,在创建用户potizo的同时指定其所属组为zoe(也可以只写gid)。否则所属组是potizo,这里可以看到potizo和zoe两个用户的属组gid都是1688 。
在这里插入图片描述
使用G参数,指定用户的附属组。
在这里插入图片描述
当然也可以直接在一句命令中设定所有的内容。
2)用户的删除

	userdel
	userdel  westos		   ##删除用户但不删除用户的家目录
	userdel -r westos	   ##删除用户并删除用户的家目录

在这里插入图片描述
这里先使用userdel 不带r参数 删除用户potizo。命令执行的效果是potizo用户被删除了,但是其家目录依然存在。
在这里插入图片描述我们再新建一个用户zoe以便试验带r参数的效果。很明显,带了r参数,家目录也一并删除了。

3)更改用户信息

usermod
usermod  -l  新名称	westos		##更改用户的名称
usermod  -u  8888	westos		##更改用户的uid
usermod  -g  21		westos		##更改用户的初始组
usermod  -G  21		westos		##更改用户的附加组
usermod	 -aG 21		westos		##添加用户的附加组
usermod	 -G  ""		westos		##删除用户所有附加组
usermod	 -c  "haha"	westos		##指定用户说明文字
usermod  -md /home/lee  westos		##更改用户家目录
usermod  -s  /sbin/nologin  westos	##更改用户的shell
usermod  -L		westos		##冻结用户
usermod  -U		westos		##解锁用户

usermod大部分命令格式跟上面useradd差不多,这里主要看最后两个。
在这里插入图片描述
在超户下冻结了zoe账户,但是超户还是能进去。。。所以我切换到potizo用户下,在普通用户下面切普通用户,发现登录失败。
在这里插入图片描述
解冻zoe用户后,从普通用户potizo下切zoe,就可以切过去了。

3.用户组管理

1)组的建立

	groupadd	 ##建立用户组
	groupadd [-g GID] groupname ##建立用户组并指定用户组id
	groupadd -g 8888 potizo ##建立一个名为potizo的用户组,该组的gid为8888

在这里插入图片描述
如果不加-g选项,则按照系统默认的gid创建组。与uid一样,gid也是从1000开始的。
在这里插入图片描述
2)组的删除

	groupdel	 ##删除用户组

在这里插入图片描述
命令groupdel没有特殊选项,但是有一种情况不能删除组。
在这里插入图片描述
那就是如果我们要删除组potizo,该组内仍有一个名为user1的账户,这种情况下会报错“不能移除用户“user1”的主组”。
在这里插入图片描述
只有删除了user1账户后才可以删除potizo组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值