用户和组的管理算法
Linux系统是一个多用户操做系统.任何一个受使用系统资源的用户.都必须首先向系统管理员申请一个帐号,而后以这个帐号的身份进入系统。用户帐号一方面能够帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问,另外一方面也能够帮助用户组织文件.并为用户提供安全性保护;实现用户帐号管理主要有用户帐号添加、删除与修改.以及用户口令的管理和用户组的管理等工做。shell
下面咱们列出Linux系统里用户和组的定义以及进行用户和组的管理操做时所用到的一些命令:安全
Cisco开发的AAA认证体系:app
Authentication:认证,核实身份是否正确。dom
Authorization:受权,对已经核实身份的用户进行资源分配。ide
Accounting:审计,监管资源被使用状况。ui
多用户,多任务的系统:加密
可以实现资源使用和完成任务的主体是:应用程序进程spa
安全上下文:secure context操作系统
进程是以其发起者的身份来运行的:可理解为,进程的全部者就是发起者,会将发起者的信息标志在进程上。
当进程试图访问资源时,安全上下文会比对进程的全部者和资源者的全部者的关系。首先查看进程的全部者是否是资源的全部者,若是是,就按照属主的权限使用资源,若是不是,则判断进程的全部者是否属于资源所属组,若是是,按照属组的权限使用资源。
若是不是,则直接使用资源的其余人访问权限来使用资源。
用户帐户:就是计算机操做者在操做系统中的身份映射;在知足了认证条件以后的身份映射;
用户分类:
超级用户(管理员):root
普通用户:
系统用户:为了保证安全,必须让那些运行在后台的进程或服务类进程以非管理员的身份运行。 这类用户通常不须要登陆到系统。
登陆用户:可以正常使用整个系统资源的用户
用户的标识:
用户登陆名称:为操做者准备的简单易记的字符串标识。
用户的ID:为计算机系统准备的数字标识。
超级用户:ID号0
系统用户:
Centos五、6:1~499
Centos7:1~999
登陆用户:
Centos五、6:500~60000
Centos7:1000~60000
60000+的标识符为自定义标识。
名称解析:名字<-->ID
解析库: /etc/passwd
系统利用解析库完成认证机构、;验证登陆用户是不是你声称的那我的。
认证库:
用户的认证信息库:/etc/shadow
组的认证信息库:/etc/group
采用密码认证的机制:
设置密码的通常性策略:
1.尽可能使用随机字串做为密码;
2.密码的长度不要少于8字符;
3.密码中尽可能包括大写字母、小写字母、数字和标点符号四类字符中的三类;
4.不按期更换,每隔一段时间换一个密码 推荐42天内改密码
在Linux中,保存到认证库中的密码信息是通过加密保存的。
hash单向加密算法:抽象原始数据的特征信息,数据指纹;
单向加密算法的特征:
1.只要数据相同,其加密结果就必然相同。
2.不管数据多大,其加密结果定长输出。
3.雪崩效应.
4.不可逆
单向加密经常使用的算法:
1.md5:message digest ,消息摘要,128bit定长输出;
2.sha1:安全的哈希算法,160bit定长输出;
3.sha224
4.sha256
5.sha384
6.sha512
salt:随机数
/dev/random:仅仅只是从熵池中返回随机数,若是熵池随机数耗尽则进程被阻塞。
/dev/urandom:先试图从熵池中返回随机数,
若是熵池耗尽,则利用伪随机数生成器生产伪随机数。
最终验证字符串:算法+salt+密码
在认证库中存放的信息:$6$salt$cryped_password
用户组:将具备某些相同或类似属性的用户联系在一块儿以便集中受权的容器;
组类别:
管理员组:
普通用户组:
系统组:
登陆组;
组的标识方法:
组名:方便操做者使用可以的;
组的ID(GID):为系统提供组标识;
管理员组:0
系统组:Centos5/6:1~499 Centos7:1~999
登陆组:Centos5/6:500~60000 Centos7:1000~60000
解析库: /etc/group
组也须要认证,组也有认证库:/etc/gpasswd
组也须要密码保护:
若是组没有设置密码保护的话,则不能随时加入;
以用户为核心来对组进行分类;
用户的主要组(基本组):primary group ,对于用户来讲这样的组必需要有并且只能有一个。
用户的附加组(附属组,额外组):Addition Group ,这样的组对于用户来讲,能够没有,也能够有多个。
根据组所容纳的用户来分:
私有组:组名与用户登陆名相同,而且组中只有此用户;
公共组:组中能够包含其余多个不一样用户
注意:默认状况下,用户的主要组都是其私有组;
用户和组的管理:
主要使用命令来完成:
组管理相关的命令:
groupadd 、 groupdel 、 groupmod
用户管理相关的命令:
useradd 、 userdel 、 usermod
认证管理相关的命令:
passwd 、 gpasswd 、 chage
其余的相关管理命令:
chsh 、 finger 、 su 、 id
两个解析库: /etc/passwd、、/etc/group
两个认证库;/etc/shatow 、 /etc/gshadow
/etc/passwd:
name:password:UID:GID:GECOS:directory:shell
name:登陆名
passwd:密码字段,现作在使用了shadow机制的系统中,一般使用“x”做为占位符;
UID:用户的ID
GECOS:comment,注释类的信息,如今通常都会用来存放用户的说明信息或全名;
shell:用户的默认登陆shell的绝对路径。
/etc/group:
group_name:password:GID:user_list
group_name:组名
password:组密码占位符,默认为空
GID:组的ID
user_lsit:以改组为附加组的用户的列表
/etc/shadow:
login name:encrypted password: date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field:
login name :用户的登陆名;
encrypted password:加密了的密码
格式:$算法$salt$真正意义的加密密码
若是该位置为!,则代表用户密码被禁用
若是该位置为*,则代表该用户位系统用户,不能登陆
若是该位置字段为空,则代表用户能够无需输入密码便可登陆系统,不推荐使用
date of last password change:
相对时间概念,相对于1970年1月1日到最后一次修改密码的那天的天数;
minimum password age:
在多长时间以内没法修改密码,默认值为0,意即:随时能够修改密码;若是是非0的其余数字,意思是在这么长的天数里不能改密码。。
maximum password age:
在多长时间以后密码过时,默认为99999,意思为永久有效。
password warning period:
密码过时以前的友善提醒天数,默认为7天。
password inactivity period:
密码过时后的宽限期。默认不启用;默认值为-1.意思为永久宽限期。
account expiration date:
一个用户帐户密码过时的日期,这是一个绝对的过时期限,xxxx年xx月xx日
reserved field:
保留字段,以备之后使用。
/etc/gpasswd:
group name:encrypted password:administrators:members
组管理命令:
groupadd:新建组帐户,添加组;
-g gid:在建立组帐户的时候,指定组帐户的GID;若是不使用该选项指定,系统会选择在组解析文件中出如今的不大于60000最大GID加1.。
-r:建立系统组;意思就是建立一个GID在1~999(1~499)之间的组;
groupmod:修改组的相关属性信息;
groupmod 【选项】GROUP
-g gid :修改组帐户的ID;
-n NEW_GROUPNAME:修改组名;
groupdel:删除组帐户
groupdel 【选项】GROUPNAME
注意:若是某个组是某个用户主要组或私有组,则该组没法删除;
用户管理的命令:
useradd:添加用户帐户
useradd【选项】登陆名
/etc/default/useradd
/etc/login.defs
/etc/skel
以上三个文件和目录可以帮助管理员在未指定任何选项时,也能建立用户,并为用户赋予默认的属性;
选项:
-c,--comment:在建立用户时为用户添加注释信息,通常为全名。。
-d,--home/PATH/TO/HOME_DIR:在建立用户的时候为用户指定家目录的绝对路径,被指定的目录应该是事先不存在的目录。。
-g,--gid GROUPNAME:咋子建立用户时,为用户指定主组。
-G,--groups GROUP1[,GROUP2...N]:在建立用户时,为用户添加附加组;
-m,--create-home:在建立用户时,强制性为用户建立家目录
-M:在建立用户时,不会建立用户的家目录,即便在/etc/login.
defs中CREATE_HOME的值为yes也不建立;
-r,--system:建立系统用户;
-u,--uid UID:在建立用户的时候,为用户指定UID,这个UID能够超过60000的限制;
-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[,GROUP......n]:修改用户的附加组为列表中的组;
-a,--append:与-G选项同时使用,给用户添加新的附加组;
-d,--home/PATH/TO/HOME_DIR:修改用户的家目录;;
-m,--move 与-d选项同时使用,将旧的家目录中的数据移动至新家目录之中
-l:--login NEW_LOGIN:更改用户帐户的登陆名
-s:--shell /PATH/TO/SHELL:修改用户帐户的登陆shell
-u:--uid UID:修改用户的UID
-L:--lock:锁定用户密码
-U:--unclock:解锁用户密码
用户认证相关命令:
passwd:设置和查看用户的密码信息;
passwd [-k] [-l] .....................
1.若是省略用户名,意味着更改当前登录用户的密码;
2.若是指定用户名,更改指定用户的密码,只能root使用;
选项;
-l, --lock:锁定用户密码;
-u,--unlock:解锁用户密码;
相比较usermod -L|-U而言,其优先级更高;
若是使用usermod -L锁定的用户密码,可使用usermod -U解锁;
而使用passwd -l锁定的用户密码,没法使用usermod -U解锁;
-d,--delete:删除用户密码,将/etc/shadow文件中的第二段清空;
-S,--status:查看用户的密码状态;
--stdin:借助于管道将输入数据流当作标准输入信息送给passwd命令;
echo“PASSWORD”|passwd --stdin USERNAME
组认证相关命令:
gpasswd[选项] groupname
选项:
-a,--adduser:向名为group的组中添加用户user。
-d,--deleteuser:从名为group的组中移除用户user。
其余命令:
su:切换用户身份
su USERNAME:
部分切换,半切换;在切换用户的时候,不会从新读取目标用户的配置文件,所以,用户并无登陆行为,因此,工做环境不初始化。
su - USERNAME:
登陆式切换,彻底切换,在切换用户的时候,从新获取目标用户的配置文件而且初始化工做环境;至关于su -l USERMANE
-c COMMAND:并不会切换用户身份,而是以目标用户的身份执行某命令;
使用su命令的时候,从root切换到其余普通用户
id:先是真实有效的用户和组的ID
真实的ID:在/etc/passwd定义的用户的UID和GID
有效的ID:当前生效的用户的UID和GID
选项:
-g:只显示用户有效的GID
-u:只显示用户有效的UID
-G:显示用户全部组的ID
-n:以名称来代替ID进行显示