首页 > 代码库 > 用户和组的管理
用户和组的管理
用户和组的管理
用户账户
组账户
权限的分配
Cisco:开发的AAA认证体系:
Authentication:认证,核实身份是否正确
Authorization:授权,对一直核实身份的用户进行资源分配
Accounting:审计,监管资源被使用的情况
多用户、多任务的系统:
能够实现资源使用和完成任务的主体是:应用程序进程
安全上下文:secure context
进程是已发起者的身份运行的:可以理解为,进程的所有者就是发起者;会将发起者的信息标记在进程上
当进程试图去访问资源的时候,安全上下文会比对进程的所有者和资源的所有者的关系
首先查看进程的所有者是不是资源的所有者,如果是,就按照属主的权限使用资源;如果不是,则判断进程的所有者是否属于资源所属组,若果是,按照属组的权限使用资源;如果不是,则直接使用资源的其他人访问权限来使用资源
用户账户:就是计算机作者在操作系统中的身份映射;在满足了认证条件之后的映射
用户分类:
超级用户(管理员):root
普通用户:
系统用户:为了保证安全,必须让那些运行在后台的进程或者服务类进程以非管理员的身份运行;这类用户一般不需要登录到系统
登录用户:能够正常使用整个系统资源的用户
用户的标识:
用户的登录名称:为操作者准备的简单易记的字符串标识
用户的ID:
为计算机系标准的数字标识:
超级用户:0
系统用户:
centos5、6:1-499
centos7:1-999
登录用户:
centos5、6:500-60000
centos7:1000-60000
60000以上的标识符为用户自定义标识
名称解析:
名字<-->UID
解析库:/etc/passwd
系统利用解析库完成认证机制:验证登录用户是否是你声称的那个人
认证库:
用户的认证信息库/etc/shadow
组的认证信息库/etc/group
采用密码认证机制:
在Linux中,保存到认证库的密码信息是经过加密保存的
hash单向加密算法:抽取原始数据的特征信息,也称数据指纹
单向加密算法的特征:
1、只要数据相同,其加密结果必然相同
2、无论数据多大,其加密结果定长输出
3、雪崩效应
4、不可逆
单向加密常用算法:
1、md5:message digest,消息摘要,128bit定长输出
2、sha1:Secure Hash Algorithm,安全的哈希算法,160bit定长输出
3、sha224
4、sha256
5、sha384
6、sha512
salt:随机数
/dev/random:仅仅只是从熵池中返回随机数,如果熵池随机数耗尽,则进程被阻塞
/dev/urandom:先试图从熵池中返回随机数,如果熵池耗尽,则利用伪随机数生成器生成伪随机数
最终验证的字符串:算法+sait+密码在认证库中存放的信息:$6$salt$crytped_password
用户组:将具有某些相同或相似属性的用户联系在一起以便集中授权的容器
组类别:
管理员组:
普通用户组:
系统组:
登录组:
组的标识方法:
组名:方便操作者使用的
组的ID:为系统提供组标识:
管理员组:
系统组:
centos5、6:1-499
centos7:1-999
登录组:
centos5、6:500-60000
centos7:1000-60000
解析库:/etc/group
组也需要认证,组也有认证库:/etc/gpasswd
组也需要密码保护:
如果组没有设置密码保护的话,则不能随时加入
以用户为核心来对组进行分类:
用户的主要组(基本组):primary group,对于用户来讲,这样的组必须要有而且只能有一个
用户的附加组(附属组,额外组):Addition Group,这样的组对于用户来说,可以没有,也可以有多个
根据组所容纳的用户来分:
私有组:组名与用户登录名相同,并且组中只有此用户
公共组:组中可以包含其他多个不同用户
注意:默认情况下,用户的主要组都是其私有组
/etc/passwd
name:password:UID:GID:CECOS:directory:shell
name:登录名
password:密码字段,现做在使用了shadow机制的系统中,通常使用“x”作为占位符
UID:用户的ID
GID:此用户主要组的ID
AGECOS:comment,注释类的信息,现在一般都会用来存放用户的说明信息或全名
directory:用户的家目录的绝对路径
shell:用户的默认登录shell的绝对路径
/etc/group
group_name:组名
password:组密码占位符,默认为空
GID:组的ID
user_lsit:以该组为附加组的用户的列表
/etc/shadow:
login name:encrypted password:date of last password change:minimum password age:
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:administrrators:number
用户和组的管理:
主要是用命令来完成:
组管理相关的命令:
groupadd:新建组账户,添加组
-g:在创建账户的时候,指定组账户的GID;如果不使用该选项指定,系统会选择再组解析文件中出现在的不大于60000最大GID+1
-r:创建系统组,意思就是创建一个GID在1-999(1-499)之间的组
groupdel:
groupmod:修改组的相关属性信息
-g:修改组账户的ID,
-n:修改组名
用户管理相关的命令:
useradd:添加用户账户
/etc/default/useradd
/etc/login.defs
/etc/skel
以上三个文件和目录能够帮助管理员在未指定任何选项时,也能创建用户,并为用户赋予默认的属性
选项:
-c:--comment `COMMENT`:在创建用户时为用户添加注释信息,一般为全名
-d:--home /PATH/TO/HOME_DIR:在创建用户的时候为用户指定家目录的绝对路径,被指定的目录应该是实现不存在的目录
-G:--groups GROUP1[,GROUP2,...[,GROUPN]]:在创建用户时,为用户添加附加组
-g:--gid GROUPNAME:在创建用户时,为用户指定主组
-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的默认值
userdel:删除用户账户
-r:删除用户的同时,删除用户的家目录
usermod:
-c:--comment `COMMENT`:修改用户的注释信息
-g:--gid GROUPNAME:修改用户的主要组
-G:--group GROUP1[,GROUP2,...[,GROUPN]]:修改用户的附加组为列表中的组
-a:--append:与-G选项同时使用,给用户添加新的附加组
-d:--home /PATH/TO/HOME_DIR:修改用户的家目录
-m:--move-home:与-d选项同时使用,将旧的家目录中的数据移动至新家目录之中
-l:--login NEW_LOGIN:更改用户账户的登录名
-s:--shell /PATH/TO/SHELL:修改用户账户的登录shell
-u:--uid UID:修改用户的UID
-L:--lock:锁定用户密码
-U:--unclock:解锁用户密码
认证管理相关命令:
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:--unclock:解锁用户密码
相比较usermod -L、-U而言,其优先级更高
如果使用usermod -L锁定的用户密码,可以使用passwd -u解锁
而是用passwd -l锁定的用户密码,无法使用passmod -U解锁
-d:--delete:删除用户密码,将/etc/shadow文件中第二字段清空
-S:--status:查看用户的密码状态
--stdin:借助于管道将输入数据流当做标准输入信息送给passwd命令
echo "PASSWORD" | --stdin USERNAME
组认证相关命令:
gpasswd:
选项:
-a:--adduser:向名为group的组中添加用户user
-d:--deleyeuser:从名为group的组中移除用户user
其他相关管理命令:
chage:
功能:修改帐号和密码的有效期限
用法:chage[-l][-m mindays][-M maxdays][-I inactive][-E expiredate][-W warndays][-d lastdays]username
参数:
-l:列出用户的以及密码的有效期限
-m:修改密码的最小天数
-M:修改密码的最大天数
-I:密码过期后,锁定帐号的天数
-d:指定密码最后修改的日期
-E:有效期,0表示立即过期,
-1表示永不过期
-W:密码过期前,开始警告天数
chsh:
chsh 用于改变用户的登录shell.如果没有在命令行上指定shell,chsh能够做出提示
-s,--shell指定用户的登录shell
-l,--list-shells显示/etc/shells中的shell列表,然后退出
-u,--help显示使用方法,然后退出
-v,--version显示版本信息,然后退出
finger:
finger命令用来查询一台主机上的登录账号的信息,通常会显示用户名、主目录、停滞时间、登录时间、登录Shell等信息,使用权限为所有用户。
格式 finger [选项] [使用者] [用户@主机]
参数
-s:显示用户注册名、实际姓名、终端名称、写状态、停滞时间、登录时间等信息
-l:除了用-s选项显示的信息外,还显示用户主目录、登录Shell、邮件状态等信息,以及用户主目录下的.plan、.project 和.forward文件的内容
-p:除了不显示.plan文件和.project文件以外,与-l选项相同。
su:切换用户身份
su USERNAE:部分切换,半切换,再切换用户的时候,不会重新读取用户的配置文件,因此,用户并没有登录行为,所以,工作环境不初始化
su - USERNAME:登录式切换,完全切换,再切换用户的时候,重新读取目标用户的配置文件并且初始化工作环境,相当于“su -l USERNAME”
-c:并不会切换用户身份,而是以目标用户的身份执行命令
进行用户切换的时候,不要连续切换,而是用exit命令返回之前的用户
newgrp GROUPNAME:临时更改当前用户的主要组,使用exit返回之前的状态
id:先是真实有效的用户和组的ID
真实的ID:在/etc/passwd定义的用户的UID和GID
有效的ID:当前生效的用户的UID和GID
选项:
-g:只显示用户有效的GID
-u:只显示用户有效的UID
-G:显示用户所有组的ID
-n:以名称来代替ID进行显示
用户和组的管理