linux用户和用户组

linux用户和用户组

简介

linux、Unix是一个多用户、多任务的操作系统,每个用户都有一个唯一的用户名和用户口令,在登录系统时,只有在正确输入了用户名和密码,才能登入系统和相应的目录(除了密码验证外,还可以是密钥验证。)

Linux 系统中有三种角色:所有者(用户),用户组与其他人;例如:在一个用户组内,该用户组下有A,B两个用户,用户拥有各自的私密空间和公用空间,不是该用户组下的就是其他人,其他人无法访问用户组下的内容。

linux系统中用户角色划分

在linux系统中用户是分角色的,在linux系统中,由于角色不同,权限和所完成的任务也不同,对于linux系统来说,用户的角色是通过UID和GID识别的:特别是UID,在linux系统运维工作中,一个UID是唯一标识一个系统用户的账号(相当于我们的身份证)用户系统账号的名称(如syz)其实给人(管理员)看的,linux系统能够识别的仅仅是UID和GID这样的数字,用户的UID就相当于我们的身份证一样,用户名就相当于我们的名字。

UID User Identify 用户ID,相当于各位的身份证,在系统中是唯一的。

GID Group Identify 组ID,相当于各位的家庭或者你们学校的ID。

超级用户:

默认是root用户,其UID和GID均为0,root用户在每台unix、linux操作系统中都是唯一且真实存在的,通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限。在linux系统中,UID为0的用户就是超级用户,但是通常不这么做,而是sudo管理提权,可以细到每个命令权限分配。

普通用户:

这类用户一般是有具备系统管理员root的权限的运维或系统管理人员添加的。例如:syz这类用户可以登录系统,但仅具备操作自己家目录中的文件及目录的权限,除此之外,还可以进入、或浏览相关的目录(/etc/var/log),但是无法创建、修改和删除。

su - root ,角色切换,农民起义,推翻皇帝,自己当皇帝

sudo ls 授权、封官,尚方宝剑。可以为皇帝办事,有一定的权限,但还是自己。

虚拟用户:

与真实普通用户区分开来,这类用户最大的特点是安装系统后默认就会存在,且默认情况大多数不能登录系统,但是,他们是系统正常运行不可缺少的,他们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。例如:系统默认的bin、adm、nobody、mail用户等。由于服务器业务角色的不同,有部分用不到的系统服务被禁止开机执行,因此,在做系统安全优化时,被禁止开机启动了的服务对应的虚拟用户也是可以处理掉的(删除或注销);

虚拟用户角色傀儡:

linux安全优化:1、安装系统后可以删除用不到的虚拟用户,但最好不删而是注释掉,万一出问题可以恢复过来。

                         2、我们自己部署服务的时候,也会创建虚拟用户,满足服务的需求,例如:apache.nginx.mysql等

 UID限制说明(整数范围)

UID范围 说明
0:超级用户 当用户的UID为0时,表示这个账号为超级用户管理员账号,如果要增加一个系统管理员账号,只需要将该账号的UID改成0即可。建议你不要这么做,而是建议用sudo替代。
1-499:虚拟用户(傀儡) 这个范围是保留给系统使用的UID,之所以这样划分,是为了防止人为建立账户的UID和系统UID之间冲突并没有其他特殊的含义。
500-65535 :普通用户 普通账户UID,当使用useradd oldboy 建立账户时,默认情况下UID就是从500开始的。

用户组的关系

一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员。如:root

一对多:即一个用户可以存在于多个用户组中。比如,上图中普通用户syz可以是sa组成员,也可以是Java用户组成员,还可以是tech用户组成员,这里的syz用户具有sa、Java、tech多个组的共同权限。

多对一:多个用户可以存在于一个组中,这些用户具有和组相同的权限

多对多:多个用户可以存在多个组中,并且几个用户可以归属相同的组,其中多对多的关系是前面三条的扩展。

linux系统系的账户文件

linux系统系的账户文件主要有/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow四个文件。

/etc/passwd   用户的配置文件

/etc/shadow   用户影子口令文件(密码文件)

/etc/passwd 用户的配置文件

tail -1 /etc/passwd

root          :       x         :       0       :        0           :       root    :       /root       :   /bin/bash
账号名称 :账号密码 :账号UID :账号组GID :用户说明 :用户家目录 :shell解释器

解析:

账号名称:   和用户UID对应,这是用户登陆时使用的账号名称,在系统中是唯一的,不能重名。

账号密码:早期的unix系统中,该字段是存放账号密码的,由于安全原因,后来把这个密码字段内容移到/etc/shadow中了,这里可以看到一个字母x,表示该用户的密码是在/etc/shadow文件中保护的。

账号UID:账号UID一般是由一个整数表示的,范围是0-65535,有关UID的限制看本表格下面的表格。

账号GID:账号GID一般也是由一个整数表示的,范围也是0-65535,当添加账户时,默认情况下会同时建立一个与用户同名且UID和GID相同的组。

用户说明:这个字段是对这个账号的描述说明。

用户家目录:用户登录后首先进入的目录,一般为“/home/用户名”这样的目录

shell解释器:当前用户登录后所使用的shell,在centos/rhel等linux系统中,默认的shell为bash,就是在这里设置的,如果不希望用户登录系统,可以通过usermod或者手工修改passwd配置,将该字段改为/sbin/nologin即可。如果你仔细看passwd文件的话,会发现大部分内置系统虚拟账号的这个字段都是/sbin/nologin。表示禁止登录系统,这是出于安全考虑的。

/etc/shadow   用户影子口令文件(密码文件)

由于passwd文件必须要被所有的用户读,所以会带来安全隐患,而shadow文件就是为了解决这个安全隐患而增加的。

账号名称:用户的账号名称

账号密码:用户密码,这是加密过的口令

最近更改密码的时间:从1970年1月1日起,到用户最近一次更改口令的天数。

禁止修改密码的天数:从1970年1月1日起,到用户可以更改密码的天数。

用户必须更改口令的天数:从1970年1月1日起,用户必须更改密码的天数。

警告更改密码的期限:在用户密码过期前多少天提醒用户更改密码。

不活动时间:在用户密码过期之后到禁止账户的天数。

失效时间:从1970年1月1日起,到用户被禁止的天数(useradd -f)

标志:保留

小结论:

1、useradd添加用户会更改/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow

2、passwd为用户设置密码会更改/etc/shadow

/etc/group   用户组配置文件

etc/group 文件时用户组的配置文件,内容包括用户和用户组,并且能显示出用户归属哪个用户组,因为一个用户可以归属一个或多个不同的用户组:同一个用户组的用户之间具有相似的特征。比如我们把某一用户加入到root用户组,那么这个用户就可以浏览root用户家目录文件,如果root用户把某个文件的读写执行权限开放,root用户组的所有用户都可以修改此文件,如果是可执行的文件(比如脚本),root用户组的用户也是可以执行的:用户组的特性在系统管理中为系统管理员提供了极大的方便,但安全性也是值得关注的,如某个用户下有对系统管理有最重要的内容,最好让用户拥有独立的用户组,或者是把用户下的文件的权限设置为完全私有:另外root用户组一般不要轻易把普通用户加入进去。

group 文件各个字段解析:

用户组名:该组的名称

用户组密码:通常不需要设置该密码,由于安全原因,该密码被记录在/etc/gshadow中,因此,显示为“x”。这类似/etc/shadow

GID:就是用户组的ID

用户组成员:加入这个组的所有用户账号

小结论

groupadd添加用户组会更改/etc/group、/etc/gshadow

/etc/gshadow   用户组的影子文件

gshadow文件各个字段详细说明:

用户组名:该组的名称

用户组密码:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码

用户组管理员账号:用户组管理者,这个字段也可以为空,如果有多个用户组管理者,用“,”号分割

用户组成员:加入这个组的所有用户账号,列表中多个用户通过“,”分隔。

 

posted @ 2019-02-05 20:25  LEO00  阅读(747)  评论(0编辑  收藏  举报