Linux文件系统之用户与组管理

目录

①用户与组管理之重要文件

/etc/passwd

/etc/shadow

/etc/login.defs

/etc/skel  >>>  目录

/etc/default/useradd

/etc/group

/etc/gshadow

②用户与组管理之增删改

1.添加用户:useradd

2.删除用户:userdel

3.添加组:groupadd

4.删除组:groupdel

5.修改用户所属组:usermod

6.修改用户属性:chage

③如何增强账号的安全体系

④用户与组管理之用户切换 su命令和sudo命令

 


 

①用户与组管理之重要文件

 

/etc/passwd


>>>用于存放用户基本属性信息,包括:用户名,uidgid,用户的家目录,用户的shell类型
>>>当该文件丢失或损坏,会导致Linux登录失败

[root@localhost ~]# useradd test      :新建一个用户test

[root@localhost ~]# cat /etc/passwd :通过cat可以读取到所有的用户数据

test:x:505:505::/home/test:/bin/bash  :以用户test为例

每一列代表的含义如下:

第一列

第二列

第三列

第四列

第五列

第六列

第七列

test

x

505

505

 

/home/test

/bin/bash

account

password

UID

GID

GECOS

directory

shell

用户名

加密后的密码

用户UID

用户GID

注释说明字段

用户家目录

用户登录后使用的shell类型

 

 

参考/etc

/login.defs

 

参考/etc/default

/useradd

>>>注意:用户登陆后使用的shell类型(第七列)若该字段为空,则默认使用的是/bin/sh,

若设置为/sbin/nologin或一个不存在的文件,则用户无法通过login程序登陆。

[root@localhost ~]# su test             :将用户登陆后使用的shell类型设置为/sbin/nologin后无法登陆

This account is currently not available.

 

 

 

/etc/shadow

>>>该文件为/etc/passwd文件的密码加密文件(记录用户有效期信息)

[root@localhost ~]# cat /etc/shadow|grep "test"

test:!!:17725:0:99999:7:::

每一列代表的含义如下:

第一列

第二列

第三列

第四列

第五列

第六列

第七列

第八列

第九列

test

!!

17725

0

99999

7

 

 

 

用户名

加密口令

最后修改时间

最小时间间隔

最大时间间隔

警告时间

不活动时间

失效时间

标志

 

字段

英文名称

描述

用户名

login name

与/etc/passwd文件中的第一列对应

加密口令

encrypted password

用户密码对应的密文(若用户未设置密码,这一列为“!!

设置完密码后:

[root@localhost ~]# cat /etc/shadow|grep "test"
加密口令由“!!”变成了密码对应的密文:

test:$1$Dentf2vN$HIXpfurXIoKbD8eB6GHpu0:17725:0:99999:7:::

最后修改时间

date of last password change

从1970-01-01,以天为单位,到上次修改密码日期的天数

最小时间间隔

minimum password age

要过多少天才可以修改密码,默认是0,即不受限制

生产环境中该位置建议设置为:0

最大时间间隔

maximum password age

在多少天之内必须修改密码,如设置为30,表示30天内就必须修改密码,默认不受限制

生产环境中该位置建议设置为:30

警告时间

password warning period

密码到期前的警告期限,如设置为7,表示当密码还有7天到期时,系统会推送警告,默认是7

生产环境中该位置建议设置为:7

不活动时间

password inactivity period

表示账号密码过期后,多少天后会被锁定

如果设置为-1,表示密码过期后,账号不会被锁定

如果设置为0,表示密码过期后,账号立即被锁定(建议生产环境)

如果设置为N(大于0),表示密码过期后,账号N天之后被锁定

失效时间

account expiration date

达到这个日期,账号将被锁定

标志

reserved field

保留字段,无任何含义

 

 

 

/etc/login.defs

>>>用来对用户创建的初始化和进行安全性设置

[root@localhost ~]# cat -n /etc/login.defs :查阅/etc/login.defs

  • 用户mail的相关配置

               15  MAIL_DIR        /var/spool/mail

  • 用户密码有效期设置(创建用户的默认设置)

当添加用户时,有效期会参考/etc/login.defs的配置,作为默认值                                                 

但真正存放有效期数据的文件是/etc/shadow,需要修改某用户有效期的时候,应该去修改这个文件

    18  # Password aging controls:

    19  #

    20  #       PASS_MAX_DAYS   Maximum number of days a password may be used.

    21  #       PASS_MIN_DAYS   Minimum number of days allowed between password changes.

    22  #       PASS_MIN_LEN    Minimum acceptable password length.

    23  #       PASS_WARN_AGE   Number of days warning given before a password expires.

    24  #

    25  PASS_MAX_DAYS   99999:创建新用户,最大时间间隔默认设置为99999,即无限制

    26  PASS_MIN_DAYS   0          :创建新用户,最小时间间隔默认设置为0,即无限制

    27  PASS_MIN_LEN    5            :创建新用户,密码默认设置最小长度为5

    28  PASS_WARN_AGE   7        :创建新用户,警告时间默认设置为7,即密码还有7天到期时,就推送告警

  • 添加用户时,给用户分配的UID数值范围

    31  # Min/max values for automatic uid selection in useradd

    32  #

    33  UID_MIN                   500

    34  UID_MAX                 60000

  • 添加用户时,给用户分配的GID数值范围

    37  # Min/max values for automatic gid selection in groupadd

    38  #

    39  GID_MIN                   500

    40  GID_MAX                 60000

  • 添加用户时,是否给用户默认添加家目录/home/username

   50  # If useradd should create home directories for users by default

    51  # On RH systems, we do. This option is overridden with the -m flag on

    52  # useradd command line.

    53  #

    54  CREATE_HOME     yes:也可以在useradd命令加-m参数指定家目录位置

  • 是否在执行userdel删除空的组

    60  # This enables userdel to remove user groups if no members exist.

    61  #

    62  USERGROUPS_ENAB yes   :yes表示删除用户,若用户基本组为空,会删除其基本组

  • 密码的加密方式

    64  # Use SHA512 to encrypt password.

    65  ENCRYPT_METHOD MD5

    66

    67  MD5_CRYPT_ENAB yes

 

 

 

/etc/skel
>>>这是一个目录,用于构成用户家目录的基本结构的

>>>当新添加一个用户,系统会将/etc/skel目录下的所有文件拷贝到新用户的家目录中

>>>/etc/skel 一般包含以下文件:

[root@localhost ~]# ls -a /etc/skel

.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2  .mozilla (.开头表示隐藏文件)

  • 当使用userdel命令删除用户,该用户的家目录(包括从/etc/skel目录下复制过来的文件和目录)

都会保持不变,即不会被删除

  • 添加用户的时候是如何知道去拷贝/etc/skel目录的文件到家目录中:

参考/etc/default/useradd目录下SKEL参数 默认SKEL=/etc/skel

  • 当需要给用户设置环境变量时,可修改/etc/skel目录下的.bash_profile文件

 

 

 

/etc/default/useradd

>>>用于设置添加用户的默认规则

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

# useradd defaults file

GROUP=100                 :当useradd没有-g指定所属用户组,/etc/login.defs中的USERGROUPS_ENAB为no
                                                新建用户的GID为100,即该用户所在的的组为users

HOME=/home              :新建用户的主目录的上一级目录

INACTIVE=-1                 :创建用户时,用户的不活动时间会参考这个值,
                                               但是真正存储的位置是在shadow文件

EXPIRE=                         :YYYY-MM-DD指定到期时间

SHELL=/bin/bash          :创建用户时,用户的shell类型由这个变量指定       

SKEL=/etc/skel              :创建用户时,由这个变量去指定主目录去拷贝哪个目录下文件

CREATE_MAIL_SPOOL=yes :创建目录来存储用户的邮件信息,建议关掉,占用inode

 

 

/etc/group

该文件每一列字段含义

组名

组密码

id

组成员

group_name

password

GID

user_list

理解:基本组和附加组

>>>默认情况下,创建一个新用户,就会创建一个与新用户同名的组,并将创建的新用户划入到组内,这个同名组叫基本组
        也可以在useradd用命令时,使用-g选项指定新用户的基本组

>>>将用户划入到其他组时,用户新入的组,从该用户角度来说叫做附加组
         也可以在useradd用命令时,使用-G选项指定新用户的附加组

例:有一个组mygrp,该组内有两个成员gentoocentos

gentoo:x:1001:                           #gentoo组是gentoo这个用户的基本组

mygrp:x:1003:gentoo,centos    #mygrp组是gentoocentos用户的附加组

 

 

/etc/gshadow

该文件每一列字段含义

组名

加密密文(若无设置,则为!)

组管理员(可修改密码或组内用户)

组成员

group name

encrypted password

administrators

members

 


 

②用户与组管理之增删改

1)添加用户:useradd

2)删除用户:userdel

3)添加组:groupadd

4)删除组:groupdel

5)修改用户所属组:usermod

(6)修改用户属性:chage

 

 

1.添加用户:useradd

重要参数

描述

-b

(不常用)

指定创建的用户的家目录的上一级目录(这个目录必须存在)

mkdir /home/userdir

useradd -b /home/userdir username

-d

(不常用)

指定创建的用户的家目录

useradd -d /home/userdir username

-g

指定创建的用户的组名或组ID(组必须存在)

若没有-g参数,useradd命令回去读取/etc/login.defs中的USERGROUP_ENAB变量

若变量为no,useradd会将用户的基本组设置为/etc/default/useradd中GROUP变量指定的组

-G

指定用户加入的附加组,可以用逗号隔开加入多个附加组

-e

指定用户到期时间(默认参考/etc/default/useradd中expire变量的值)

-f

指定到期时间(默认参考/etc/default/useradd中INACTIVE变量的值)

-s

指定用户shell类型(默认参考/etc/default/useradd中shell变量的值)

-u

指定用户的UID

-p

设置用户的明文密码,能在/etc/shadow看到对应明文密码(不建议)

 

>>>当使用useradd命令创建新用户时,不使用任何选项,/etc/shadow中的内容是根据什么产生的:

字段

产生参考内容

用户名

useradd 输入的名字

加密口令

默认为!!,通过passwd命令来修改成为加密密文

最后修改时间

创建用户时的时间

最小时间间隔

参考/etc/login.defs的有效期参数

最大时间间隔

参考/etc/login.defs的有效期参数

警告时间

参考/etc/login.defs的有效期参数

不活动时间

参考/etc/default/useraddexpire参数

失效时间

参考/etc/default/useraddinactive参数

标志

 

2.删除用户:userdel

>>>默认不删除用户的家目录,可以使用-r选项,删除用户同时删除用户的家目录

 

3.添加组:groupadd

>>>group -g GID groupname:通过-g参数指定组的组ID

 

4.删除组:groupdel

>>>删除组,组不能有其他用户,否则无法删除

 

5.修改用户所属组:usermod

>>>将用户划入到某个组

 

6.修改用户属性:chage

>>>修改用户的有效期属性

 


 

③如何增强账号的安全体系

设置账号的密码长度限制:

   >>>在/etc/login.defs中设置PASS_MIN_LEN变量的值,限制密码长度至少为10位

设置密码的有效值与密码到期提醒

    >>>在/etc/login.defs中设置PASS_MAX_DAYS变量为30,表示密码30天后到期

    >>>在/etc/login.defs中设置PASS_WARN_AGE变量为7,表示当密码还有7天到期时,就推送系统告警

    >>>但/etc/login.defs文件只对新创建的用户才有效,对于已经创建的用户需要修改/etc/shadow文件

设置密码到期后账号锁定

   >>>在/etc/default/useradd中设置INACTIVE=0,表示密码到期后,立即将对应的账号锁定

    >>>但/etc/default/useradd文件只对新创建的用户才有效,对于已经创建的用户需要修改/etc/shadow文件

设置账号的到期时间(一般不建议使用)

   >>>在/etc/default/useradd中设置EXPIRE=YYYY-MM-DD,如EXPIRE=2018-07-08,表示账号到7月8日到期

    >>>但/etc/default/useradd文件只对新创建的用户才有效,对于已经创建的用户需要修改/etc/shadow文件

 


 

④用户与组管理之用户切换 su命令sudo命令

 

su命令

>>>切换用户 :su username   切换后的工作目录不变,还是上一个用户的工作目录

>>>切换用户时,需要以登录式的方式去登录用户,去加载用户的环境变量,输入命令:su - username

 

sudo命令

>>>生产需求:让特定的用户使用只有超级管理员才有权限使用的命令

>>>sudo即为借用身份运行命令,使用户执行命令时,是以超级管理员的权限运行该命令的进程

>>>sudo根据/etc/sudoers的安全策略来获得权限,这个文件是由超级管理员配置的

>>>凭据缓存时间:当身份验证成功后,五分钟内(身份验证超时时间)不需要再次验证身份,五分钟后需要再次进行身份验证

通过配置/etc/sudoers,实现sudo命令的权限配置

#用户别名定义

User_Alias L1_AS = bei

#命令别名定义

Cmnd_Alias L1_AS_CMD = ALL

#命令策略定义

L1_AS ALL = (ALL) L1_AS_CMD

 

 


说明:

>>>以上内容是本人学习的总结

>>>如还有错误,请留言,指正

>>>亦可分享自己的想法,互相学习

            

 

你可能感兴趣的:(Linux文件系统)