输出重定向 : 把原本要输出到屏幕的数据信息写入指定文件
标准输出重定向STDOUT,文件描述符为1, 默认输出到屏幕
错误输出重定向STDERR,文件描述符为2,默认输出到屏幕
A命令 | B命令 : 把前一个命令输出到屏幕的数据作为B命令的标准输入
代表匹配0个或多个字符, ?表示单个字符, [0-9]代表匹配0-9单个数字的字符,[abc]表示匹配abc三个字符中任意一个字符
如: ll -l /etc/abc 则会列出所有abc开头的文件
Linux中变量一般都是大写的
命令在Linux的执行步骤
- 判断用户是绝对路径还是相对路径方式输入命令, 绝对路径就直接执行
- 检查是否是别名命令
- Bash解释器判断输入的是内部还是外部命令, 内部命令是解释器内部指令,会直接执行; 外部命令交由下一步
- 系统在多个路径中寻找用户输入的命令文件, 定义这些路径叫PATH, 告诉Bash解释器待执行命令存放位置,然后Bash解释器会在这些位置逐个寻找
三种模式
接受参数 ./example.sh A0 A1 A2 …
则在example.sh中可用 $0 $1 $2 …来使用
$? 表示上一次命令的返回值
条件测试语句 [空格 条件表达式 空格] 成功返回1 失败返回0
流程控制if [空格 条件表达式 空格] ; then xxxxx elif [条件] ; then xxx else xxxx fi
for 循环
for 变量名 in 取值列表 do 命令序列 done
while循环
while 条件 do 操作 done
case
- 一次执行计划
只执行一次,临时作用,at -l 显示所有计划 at 11.05 在11.05执行, 之后输入执行内容, ctrl + D结束 也可以利用管道直接输入到计划中 echo "test" | at 11.05 删除计划atrm [序号]
管理员UID为0: 系统的管理员用户
系统用户UID为1-999
普通用户UID从1000开始
用户组: 为组内用户提供统一权限或任务
创建用户userad [选项] 用户名
默认用户家目录为/home, 默认Shell解释器为/bin/bash, 默认创建于用户同名的基本用户组
groupadd创建用户组
passwd [选项] [用户名]
修改用户密码,过期时间,认证信息等
普通用户只能修改自己的密码, 而root管理员可以修改任何人密码而且不需要验证旧密码
SUID, 对二进制程序设置的特殊权限, 让程序执行者拥有所属者的权限
x位变成s或S
SGIN
- 让执行者临时拥有文件所属组权限,对拥有执行权限的二进制程序进行设置
- 在某个目录中创建的文件自动继承该目录的用户组
chmod 设置文件或目录权限
chown 设置文件或目录所属组, 对于目录加 -R表示递归处理
SBIT
确保用户只能删除自己的文件
当目录被设置后执行部分都为t/T
chmod o+t 表示设置SBIT位
lsattr [参数] 文件
显示文件隐藏权限
对某用户单独的权限访问控制
setfacl [参数] 文件名称
用户管理文件的ACL规则
对目录-R. 对普通文件 -m , 删除某文件ACL -b
有设置ACL的在ll列举文件后 后面的.变成+
getfacl命令
查看ACL
su 切换用户 , su后加个 - 表示完全切到新用户,把环境变量信息也变更为新用户相应信息, 建议加上
sudo给普通用户额外权限来完成root才能完成的任务
sudo [参数] 命令
系统硬盘一般以/dev/sd 开头 之后用a-p代表16个不同硬盘 , abcd是由内核识别顺序决定的而非插槽位置
关于分区,sda3不是第三分区的意思而是编号为3的分区
/dev/sda5意思是系统识别到的第一块硬盘设备中分区编号为5的逻辑分区设备文件
硬盘由大量扇区组成, 每个扇区512字节, 第一个扇区最重要 包含主引导记录和分区表信息,结束符占2个字符
分区表中每记录一个分区就要16个字节, 为了解决分区不够的问题,往往会拿出一个分区的大小作为指向扩展分区,那么就有3个主分区和1个扩展分区, 扩展分区也能按逻辑创造分区
Linux支持数十种文件系统
Ext3: 日志文件系统, 宕机防止数据丢失,并自动修复数据不一致错误,
Ext4: 3的改进版本,能够有无限多的子目录, 能批量分配block块,极大提高读写效率
XFS: 高性能日志文件系统, 快速恢复被破坏文件
linux中有个super block 硬盘地图, linux并不是把所有文件内容直接写入到这个硬盘地图中, 而是把每个文件权限和属性记录在inode中, 每个文件占用一个独立的inode表格, 该表格大小默认为128字节,记录着如下信息
文件实际内容存在block中,大小可以是1KB,2KB,4KB, 一个inode默认大小为128B(Ext3), 记录一个block需要耗费4B, 当文件的inode写满后,linux会自动分配一个block块,专门用于像inode那样记录其他block块的信息, 这样把各个block块内容串到一起,就能让用户读到完整的文件内容
linux为了用户在读取写入时不用关心底层结构,提供VFS虚拟文件系统接口, 使用户在操作文件时就是统一对这个虚拟文件系统进行操作
挂载: 用户需要用到硬盘设备或分区中数据时,需要先将其与已存在的目录相关联
命令mount 文件系统 挂载目录
用于挂载文件系统,挂载是使用硬件设备前最后一步操作
此时挂载都是暂时挂载, 重启便会失效, 如果要永久的自动关联
需要按如下格式填写在/etc/fstab文件中
umount [挂载点/设备文件] 撤销已挂载设备文件
du命令
查看文件数据占用量
通过硬盘中预先划分一定空间,然后将内存中暂时不常用数据临时放到硬盘中, 解决内存不足问题
mkswap对新建主分区进行格式化操作
管理员限制某个用户或用户组可以使用最大硬盘空间或最大文件个数,一旦到达最大值就不允许继续使用
可使用quota命令进行磁盘容量配额管理,从而限制用户硬盘可用或所创建的最大文件个数
还有软限制和硬限制功能
软限制:到达软限额会提示用户,但仍允许用户在限定额度内继续使用
硬限制:到达硬限额会提示用户,且强制终止用户操作
xfs_quota命令
专门针对xfs文件系统来管理quota磁盘容量配额服务的命令
edquota命令
编辑用户的quota配额限制
当用户使用quota磁盘容量配额限制后,可以用edquota按需修改限额的数值
硬链接: 指向原始文件inode的指针,系统不会新分配一个inode和文件, 所以硬链接文件和原始文件其实是同一个文件,只是名字不同
每添加一个硬链接 inode就会+1. 只有inode为0的时候才算彻底删除
不能跨分区对目录文件进行链接
即使原始文件删除,也能通过硬链接连接
软链接(符号链接) : 仅仅包含所链接文件的路径名,能跨文件系统和链接分区,原始文件删除后,链接文件也失效,类似快捷方式
把多个硬盘设备组合成一个容量更大,安全性更好的磁盘阵列,并把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上,然后利用分散读写技术来提升磁盘阵列整体性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到数据冗余备份效果
降低丢失数据几率,提高硬盘读写速度
硬盘分好区域或部署为RAID磁盘阵列后,就不能修改硬盘分区大小了,这个时候就需要用LVM来对硬盘资源动态调整
在硬盘分区和文件系统之间添加逻辑层,它提供一个抽象卷组,能把多块硬盘进行卷组合并
随着业务增加,数据量会变大,原有硬盘分区可用容量越来越少,那么可以通过部署LVM来解决上述问题,部署LVM时,需要逐个配置物理卷,卷组和逻辑卷
在Linux中有iptables和firewall防火墙, 其实,iptables 与 firewalld 都不是真正的防火墙,
它们都只是用来定义防火墙策略的防火墙管理工具而已
iptables将配置的防火墙策略交由内核层面的netfilter 网络过滤器来处理
firewalld 服务则是把配置的防火墙策略交由内核层面的 nftables 包过滤框架来处理。
在早期的 Linux 系统中,默认使用的是 iptables 防火墙管理服务来配置防火墙
防火墙会从上至下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作
并去执行匹配项中定义的行为(即放行或阻止)
因此要把较为严格、优先级较高的策略规则放到前面,以免发生错误
防火墙策略规则的设置有两种:一种是“通”(即放行),一种是“堵”(即阻止)
当防火墙的默认策略为拒绝时(堵),就要设置允许规则(通)
如果防火墙的默认策略为允许时,就要设置拒绝规则
规则:iptables 把用于处理或过滤流量的策略条目
多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同进行分类
匹配到流量还需要选择采取措施
ACCEPT(允许流量通过)、REJECT(拒绝流量通过)
LOG(记录日志信息)、DROP(拒绝流量通过)
DROP是丢弃不响应,REJECT是拒绝并向对方说明情况
拥有基于CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式。
加入区域概念,区域就是 firewalld 预先准备了几套防火墙策略集合(策略模板),用户可
以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换
TCP Wrappers 服务则是能允许或禁止 Linux 系统提供服务的防火墙,从而在更高层面保护了 Linux 系统的安全运行
TCP Wrappers 服务的防火墙策略由两个控制列表文件所控制,用户可以编辑允许控制列表文件来放行对服务的请求流量,也可以编辑拒绝控制列表文件来阻止对服务的请求流量
控制列表文件修改后会立即生效
系统将会先检查允许控制列表文件(/etc/hosts.allow),如果匹配到相应的允许策略则放行流量;
如果没有匹配,则去进一步匹配拒绝控制列表文件(/etc/hosts.deny),若找到匹配项则拒绝该流量。
如果这两个文件全都没有匹配到,则默认放行流量。