1. 总结linux安全模型
资源分派:认证(验证用户身份),授权(不同用户设置不同权限),审计(确保系统安全)
用户:每个用户都有唯一标识UID,root为0
系统用户:1-999(CentOS7及以上),1-499(CentOS6)
登录用户:1000+(CentOS7及以上),500+(CentOS6)
用户组:可以将一个或多个用户添加到组中,每个组都有唯一标识GID,root为0
系统用户:1-999(CentOS7及以上),1-499(CentOS6)
登录用户:1000+(CentOS7及以上),500+(CentOS6)
每个用户都有一个主组,创建用户时就会创建同名主组,一个用户可以有任意个附属组
安全上下文:运行的程序能访问的权限取决于进程发起者的权限
2. 总结学过的权限,属性及ACL相关命令及选项,示例。
r,w,x:读,写,执行(4,2,1)
修改权限:
文字法:ugo,rwx chmod o+r 文件名(给others一个读权限)
数字法:chmod 764 文件名
目录:读:浏览目录内文件列表
写:对目录内文件增删
执行:进入目录中
一个文件能不能删不取决于文件的权限,而是取决于所在目录的权限
X权限:对目录、可执行文件加执行权限,不可执行文件不加执行权限
读写权限限制对root不起作用,执行权限限制对root起作用
目录默认权限755,文件默认权限644,可用umask工具修改文件
文件默认权限为:666 - umask,奇数位加一
目录默认权限为:777 - umask
root默认umask为022,普通用户为002
永久修改umask:家目录下隐藏文件,.bashrc,写入umask XXX
SUID:作用在二进制可执行文件上,用户执行此程序时,将继承改程序所有者的权限,例:passwd
chmod u+/-s 文件名:获取/删除权限
chmod 4755 文件名:数字法标识为4
SGID:作用在二进制可执行文件上,用户执行此程序时,将继承改程序所属组的权限
作用在目录上,该目录下新建文件会继承目录的所属组
chmod g+/-s 文件名
chmod 2755 文件名
sticky:粘滞位,作用在目录上,此目录中的文件只能由文件所有者删除(root是例外)
chmod o+/-t 目录名
chmod 1755 目录名
chattr +i 文件名:让文件不能被修改,不能被删除,保护文件
lsattr 文件名:查看attr权限
chattr -i 文件名:取消特殊属性
charrt +a 文件名:可追加内容(不能用vim工具追加,可用重定向),不能改名,不能删除
ACL:setfacl -m u:用户名:权限数字 文件名,针对某个或某些用户设置权限
getfacl:查看acl权限
setfacl -b 文件名:删除acl权限
3. 结合vim几种模式,学会使用vim几个常见操作。
1)如何打开文件。并在打开文件(命令模式)之后如何退出文件。
vim 文件名,ZZ、:q 保存退出,ZQ、:wq 不保存退出
2)打开文件(命令模式)之后,进入插入模式。并在插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。
i进入插入模式,ESC退出插入模式,ZZ、:q 保存退出,ZQ、:wq 不保存退出
3)打开文件(命令模式)之后,进入插入模式,编写一段话,"马哥出品,必属精品", 之后从插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。
vim 文件名,i,马哥出品,必属精品,ESC,:q
4)使用cat命令验证文件内容,是刚刚自己写的内容。
cat 文件名
5)(可选),命令模式下,光标在单词,句子上进行前后,上下跳转。行复制粘贴。行删除。
w:光标跳到下一个单词的词首
b:前一个单词的词首
e:下一个单词的词尾
0:光标跳到所在行行首(真正行首)
^:跳到所在行非空格行首
$:跳到所在行行尾
x:剪切
p:粘贴
dd:删除一行
yy:复制行
7. 通过shell编程完成,30鸡和兔的头,80鸡和兔的脚,分别有几只鸡,几只兔?
#!/bin/bash
read -p "请输入头的数量:" head
read -p "请输入脚的数量:" foot
C=$[(4*head-foot)/2]
R=$[(foot-2*head)/2]
echo "头:$head,脚:$foot,鸡:$C只,兔:$R只"
8. 结合编程的for循环,条件测试,条件组合,完成批量创建100个用户,
1)for遍历1..100
2)先id判断是否存在
3)用户存在则说明存在,用户不存在则添加用户并说明已添加。
#!/bin/bash
read -p "请输入要创建的用户名:" name
read -p "请输入要创建的用户数量:" count
for i in `seq $count`
do
username="$name$i"
echo "要创建用户:$username"
id $username &> /dev/null
if [ $? -eq 0 ]
then
echo "$username该用户已存在"
else
useradd $username
echo "成功添加用户:$username"
fi
done
9. 磁盘存储术语总结: head, track, sector, sylinder.
盘面,磁头head(盘面数=磁头数),磁道track,柱面cylinder(磁道数=柱面数),扇区sector(一个512字节)
硬盘容量:=磁头数×柱面数×扇区数×512字节