用户和组管理 :
注 : 实现资源分配的机制
Authentication : 认证,验证用户身份是否合法或者验证用户是否有权使用资源,但并不能具体确定用户可以使用那些资源以及可以使用多少资源
Authorization : 授权,Linux中一切皆文件,而正是通过文件上某些元数据的修改,以实现对用户的授权
Audition/Accounting : 审计,审核用户权利的使用是否合理
属主(owner) : 即文件归谁所有
属组(group) : 为linux上一组相似用户建组,并以组为单位进行授权
1,将属组所拥有的权限与属组内的用户建立关联
2,为数组添加新的用户
Linux用户(Username)
UID : linux以数字标识和追踪用户身份
管理员用户 : root,0
普通用户 : 1-65535
系统用户 : CentOS 6 : 1-499;CentOS 7 : 1-999,对守护进程获取资源进行的权限分配
普通用户 : CentOS 6 : 500+;CentOS 7 : 1000+,交互式登陆
linux的安全上下文 :
进程 : process,运行中的程序
注 : 某个进程是在以发起者的身份在运行,因此发起者的身份决定了进程所能够访问的资源的权限,进程作为发起者的动作,其本身并没有任何区别,区别在于发起者的身份
决定了动作能否执行以及执行的程度
linux组的类别 :
用户的基本组(主组) : 即用户的基本或主要身份,用户拥有的大部分或主要权限都集中在在这个组中
用户的额外组(附加组) : 用户的额外身份,主要集中了用户的少有的特殊权限
私有组 : 组名同用户名,且组中只有一个用户,创建新用户时,未指定用户的基本组,均默认为用户创建私有组
linux用户和组的相关配置文件 :
/etc/passwd : 用户及其属性信息
文件组织格式 :
name : password : UID : GID : GECOS : directory : shell
用户名 : 密码 : UID : GID : 用户的完整信息(如家庭住址,电话号码等,信息多元时,以","分隔) : 用户的家目录 : 为用户指定的默认shell
注: 密码字段中,并未真正存储用户密码,而仅仅只是以一个占位符占位而已
/etc/group : 组及组属性信息
文件组织格式 :
group_name : password : GID : user_list
组名 : 组密码 : GID : 以该组为附加组的用户列表(用户多元时,以","分隔)
注 : 组密码字段中,并未真正存储密码,仅仅只是以一个占位符占位而已
/etc/shadow : 用户密码及其相关属性信息
文件组织格式 :
用户名 : 加密后的密码 : 最近一次更改密码的时间 : 密码的最小使用期限 : 密码的最大使用期限 : 密码的警告时间段 : 密码的禁用期 : 账号的过期日期 : 保留字段
加密机制 :
加密 : 明文 -> 密文
解密 : 密文 -> 明文
单向加密 : 提取数据指纹,数据与数据指纹之间一一对应,数据不变,数据指纹就不会变,但无法根据数据指纹还原数据
加密算法 :
md5 : message digest(摘要),128bits
sha1 : secure hash algorithm,160bits
sha224 : 224bits
sha384 : 384bits
sha256 : 256bits
sha512 : 512bits
雪崩效应: 明文的微小改变,就会导致密文的巨幅改变,目的在于防止根据密文的相似度逆推明文的相似度
定长输出 : 只要加密算法一样,最终输出的密文长度就不会改变
注 : 为避免多个用户输入的密码相同,导致一个用户可以根据自己的密文推出其他用户的密码,因此系统会自动在用户密码的后面加入一串随机数,联合用户密码生成密文
每次在用户登陆时,都会在用户密码后,加入该随机数,完成用户的认证
密码结构 : $加密方法及版本$杂质$密码密文
密码的复杂性原则 :
1,至少要使用数字,小写字母,大写字母,特殊字符中的三种
2,要足够长
3,使用随机密码
4,定期更换,不要使用最近使用过的密码
=======================================================================================================================================================================
用户和组相关的管理命令 :
用户创建 : useradd
useradd login_name
-u UID : 指定用户UID,[UID_MIN,UID_MAX],定义在/etc/login.defs文件中,默认创建的用户UID为最近一次创建的用户UID加一
-g GID/group_name : 指定用户所属的基本组,可为基本组的组名,也可为基本组的GID,但组必须事先存在
-G GID : 为用户指定附加组,组多元时,以都“,”隔开
-c,--comment “COMMENT” : 为用户指定详细信息,信息多元时,以“,”,分隔
-d /path/to/home_dir : 指定用户家目录
-s SHELL : 为用户指定默认shell,/etc/shells:保存有可用shell列表
-r : 创建系统用户,CentOS 6 : 1-499,CentOS 7 : 1-999
useradd -D : 配合上述选项使用,修改不给任何选项,创建用户时的默认设置,仅对当前shell进程,当前会话有效
组创建 :groupadd
groupadd group_name
-g GID : 指定组ID,[GID_MIN,GID_MAX],定义在/etc/login/defs文件中
-r : 创建系统组,CentOS 6:1-499;CentOS : 1-999
=====================================================================================================================================
id : 显示用户的id信息
-u : 仅显示用户UID
-g : 仅显示基本组GID
-G : 显示用户基本组和附加组信息
-n : name,显示用户及组名,而非组或用户id
=========================================================================================================================================
su : 以另一个用户身份执行命令或实现用户之间切换
切换用户的方式 :
不完全切换 : 即暂时获得其他用户权限,但同时用户当前用户的权限,并不会读取目标用户的配置文件
su user_name
完全切换 :即彻底变成另外一个用户,取得另外一个用户的权限,但仅拥有另一个用户的权限,不再拥有当前用户的权限,会读取目标用户的权限
su - user_name
注 : root用户切换到其他用户不需要密码,但普通用户切换到其他用户需要密码
以其他用户身份执行命令 :
su [-] -c 'COMMAND'
选项:
-l : 登录式切换,即完全切换
============================================================================================================================================
usermod : 修改用户属性
usermod [option]... user_name
-u UID : 新的UID
-g GID : 新的基本组
-G GROUP,... : 新的附加组,用户原有的附加组将会覆盖,如果要保留原有附加组,可符合选项-a一起使用
-s SHELL : 新的默认shell
-c 'COMMENT' : 新的用户基本信息
-d DIRECTORY : 新的用户家目录,但仅使用该选项,系统并不会将用户原目录下的文件移至新的家目录下,也不会为用户创建新的家目录,但若要将用户原本家目录下的
文件移至新的家目录下,需配合-m选项一起使用
-e : 指定用户账户的过期日期
-f : 指定用户密码的非活动期限
-l : 修改用户登录名
-L : 锁定指定用户
-U : 解锁指定用户
===================================================================================================================================================
为指定用户添加或修改密码 : passwd
passwd user_name : 修改指定用户的密码,仅root权限
passwd : 修改用户自己的密码,不允许前提是用户有密码,否则用户添加密码或修改密码
-l : 锁定指定用户
-u : 解锁指定用户
-n MIN_DAYS : 指定密码的最小使用期限
-x MAX_DAYS ; 指定密码的最大使用期限
-w WARN_DAYS : 指定密码的警告期限
-i INACTIVE_DAYS : 指定密码的非活动期限
--stdin : 从标准输入接受用户密码,如echo 'passwd' | passwd --stdin user_name
======================================================================================================================================================
删除用户 : userdel
userdel [option]... user_name
-r : 删除用户家目录
===========================================================================================================================================================
组属性修改 : groupmod
groupmod [option]... group_name
-n : 指定新组名
-g GID : 执行新的组ID
======================================================================================================================================================
组删除 : groupdel
groupdel GROUP
===========================================================================================================================================================
组密码添加 :gpasswd
组密码作用 : 当本用户既非某组的基本组用户,又非某组的附加组用户,但有需要取得该组的权限时,此时需要组密码,临时成为该组用户
gpasswd GROUP : 添加或修改组密码
-a USER : 将user添加至指定组
-d user : 从该组中删除指定用户
-A user1,user2,.... : 添加具有管理权限的用户列表
============================================================================================================================================
newgrp : 为用户临时切换基本组
注 : 如果但前用户不属于该组,则需要组密码
=============================================================================================================================================
pwck : 检查密码文件的完整性,即检查用户及其认证信息的完整性,检查/etc/passwd,/etc/shadow格式是否正确,数据是否有效
==========================================================================================================================================
修改用户属性 : chage
chage [option]... login_name
-d last_day : 修改用户最近一次修改密码的时间
-E expire_date : 修改用户账户过期日期
-I inactive : 修改用户密码禁用期
-m min_days : 修改用户密码的最小使用期限
-M max_days : 修改用户密码的最大使用期限
-W warn_days : 修改用户密码的提醒警告期
=================================================================================================================================================
其他命令 :
chfn ; 修改用户的详细信息(即家庭住址,电话号码等信息)
finger : 查看用户的详细信息
chsh ; 修改用户的默认shell
=================================================================================================================================================
权限管理:
文件的权限主要针对三类用户:
属主 : owner,u
属组 : group,g
其他 : others,o
每个文件对每个用户都定义了三种权限 :
r : readable
w : writable
x : excutable
文件 :
r : 可使用文件查看类工具查看文件内容
w ; 可修改文件内容
x : 可将文件提交内核启动为一个进程,但为避免文件被恶意利用,任何文件在创建时,都默认没有执行权限
文件夹 :
r : 可使用ls命令查看此目录中的文件列表
w : 可在此目录中创建文件,也可在此目录中删除文件
x : 可使用ls -l查看此目录中的文件列表,也可使用cd命令进入此目录,默认创建目录时,均有此权限
权限的另外表示方法 : r---w---x -> 100010001 -> 421
修改文件权限 : chmod
chmod [option]... OCTAL_MODE(八进制) FILE...
-R : 递归修改权限,当修改目录权限时,目录中文件的权限也会跟着一起改变
chmod [option]... mode,... FILE...
mode :
修改某一类用户的权限 :
u=r
ug=rw
u=r,g=w
注:没有写出的权限,均默认没有该权限
修改某一类用户的某一位权限 :
u+r
ug+r
u+r,g+r
增加某用户在某一位的权限
u-r
ug-w
u-x,g-x
去除某类用户在某一位的权限
chmod [option]... --reference=RFILE FILE...
参考RFILE文件的权限,将FILE文件的权限修改的和RFILE文件的权限一模一样
=================================================================================================================================================
修改文件的属主和属组,仅root用户权限
chown [option][:[GROUP]] FILE...
注: 命令中的“:”可用“.”替代
-R :递归修改文件的属主
chown [option]... --reference=RFILE FILE,.....
参看RFILE修改FILE的属主
===========================================================================================================================================
修改文件的属组 :chgrp
chgrp [option]... GROUP FILE...
chgrp [option]... --reference=RFILE FILE...
-R : 递归修改文件的属组
=======================================================================================================================================
文件或目录创建时的遮罩码 : umask
注 : 遮罩码用户创建文件或文件夹时,为文件或文件夹指定默认权限
FILE : 666 - umask
注 : 当某类用户创建文件时,权限减得的结果中包含x权限,则结果加一,直至无x权限
DIR : 777 - umask
umask : 查看umask的值
umask # : 修改umask的值,仅对当前用户有效