请先关注 [低调大师] 公众号 优秀的自媒体个人博客,低调大师,许军

低调大师

您现在的位置是:首页>文章详情

文章详情

浅谈Linux用户权限管理(用户与组的概念)

2017-09-28 84热度

 



 一对一:路由器设置
路由器漏洞即一个用户可以存在一个组中,也可以是组中的唯一成员。

 一对多:即一个用户可以存在多个用户组中。那么此用户具有多个组的共同权限。

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

 多对多:多个用户可以存在多个组中。其实就是上面三个对应关系的扩展。

二 用户配置文件概述

1.用户和组相关的配置文件

(1)/etc/passwd文件

系统用户配置文件,是用户管理中最重要的一个文件。这个文件记录了Linux系统中每个用户的一些基本属性,并且对所有用户可读。/etc/passwd中每一行记录对应一个用户,每行记录又被冒号分割,其格式和具体含义如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:默认shell 

下面是/etc/passwd文件的部分输出:

[root@localhost ~]# more /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

下面是每个字段的详细含义:

 用户名:是代表用户账号的字符串。

 口令:存放着加密后的用户口令,虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 版本都使用了shadow技术,把真正加密后的用户口令存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如用“x”或者“*”来表示。 

 用户标识号:就是用户的UID,每个用户都有一个UID,并且是唯一的,通常UID号的取值范围是0~65535,0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。而在Linux系统中,普通用户UID默认从500开始。UID是linux下确认用户权限的标志,用户的角色和权限都是通过UID来实现的,因此多个用户公用一个UID是非常危险的,会造成系统权限和管理的混乱,例如将普通用户的UID设置为0后,这个普通用户就具有了root用户的权限,这是极度危险的操作。因此要尽量保持用户UID的唯一性。

 组标识号:就是组的GID,与用户的UID类似,这个字段记录了用户所属的用户组。它对应着/etc/group文件中的一条记录。

 注释性描述:字段是对用户的描述信息,比如用户的住址、电话、姓名等等。

 主目录:也就是用户登录到系统之后默认所处的目录,也可以叫做用户的主目录、家目录、根目录等等。

 默认shell:就是用户登录系统后默认使用的命令解释器,shell是用户和linux内核之间的接口,用户所作的任何操作,都是通过shell传递给系统内核的。linux下常用的shell有sh、bash、csh等,管理员可以根据用户的习惯,为每个用户设置不同的shell。

(2)/etc/shadow文件

用户影子文件,由于/etc/passwd文件是所有用户都可读的,这样就导致了用户的密码容易出现泄露,因此,linux将用户的密码信息从/etc/passwd中分离出来,单独的放到了一个文件中,这个文件就是/etc/shadow,该文件只有root用户拥有读权限,从而保证了用户密码的安全性。

下面介绍下/etc/shadow文件内容的格式:

用户名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留字段

例如:下面是/etc/shadow文件的部分输出:

[root@localhost ~]# more /etc/shadow

root:$1$Uvip.QJI$GteCsLrSSfpnMs.VCOvbs/:14169:0:99999:7:::

bin:*:13934:0:99999:7:::

daemon:*:13934:0:99999:7:::

adm:*:13934:0:99999:7:::

下面是每个字段的详细含义:

 用户名:与/etc/passwd文件中的用户名有相同的含义。

 加密口令:存放的是加密后的用户口令字串,如果此字段是“*”、“!”、“x”等字符,则对应的用户不能登录系统。 

 最后一次修改时间:表示从某个时间起,到用户最近一次修改口令的间隔天数。可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化。

 最小时间间隔:表示两次修改密码之间的最小时间间隔。

 最大时间间隔:表示两次修改密码之间的最大时间间隔,这个设置能增强管理员管理用户的时效性。

 警告时间:表示从系统开始警告用户到密码正式失效之间的天数。

 不活动时间:此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统不再让此用户登录,也不会提示用户过期,是完全禁用。

 失效时间:表示该用户的帐号生存期,超过这个设定时间,帐号失效,用户就无法登录系统了。如果这个字段的值为空,帐号永久可用。

 保留字段:linux的保留字段,目前为空,以备linux日后发展之用。

(3)/etc/group文件

用户组配置文件,用户组的所有信息都存放在此文件中。

下面介绍下/etc/group文件内容的格式:

组名:口令:组标识号:组内用户列表

例如:下面是/etc/group的部分输出:

[root@localhost ~]# more /etc/group

root:x:0:root

bin:x:1:root,bin,daemon

daemon:x:2:root,bin,daemon

下面是/etc/group每个字段的含义:

 组名:是用户组的名称,由字母或数字构成。与/etc/passwd中的用户名一样,组名不能重复。

 口令:存放的是用户组加密后的口令字串,密码默认设置在/etc/gshadow文件中,而在这里用“x”代替,linux系统下默认的用户组都没有口令,可以通过gpasswd来给用户组添加密码。

 组标识号:就是GID,与/etc/passwd中的组标识号对应。

 组内用户列表: 显示属于这个组的所有用户,多个用户之间用逗号分隔。

2./etc/login.defs文件

用来定义创建一个用户时的默认设置,比如指定用户的UID和GID的范围,用户的过期时间、是否需要创建用户主目录等等。

下面是rhel5下的/etc/login.defs文件,简单介绍如下:

MAIL_DIR        /var/spool/mail

当创建用户时,同时在目录/var/spool/mail中创建一个用户mail文件

PASS_MAX_DAYS   99999

#指定密码保持有效的最大天数

PASS_MIN_DAYS   0

表示自从上次密码修改以来多少天后用户才被允许修改口令

PASS_MIN_LEN    5

指定密码的最小长度

PASS_WARN_AGE   7

表示在口令到期前多少天系统开始通知用户口令即将到期

UID_MIN                   500

指定最小UID为500 ,也就是说添加用户时,用户的UID 从500开始

UID_MAX                 60000

指定最大UID为60000

GID_MIN                   500

指定最小GID为500,也就是添加组时,组的GID从500开始。

GID_MAX                 60000

指定最大GID为60000

CREATE_HOME     yes

此项是指定是否创建用户主目录,yes为创建,no为不创建。

3./etc/default/useradd文件

当我们通过useradd命令不加任何参数创建一个用户后,用户默认的主目录一般位于/home下,默认使用的shell是/bin/bash,这是为什么呢,看看/etc/default/useradd这个文件的内容就完全明白了。

[root@localhost ~]# more /etc/default/useradd

# useradd defaults file

GROUP=100  

HOME=/home  #此项表示将新建用户的主目录放在/home目录下

INACTIVE=-1 #此项表示是否启用帐号过期禁用,-1表示不启用

EXPIRE=     #此项表示帐号过期日期,不设置表示不启用

SHELL=/bin/bash  #此项指定了新建用户的默认shell类型

SKEL=/etc/skel  #此项用来指定用户主目录默认文件的来源,也就是说新建用户主目录下的文件都是从这个目录下复制而来的

CREATE_MAIL_SPOOL=no

/etc/default/useradd文件定义了新建用户的一些默认属性,比如用户的主目录、使用的shell等等,通过更改此文件,可以改变创建新用户的默认属性值。

改变此文件有两种方法,一种是通过文本编辑器方式更改,另一种是通过useradd命令来更改。这里介绍一下第二种方法:

Useradd命令加“-D”参数后,就可以修改配置文件/etc/default/useradd,使用的一般格式为:

useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]

每个选项详细含义如下:

 -g default_group

表示新建用户的起始组名或者GID,组名必须为已经存在的用户组名称,GID也必须是已经存在的用户组GID。与/etc/default/useradd文件中“GROUP”行对应。

 -b default_home

指定新建用户主目录的上级目录,也就是所有新建用户都会在此目录下创建自己的主目录。与/etc/default/useradd文件中HOME行对应。

 -s default_shell

指定新建用户默认使用的shell,与/etc/default/useradd文件中“SHELL”行对应。

 -f default_inactive

指定用户帐号过期多长时间后就永久停用,与/etc/default/useradd文件中“INACTIVE”行对应。

 -e default_expire_date

指定用户帐号的过期时间。与/etc/default/useradd文件中“EXPIRE”行对应。

例子:

useradd –D不加任何参数时,显示/etc/default/useradd文件的当前设置

[root@localhost ~]# useradd -D  

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

如果要修改添加用户时的默认shell为/bin/csh,可以这么操作:

[root@localhost ~]# useradd -D -s /bin/csh

[root@localhost ~]# useradd -D

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/csh

SKEL=/etc/skel

4./etc/skel目录

在创建一个新用户后,会在新用户的主目录下看到类似.bash_profile, .bashrc, .bash_logout等文件,这些文件是怎么来的呢,如果我想让新建立的用户在主目录下默认拥有自己指定的配置文件,该如何设置呢?

/etc/skel目录就是解决这个问题的,/etc/skel目录定义了新建用户在主目录下默认的配置文件,更改/etc/skel目录下的内容就可以改变新建用户默认主目录的配置文件信息。
 

此出处http://ixdba.blog.51cto.com/2895551/531787

收藏 (0)

相关文章

    文章评论

    共有0条评论来说两句吧...