用户
基础概念及工作机制
安全3A
资源分派
Authentication 认证
Authorization 授权
Accouting,Audition 审计
用户user 用户有令牌 token, identity
Linux中有存放用户名和密码的数据库,用户名和成对的密码判定用户是否登录成功。每个用户登录时都在数据库里验证用户名和密码是否正确,如果正确会颁发令牌,当用户访问文件时会提交令牌给资源,资源根据提交的令牌判断用户是否有权限访问此文件,用户要想得到最新令牌必须重新登录。
Linux用户:username/UID
管理员 root,0
普通用户:1-65535
系统用户
1-499
1-999
对守护进程获取资源进行权限分配
普通用户
500+
1000+
交互式登录
用户相关配置文件
/etc/passwd 用户及其相关属性信息
name:password:UID:GID:GECOS:directory:shell
用户名:密码:UID:GID:描述信息:家目录:shell
用户名:首字母不能是大写
密码:x,新系统密码不存放在此
pwunconv 密码存放到passwd中
pwconv 密码存放到shadow中
UID:判断身份的唯一标识
GID:主组的GID
描述信息:
chfn username 修改用户的描述信息
finger username 查看用户描述信息
家目录:
默认家目录/home/username 家目录不存在时,会在/上
新建帐号时会从/etc/skel复制相关配置文件到家目录下
shell:
默认shell /bin/bash,/sbin/nologin一般给进程(服务)使用
chsh -s /someshell username 修改用户shell类型
/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
用户名:密码:最近一次修改密码时间:口令最短使用期限:口令最长使用期限:警告时间:宽限时间:账户有效期:保留字段
密码:!!表示账号锁定,双保险 x表示密码存放在/etc/passwd中
修改密码时间:从1970年1月1日起到密码最近一次被修改的时间 值为0第一次登录必须修改密码
口令最短使用期限:密码必须使用多长时间 值为0随时更改
口令最长使用期限:密码可以使用多长时间(密码有效期),使用多少天后必须更改 99999永久有效
警告时间:密码过期前几天提醒用户
宽限时间:密码过期后还可以使用几天
账号有效期: 从1970年1月1日算起,多少天后帐号失效
保留字段:以后使用
/etc/skel 家目录模板文件
新建账号时默认家目录里的相关配置文件都从/etc/skel里复制
/etc/default/useradd 设置添加的用户规则文件
设置组 家目录路径 密码宽限期 账户有效期 默认shell类型 是否创建邮箱
/etc/login.defs设置用户帐号限制
设置密码相关参数 用户相关设置(邮箱地址,是否创建家目录等) 修改加密算法
用户管理相关命令
useradd 创建用户
useradd [options] LOGIN
-u UID:指定UID
-g GID:指定组名或UID
-d:指定的路径(不存在)为家目录
-o:不检查UID唯一性与-u配合使用
-s:指定shell类型
-r:创建系统用户(不创建家目录和邮箱)
-c:指定描述信息
-G:为用户指定附加组
-m:给系统用户创建家目录
-M:给非系统用户不创建家目录
useradd -D 查看或更改/etc/default/useradd文件默认设置
useradd -D [options]
-g
-b
-s
usermod 修改用户
usermod [options] LOGIN
-u:修改UID
-g:修改新主组
-G:新附加组,保留原有附加组需配合-a使用
-s:修改shell类型
-c:修改注释信息
-d:新家目录不会自己创建,若要自动创建并移动原家目录数据,配合-m使用
-l:修改用户名
-e:设置用户账号过期时间
-L:锁定账号
-U:解锁
-f:设定非活动期限
userdel 删除用户
userdel [options] LOGIN
-r:删除其家目录及邮箱
id 查看用户
id [OPTION]... [USER]
-u:显示UID
-g:显示GID
-G:显示用户所属组的ID
-n:显示名称,需要与-ugG配合使用
密码相关
密码相关知识
加密机制
加密:明文-->密文
解密:密文-->明文
单向加密:哈希算法,原文不同,密文必不同
相同算法定长输出,获得密文不可逆推出原始数据
雪崩效应:初始条件的微小改变,引起结果巨大改变
md5($1),sha1,sha224,sha256($5),sha384,sha512($6)
更改加密算法 authconfig --passalgo=sha256--update
密码复杂性策略
使用数字、大小写字母及特殊字符中至少3种
位数足够长,使用随机密码,定期更换等
生成随机密码 openssl rand -base64 12
密码相关命令
passwd 修改用户密码
passwd [OPTIONS] UserName
-d:删除密码
-l:锁定用户
-u:解锁
-e:强制用户下次登录修改密码
-f :强制操作
-n:指定最短使用期限
-x:最长使用期限
-w:提前多少天开始警告
-i:非活动期限
--stdin:从标准输入接收密码 echo "password" | --stdin username
chage 修改用户密码策略
chage [options] LOGIN
-d:最后一次修改密码时间
-E:强制用户下一次登录修改密码
-I:非活动期限
-m:密码最短使用期限
-M:密码最长使用期限
-W:警告期限
-l:显示密码策略Linux安全上下文
运行中的程序:进程
以进程发起者的身份运行:root:/bin/cat
进程所能够访问资源的权限取决于进程运行者的身份组
基础概念
Linux组 Groupname/GID
管理员组 root,0
普通组
系统组
1-499
1-999
普通组
500+
1000+
组类别
主组(primary group) ,私有组
用户必须属于一个且只有一个主组
组名同用户名且仅包含一个用户
附加组(supplementray group) ,辅助组
一个用户可以属于零个或多个附加组
组相关配置文件
/etc/group 组及其相关属性信息
group_name:password :GID:user_list
组名:密码:GID:以此组为附加组的用户列表
/etc/gshadow 组密码及其相关信息
group name:encrypted password:administrators:members
组名:密码:管理员列表:以此组为附加组的用户列表
组相关命令
groupadd 创建组
groupadd [options] group
-g:指定GID
-r:创建系统组
groupmod 修改组
groupmod [options] GROUP
-g:修改GID
-n:修改组名
groupdel 删除组
groupmems 更改和查看组成员
groupmems [options] [action]
-g:更改为指定组(只有root)
-a:指定用户加入组
-d:从组中删除用户
-p:从组中清除所有成员
- l:显示组中成员
groups username 查看用户所属组列表
gpasswd 更改组密码
gpasswd [option] group
-a, --add user :将user添加到指定组中
-d, --delete user:从指定组中删除用户
-A, --administrators user,...:设置有管理权限的用户列表
newgrp 临时切换主组 如果用户本不属于此组,则需要组密码
切换用户
su switch user
su [OPTION]... [-] [USER [ARG]...]
切换用户的方式
不完全完全切换(非登录式切换) su username
不会读取目标用户的配置文件,不会改变当前工作目录
完全切换(登录式切换) su - username
会读取目标用户配置文件,切换至家目录
换个身份执行命令:
su [-] UserName -c 'COMMAND'权限
文件权限
文件属性
文件权限主要针对三类对象定义 每个文件针对访问者都定义了三类权限
user u 属主 Readable r 读
group g 属组 Writeable w 写
other o 其它 eXcutable x 执行
文件:
r:查看文件
w:修改文件内容
x:二进制程序的运行
目录:
r:可以ls查看目录中文件列表
w:可以在此目录中创建或删除文件
x:可以cd切换至此目录,也可ls -a查看文件详细列表
X:只给目录x权限,不给文件x权限
对于root用户来说rw权限不受影响,x权限受影响 普通rwx权限都受影响
权限用八进制数字表示
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
判断文件访问权限:所有者,所属组,其它 逐一进行匹配,一旦匹配到就使用
umask
mask 掩码 取消对应的权限
root用户umask是022
普通用户umask是002
umask 查看
#:设定umask为#
-S:模式方式显示
-p:输出可被调用
新建文件和目录的默认权限
目录:default权限=777-umask
文件:default权限=666-umask 结果如果有奇数+1,偶数不变
全局设置:/etc/bashrc 用户设置:~/.bashrc
Linux特殊权限
SUID user,占据属主的执行权限位 4 u+s
s属主拥有x权限,S属主没有x权限
继承二进制程序所有者的权限,对目录无意义
SGID group,占据属组的执行权限位 2 g+s
s属组拥有x权限,S组主没有x权限
1.继承所属组的权限
2.作用于目录上,此目录新建的文件继承目录的所属组
Sticky粘滞位 other,占据其它的执行权限们 1 o+t
t其它拥有x权限,T其它没有x权限
作用于目录上,此目录的文件只能被文件所有者或root删除
权限相关命令
chown 修改文件属主
chown [OPTION]... [OWNER][:[GROUP]] FILE...
-R:递归
OWNER
OWNER:GROUP
:GROUP
chown [OPTION]... --reference=RFILE FILE... 参考
-R:递归
chgrp 修改文件属组
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE... 参考
chmod 修改文件权限
chmod [OPTION]... MODE[,MODE]... FILE...
-R:递归
mode法:chmod whooptper file
who:u,g,o(all)
opt:+,-,=
per:r,w,x,X
chmod u+x,g-r,o= file
chmod [OPTION]... OCTAL-MODE FILE...
digit法:
所有者 所属组 其它
u g o
rwx rw- --x
chmod 761 filename
chmod [OPTION]... --reference=RFILE FILE... 参考RFILE文件权限设置FILE权限
chattr 对特定文件进行锁定(避免管理员误操作)
+i:不能删除,改名,更改
-i:解锁
+a:锁定文件名称不能更改,可追加内容
-a:解锁
+A:锁定读时间
lsattr 查看特定属性
ACL Access Control List访问控制列表
实现灵活的权限管理,除了文件所有者,所属组和其它,可以对更多的用户设置权限
CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test
设置acl权限
setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m:添加acl权限
-d dir:设置默认权限
-x:删除Acl权限
-R:递归
-b file:清除所有acl
-k dir:删除默认权限
查看acl权限
getfacl [-aceEsRLPtpndvh] file ...
备份和恢复acl
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
setfacl -R --set-file=acl.txt /tmp/dir1
setfacl --restore acl.txt
getfacl -R /tmp/dir1
acl文件上的group权限是mask值,acl中mask定义除所有者和其它的最高权限(自定义用户和自定义组)
ACL生效顺序:所有者,自定义用户,自定义组,其它