用户和组的管理
所采用的认证为Cisco开发的AAA认证体系:
Authetication:认证,核实身份是否正确;
Authorization:授权,对已经核实身份的用户进行资源分配;
Accounting:审计,监管资源被使用的情况;
Linux是一个多用户、多任务的系统:
能够实现资源使用和完成的任务的主体是:应用程序进程
进程是以其发起者的身份运行的;可以理解为:进程的所有者就是发起者;会将发起者信息标记在进程上;
当进程试图访问资源的时候,安全上下文会对比进程的所有者和资源的所有者的关系:
首先查看进程的所有者是不是资源的所有者,如果是,就按照属主的权限使用资源;
如果不是,则判断进程的所有者是否属于资源所属组,如果是,按照数组的权限使用资源;
如果不是,则直接使用资源的其他人访问权限来使用资源;
用户账户:就是计算机操作者在操作系统中的身份映射;在满足了认证条件之后的身份映射;
用户分类:
超级用户:(管理员)root
普通用户:
系统用户:为保证安全,必须让那些运行在后台的进程或者服务类进程亦菲管理员的身份运行;这类用户一般不需要登录到系统;
登陆用户:能够正常使用整个系统资源的用户;
用户的标识:用户登陆名称;
用户ID:为计算机系统准备的数字标识;
超级用户:0
系统用户:Centos5、Centos6:1~99;Centos7:1~999;
登陆用户:Centos、Centos6:500~60000;Centos7:1000~60000;
名称解析:名字<-->UID
解析库:/etc/passwd
系统利用解析库完成认证机制,验证登陆用户是否是你声称的那个人;
认证库:
用户的认证信息库:/etc/shadow
组的认证信息库:/etc/group
采用密码认证机制:
设置密码的一般性策略:
1.尽量使用随机字符串作为密码;
2.密码长度不要少于8字符;
3.密码中尽量包括大写字母、小写字母、数字和标点符号,这四类字符中的三类;
4.不定期更换,每个一段时间换一个密码(推荐42天之内一换密码);
在Linux中,保存到认证库中的密码信息是经过加密保存的;
hash单向加密算法:抽取原始数据的特征信息,数据指纹;
单向加密算法的特征:
1.只要数据相同,加密结果必然相同;
2.无论数据多大,其加密结果定长输出;
3.雪崩效应
4.不可逆
单向加密常用的算法:md5、sha1、sha224、sha256、sha384、sha512
为防止密码相同,每个用户都加一个salt而且只加一次
最终验证字符串:算法+salt+密码
用户组:将具有某些相同或相似属性的用户联系在一起以便集中授权的容器;
组类别:
管理员组:
普通用户组:
系统组:
登陆组:
组的标识方法:
组名:方便操作者使用;
组的ID(GID):位系统提供标识;
管理员组:0
系统组:Centos5、Centos6:1~499;Centos7:1000~60000
解析库:/etc/group
组也需要认证,组也有认证库:/etc/gpasswd
组也需要密码保护;
如果没有设置密码保护,则不能随时加入;
以用户为核心来对组进行分类:用户的主要组(基本组);用户的附加组(附属组,额外组);
根据组所容纳的用户来分:私有组,公共组;
用户和族的管理:
解析库1:/etc/passwd:
格式:name:password:UID:GID:GECOS:directory:shell
name:登录名
password:密码字段,现在使用了shadow机制的系统,通常使用“x" 作为占位符;
UID:用户的ID;
GID:此用户主要组的ID
GECOS:comment,注释类的信息,现在一般都会用来存放用户的说明信息或全名;
directory:用户的家目录的绝对路径;
shell:用户的默认登陆shell的绝对路径;
解析库2:/etc/group:
格式:group_name:password:GID:use_list
group_name:组名
password:组密码占位符,默认为空;
GID:组的ID;
user_lsit:以该组为附加组的用户的列表;
认证库1:/etc/shadow:
login name:用户的登录名;
encryted password:加密了的密码;
date of last password change:相对时间概念;
minimum password age:在多久时间内无法修改密码;
maximum password age:在多长时间之后密码过期;
password warning period:密码过期之前的友善提醒天数;
password inactivity period:密码过期之后的宽限期;
account ecpiration date:一个用户账户密码过期的日期;
reserved field:保留字段;
认证库2:/etc/gpasswd:
格式:group name:encrypted password:administrators:members
组管理命令:
groupadd:新建组账户,添加组;
groupadd [-g gid [-0]] [-r] [-f] groupname
-g gid:在创建组账户是,指定组账户GID; 如果不使用该选项指定,系统会选则在iexi文件按镇南关出现在不大于60000的GID加1;
-r:创建系统组;
groupmod:修改组的相关属性;
groupmod [选项] GROUPNAME
-g gid: 修改组账户的ID;
-n NEW_GROUPNSME: 修改组名;
groupdel: 删除组账户
groupdel [选项] GROUPNAME
注意:如果某个组是摸个用户的主要组或私有组,则该组无法删除;
用户管理的命令:
useradd:添加用户帐号
useradd [选项] 登录名
/etc/default/useradd
/etc/login.defs
/etc/skel
以上三个文件和目录能够帮助管理员在为指定任何选项是,也能创建用户,并为用户赋予默认的属性;
选项:
-c,--comment 'COMMENT': 在创建用户是为用户添加注释信息,一般为全名;
-d,--home /PATH/TO/HOME_DIR: 在创建用户的时候为用户指定家目录的绝对路径,被指定的目录应该是事先不存在的目录;
-g,--gid GROUPNAME: 在创建用户时,为用户指定组目录;
-G,--groups GROUP1[,GROUP2,...[,GROUPN]]: 在创建用户时,为用户添加附加组;
-m,--create-home:在创建用户时,强制性为用户创建家目录;
-M:在创建用户时,不会创建用户的家目录,即使在/etc/login.defs中CREATE_HOME的值为yes也不创建;
-r,--system:创建系统用户;
-u,--uid UID:在创建用户的时候,为用户指定UID,这个UID可以超过6000的限制;
-s,--shell /PATH/TO/SHELL:在创建用户时,为用户指定默认shell,使用绝对路径;
-D,--defaults: 显示或修改用户默认属性值;
-s, --shell /PATH/TO/SHELL: 修改/etc/default/useradd文件中SHELL的默认值;
usermod: 修改用户账户信息
usermod [选项] 登录名
选项:
-c, --comment 'COMMENT': 修改用户的注释信息;
-g,-gid GROUPNAME: 修改用户的主要组;
-G,--groups GROUP1[,GROUP2,...[,GROUPN]]: 修改用户的附加组为列表中的组;
-a,--append:与-G选项同时使用,给用户添加新的附加组;
-d,--home /PATH/TO/HOME_DIR: 修改用户的家目录;
-m,--create-home:与-d选项同时使用,将旧的家目录中的数据移动至新家之中;
-s,--shell /PATH/TO/SHELL: 修改用户账户的登陆shell;
-l,--login NEW_LOGIN: 更改用户账户的登录名;
-u,--uid UID:修改用户的UID;
-L,--lock:锁定账户密码;
-U,--unlock:解锁用户密码;
userdel:删除用户账号
userdel [选项] 登录名
选项:
-r:删除用户的同时,清楚用户的家目录;
用户认证相关命令:
passwd:设置和查看用户的密码信息:
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
1.如果省略用户名,意味这更改当前登录用户的密码;
2.如果指定用户名,更改指定用户的密码,只能root使用;
选项:
-l,lock:锁定用户密码;
-u,--unlock:解锁用户密码;
相比较usermod -L|-U而言,其优先级更高;
如果使用usermod -L锁定的用户密码,可以使用passwd -u解锁;
而使用passwd -l锁定的用户密码,无法使用usermod -U解锁;
-d,--delete:删除用户密码;将/stc/shadow文件中第二字段清空;
-S,--status:查看用户的密码状态;
--stdin:借助于管道将输入数据流当作标准输入信息送给passwd命令;
组认证相关命令:
gpasswd:
gpasswd [选项] groupname
选项:
-a,--adduser:向名为group的组中添加用户user;
-d,--deleteuser:从名为group的组中一处用户user;
其他命令:
su:switch user,切换用户身份
su USERNAME:半切换;在切换用户的时候,不会重新读取目标用户的配置文件,因此,用户并没有登陆行为,所以,工作环境不初始化;
su - USERNAME:登陆式切换,完全切换;在切换用户的时候,重新读取目标用户的配置文件并且初始化工作环境;相当于su -l USERNAME
-c COMMAND: 并不会切换用户身份,而是以目标用户的身份执行某命令;
使用su命令的时候,从root切换到其他普通用户,无需密码;但普通登陆用户进行切换时,必须给出目标用户的密码;
进行用户切换之后,不要连续切换,而是用exit命令返回之前的用户;
newgrp GROUPNAME: 临时更改当前登录用户的主要组;使用exit返回之前的状态
id: 显示真实的和有效的用户和组的ID;
真实的ID:在/etc/passwd定义的用户的UID和GID;
有效的ID:当前生效的用户的UID和GID;
id [OPTION]... [USER]
-g: 只显示用户的有效GID
-u: 只显示用户的有效UID
-G: 显示用户所有组的ID
-n: 以名称来代替ID进行显示