linux基础

linux基础

安装、初始化

安装centos

服务器初始化:[参考文件][]

初始化/优化:更改源(快照),优化基础配置、端口

systemd:服务管理、网络管理等

linux开机过程:bios自检-->启动菜单-->加载操作系统内核-->内核初始化-->启动初始化进程(systemd进程)

bash

bash:命令解释器shell

# 查看当前shell
root@localhost:~# echo $SHELL
/bin/bash
# 查看有哪些bash
root@localhost:~# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash 
# shell提示符(/etc/profile修改)
root@localhost:~# echo $PS1
${debian_chroot:+($debian_chroot)}\[\033[01;33;1m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$

-bash-4.2$ 用户缺少环境变量 cp /etc/skel/.bash* .

命令别名alias if0='ifconfig eth0' 取消别名:unalias

echo 单引号所见即所得;双引号可以使用转义echo -e "test\nTEST";反引号 执行命令

$PATH环境变量

bash shell配置文件

Bash的配置⽂件保存⽤户的⼯作环境
个⼈配置⽂件: ~/.bash_profile ~/.bashrc
全局配置⽂件:/etc/profile /etc/profile.d/*.sh /etc/bashrc
profile类⽂件, 设定环境变量, 登陆前运⾏的脚本和命令
bashrc 类⽂件, 设定本地变量, 定义命令别名
全局配置和个⼈配置设置冲突, 优先使⽤个⼈配置准

shell配置文件应用顺序

//登录式shell配置⽂件执⾏顺序
/etc/profile->/etc/profile.d/*.sh->~/.bash_profile->~/.bashrc->/etc/bashrc
//⾮登陆式shell配置⽂件执⾏顺序
~/.bashrc->/etc/bashrc->/etc/profile.d/*.sh
#验证登陆shell和⾮登陆shell配置⽂件执⾏顺序, 在每个配置⽂件加⼊⼀段 “echo”即可
#最后通过登陆shell和⾮登录shell⽅式登陆linux, 即可验证执⾏顺序

目录结构

/etc 配置文件目录
/var 可变文件,日志文件
/run 系统启动、运行的数据
/home 用户家目录
/root 超级管理员目录
/tmp 临时文件存放目录
/boot 存放系统引导时候需要的文件
/dev 存放设备文件
/usr 应用程序和文件的安装目录
/usr/bin 用户命令目录
/usr/sbin 管理员命令目录
/usr/local 本地自定义安装的软件

vim三种模式

vim三种模式:命令模式、末行模式、编辑模式

打包压缩

优点:
节省磁盘空间占用率;节省网络传输带宽消耗;网络传输更加快捷

# 案例:没有网络,没有账号密码,登录服务器,通过nc方式进行文件传输
# 发送方
tar zcf xx.tar /etc|nc ip 端口
# 接收方
nc -l 端口 | tar -zxf xx.tar -C /tmp

文件属性

# 通过inode删除文件
ls -i test
rm `find . -inum 34774620`
# 或者
find . -inum 3278052 -exec rm -i {} \;

软连接、硬链接

ln -s 源文件 文件

删除软连接:unlink 文件名

生产软连接作用:
软件升级;企业代码发布;不方便目录移动

硬链接:ln 源文件 文件

区别:
1)ln命令创建硬链接,ln -s命令创建软链接。
2)⽬录不能创建硬链接,并且硬链接不可以跨越分区系统。
3)⽬录软链接特别常⽤,并且软链接⽀持跨越分区系统。
4)硬链接⽂件与源⽂件的inode相同,软链接⽂件与源⽂件inode不同。
5)删除软链接⽂件,对源⽂件及硬链接⽂件⽆任何影响。
6)删除⽂件的硬链接⽂件,对源⽂件及链接⽂件⽆任何影响。
7)删除链接⽂件的源⽂件,对硬链接⽆影响,会导致软链接失效。
8)删除源⽂件及其硬链接⽂件,整个⽂件会被真正的删除。

日志审计

通过 sudo 和 syslog 配合实现对所有⽤户进⾏权限的⽇志审计并将记录⽇志集中管理,实施后让所有运维和开发执⾏的sudo命令都有记录可查,杜绝了内部⼈员的操作安全隐患。

sudo⽇志审计,专⻔针对sudo命令的系统⽤户记录其执⾏的命令相关信息,所谓sudo命令⽇志审计,并不记录普通⽤户的操作,⽽是记录执⾏sudo命令的⽤户操作。

1.安装sudo、rysylog

root@localhost:~# yum install -y sudo rsyslog
root@localhost:~# rpm -qa rsyslog sudo
rsyslog-8.24.0-57.el7_9.3.x86_64
sudo-1.8.23-10.el7_9.3.x86_64

2.配置 /etc/sudoers 记录⽇志路径

root@localhost:~#  echo "Defaults logfile=/var/log/sudo.log" >>/etc/sudoers
# 追加配置
root@localhost:~# tail -1 /etc/sudoers 
Defaults logfile=/var/log/sudo.log
root@localhost:~# visudo -c 
/etc/sudoers:解析正确

3.配置 rsyslog ⽇志服务

root@localhost:~# echo "local2.debug /var/log/sudo.log" >>/etc/rsyslog.conf
root@localhost:~# systemctl restart rsyslog
# 查看
cat /var/log/sudo.log

4.普通⽤户使⽤sudo权限验证⽇志记录

//使⽤普通执⾏sudo命令
rm -rf /root/test/
rm: ⽆法删除"/root/test": 权限不够

sudo rm -rf /root/test/
//检查⽤户在什么时间执⾏过什么操作
cat /var/log/sudo.log

系统负载

系统负载是所有cpu的运⾏队列的总和

//假设当前计算机有4个核⼼的cpu,当前的负载是2.92

cpu1 cpu2 cpu3 cpu4

2.94/4(个cpu核⼼) = 73%的cpu资源被使⽤,剩下27%的cpu计算资源是空想的

管道

# 追加到文件中,与重定向的区别是会打印
ip addr|tee filename

磁盘分区

## 添加一块小于2TB的磁盘并分区,步骤如下:
1)给虚拟机添加一块新的硬盘。
2)使用fdisk进行分区。
  fdisk /dev/sdb
  partprobe /dev/sdb
3)使用mkfs进行格式化。
  mkfs.xfs /dev/sdb1
4)使用mount进行挂载。
mount /dev/sdb1 /mnt

## 大于2T磁盘分区,步骤如下:
1)安装gdisk工具
yum -y install gdisk
# a.vmware添加一块磁盘 /dev/sdc
# b.不重启生效
fdisk -l|grep sdb
echo "- - -" > /sys/class/scsi_host/host0/scan # host0不行就换host1或者host2
fdisk -l|grep sdc
Disk /dev/sdc: 1073 MB, 1073741824 bytes, 2097152 sectors
2)开始分区
gdisk /dev/sdc
3)格式化
mkfs -t ext4 /dev/sdc1
4)挂载
mount /dev/sdc1 /data

逻辑卷

多个物理卷pv组成卷组vg,逻辑卷lv是卷组vg中的划分的一部分空间、

  • 部署逻辑卷

    1.创建物理卷, 添加物理磁盘
    pvcreate /dev/sdb
    pvs # 检查pv创建情况
    2.创建卷组, 添加物理卷加⼊到该卷组
    vgcreate datavg /dev/sdb
    vgs # 检查卷组
    3.在卷组中划分逻辑卷
    lvcreate -L 100M -n lv1 datavg
    lvscan # 检查逻辑卷
    4.格式化文件系统
    mkfs.xfs /dev/datavg/lv1
    5.挂载
    mount /dev/datavg/lv1 /lv1/
    
  • 卷组池管理

    # 加入新硬盘
    pvcreate /dev/sdc
    # 扩展
    vgextend datavg /dev/sdc
    # 移除某块硬盘
    vgreduce datavg /dev/sdb
    # 迁移
    pvmove /dev/sdb
    
  • 扩容逻辑卷

    # 逻辑卷的扩展, 取决于vg卷中剩余多少容量, 扩展容量不能超过卷组VG
    # 扩展lv逻辑卷
    lvextend -L +800M /dev/datavg/lv1
    lvextend -l +50%FREE /dev/datavg/lv1 # 按百分比
    # 扩展fs⽂件系统
    //xfs扩容
    xfs_growfs /dev/datavg/lv1
    //ext扩容
    resize2fs /dev/datavg/lv1
    
  • 缩小逻辑卷

    # 实质是删除逻辑卷中没有使用的空间,需要重新格式化并创建一个新的文件系统
    # 取消挂载
    umount /lv1
    # 缩小
    lvresize -L 500M /dev/datavg/lv1
    # 格式化
    mkfs.xfs -f /dev/datavg/lv1
    # 重新挂载
    mount /dev/datavg/lv1 /lv1/
    
  • 删除逻辑卷

    # 取消挂载,lvremove删除
    umount /lv1
    lvremove /dev/datavg/lv1
    

网络基础

  • 基础知识

    ip地址:主机在互联网中的唯一标识
    子网掩码:指明ip地址所在的子网
    子网/网段:一个网络区域,这个区域内(同一个广播域)的主机都是同一个网段
    网关:每个子网连接其他子网的出口称为网关(网络出口。作用:共享上网;ip映射)
    路由:不同子网间转发数据的动作,称为路由(选择最佳路径)
    
  • osi七层模型

应用层---应用程序访问网络的接口
表示层---对信息加密、解密
会话层---为应用程序访问网络提供接口访问,对应主机进程
传输层---向通信主机进程之间的通信提供服务,主要的协议有TCP和UDP
网络层---逻辑地址寻址
数据链路层---逻辑连接、硬件寻址、差错控制等
物理层---连接、维护或断开物理连接
  • 三次握手、四次挥手

  1. 第一次握手:客户发送请求(客户端进入syn_send同步发送状态),此时服务器知道客户能发;

  2. 第二次握手:服务器发送确认(服务器由listen进入syn_rcvd同步收到状态),此时客户知道服务器能发能收;

  3. 第三次握手:客户发送确认(客户发送ack,客户端进入established状态),此时服务器知道客户能收(服务收到客户发送的ack后,也进入established状态)。

  4. 第一次挥手:客户向服务器发送释放连接报文段

  5. 第二次挥手:服务器向客户发送确认段

  6. 第三次挥手:服务器向客户发送释放连接报文段

  7. 第四次挥手:客户确认,进入等待,服务器收到最后一次ack后,关闭

为什么需要等待2MSL?
1. 最后一个报文没有确认;
2. 确保发送方的ACK可以到达接收方;
3. 2MSL时间内没有收到,则接收方会重发;
4. 确保当前连接的所有报文都已经过期。
  • 网络故障排查
image-20231117140130078

日志管理

  • 常见的日志文件

    /var/log/messages 绝⼤多数的系统⽇志都记录到才⽂件
    /var/log/secure 所有跟安全和认证授权等⽇志都会记录到此⽂件
    /var/log/maillog 邮件服务的⽇志
    /var/log/cron crond计划任务的⽇志
    /var/log/boot.log 系统启动的相关⽇志
    
  • syslog日志审查

    rsyslog.conf
    syslog⽇志类型
    syslog⽇志的属性:
    emerg //内核崩溃
    alert //
    crit //
    err //错误
    warnning //警告
    nice //
    info //
    debug //
    
    ⼿⼯发送⽇志logger
    logger -p authpriv.info -t "test" "Err"
    tail -n1 /var/log/secure
    
  • Journal日志审查

    # systemd ⾃带的⽇志服务⼯具所有⽇志记录到 /run/log ⽂件中, 必须使⽤如下命令才可打开
    # journalctl 查看所有的⽇志
    # journalctl -n 5 查看最后5条⽇志
    # journalctl -p err 查看err类型的⽇志
    # journalctl -f 不断输出最后10条⽇志
    # journalctl --since today 查看今天的⽇志
    # journalctl --since "2014-02-10 20:30:00" --until "2014-02-13 12:00:00"
    # journalctl -o verbose 查看⽇志的详细信息
    # journalctl _SYSTEMD_UNIT=sshd.service _PID=1182
    
  • journal日志持久化

    # 持久化保存 journal 的⽇志,默认只会保存⼀个⽉的⽇志
    mkdir /var/log/journal
    chown root:systemd-journal /var/log/journal
    chmod 2755 /var/log/journal
    killall -USR1 systemd-journald
    

chrony时间服务

timedatectl

# 调整时间,系统命令timedatectl
timedatectl set-timezone Asia/Shanghai

chrony

# 安装
yum install chrony -y
timedatectl set-ntp true
# 配置
 vim /etc/chrony.conf
# 启动服务
systemctl start chronyd && systemctl enable chronyd
# 验证
chronyc sources
image-20231117160112838

ntpdate

yum install ntpdate -y
*/5 * * * * /usr/sbin/ntpdate -u 10.1.106.70 &>/dev/null

ssh远程管理

ssh远程连接不上的原因:端口,网络,防火墙

# 生成秘钥
ssh-keygen 
# 秘钥位置
/root/.ssh
# 拷贝的远程
ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.0.1
# 连接
ssh -p端口 user@10.0.0.1

# 配置文件
//1.更改SSH远程连接端⼝
Port 6666
//2.绑定本地内⽹地址
ListenAddress 192.168.9.12
//3.禁⽌Root管理员登录
PermitRootLogin no
//4.禁⽌密码登录
PasswordAuthentication no
//允许以root密钥⽅式登陆(禁⽌密码默认以root登陆)
//PermitRootLogin without-password
//5.禁⽌使⽤空密码(默认禁⽌)
PermitEmptyPasswords no
//6.关闭DNS解析,优化连接速度
UseDNS no
GSSAPIAuthentication no

NFS

image-20231117161326930
  • autofs自动挂载
当检测到⽤户试图访问⼀个尚未挂载的⽂件系统时,将⾃动挂载该⽂件系统。

文件写入/etc/auto.master.d目录下

autofs⾃动挂载服务, 有两种挂载⽅式:
直接:direct /- ⼦配置⽂件必须写本地绝对路径
间接: indirect /path ⼦配置⽂件写相对于/path的⼦⽬录
posted @ 2023-11-17 16:19  mikrokosmo  阅读(26)  评论(0)    收藏  举报