Linux命令

Linux常用命令介绍

注:自学笔记,如有错误请见谅

目录名称 应放置文件的内容
/boot 开机所需文件—内核、开机菜单以及所需配置文件等
/dev 以文件形式存放任何设备与接口
/etc 配置文件
/home 用户主目录
/bin 存放单用户模式下还可以操作的命令
/lib 开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数
/sbin 开机过程中需要的命令
/media 用于挂载设备文件的目录
/opt 放置第三方的软件
/root 系统管理员的家目录
/srv 一些网络服务的数据文件目录
/tmp 任何人均可使用的“共享”临时目录
/proc 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等
/usr/local 用户自行安装的软件
/usr/sbin Linux系统开机时不会使用到的软件/命令/脚本
/usr/share 帮助与说明文件,也可放置共享文件
/var 主要存放经常变化的文件,如日志
/lost+found 当文件系统发生错误时,将一些丢失的文件片段存放在这里
  1. echo 用于在终端输出字符串或者变量的值,格式为echo 字符串|变量 > 重定向到哪里 >> 重定向追加到哪里如果不用重定向就输出到屏幕

  2. date 显示或者设置时间

    • date [选项] [+指定的格式]

      指定格式参数

      参数 作用
      %t tab键
      %H 小时(00~23)
      %I 小时(00~12)
      %M 分钟(00~59)
      %S 秒(00~59)
      %j 今年中的第几天
      1. date "+%Y-%m-%d %H:%M:%S"

        2023-07-05 16:29:12

      2. date -s "20230701 8:30:00" 将系统时间设置为这个时间

      3. date "+%j" 今天是今年的第几天

  3. reboot 重启系统

    init -6 重启系统

  4. poweroff 关闭系统

    init -0 关闭系统

  5. wget [参数] 下载地址 下载网络文件 二进制安装就可以用到

    参数 作用
    -b 后台下载模式
    -P 下载到指定目录
    -t 最大尝试次数
    -c 断点续传
    -p 下载所有资源(图片,视频,音频)
    -r 递归下载
  6. ps 查看系统装的进程状态(静态查看) ps [参数]

    参数 作用
    -a 显示所有进程,包括其他用户的进程
    -u 以用户格式显示进程信息。
    -x 显示没有控制终端的进程。
    -e 显示所有进程,包括守护进程和内核线程。
    -f 显示完整的进程信息。
    -l 显示更多的进程详细信息。

    【有一次面试被问到ps的每一列】

    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    进程的所有者 进程ID号 运算器占用率 内存占用率 虚拟内存使用量(单位是KB) 占用的固定内存量(单位是KB) 所在终端 进程状态 被启动的时间 实际使用CPU的时间 命令名称与参数
  7. top 动态监视进程活动类似于win的任务管理器

    参数 作用
    -d <秒数> 指定更新的时间间隔
    -n<次数> 指定要显示的更新次数
    -p<进程号> 指定要监视的特定进程
    -u<用户名> 指定要监视的特定用户
    -o<字段> 按照指定的字段进行排序
    PID:进程ID。
    USER:进程所属用户。
    PR:进程优先级。
    NI:进程的Nice值。
    VIRT:进程使用的虚拟内存大小。
    RES:进程使用的物理内存大小。
    SHR:进程使用的共享内存大小。
    S:进程状态(R表示运行,S表示休眠,Z表示僵尸进程)。
    %CPU:进程使用的CPU百分比。
    %MEM:进程使用的内存百分比。
    TIME+:进程运行的累计时间。
    COMMAND:进程的命令名称。
    
  1. pidof 查询某个指定服务进程的PID值pidof [参数] [服务名称]

    [root@host1 ~]# pidof top
    2188

  2. kill终止某个程序进程 kill [参数][进程ID]

    kill -9 进程 强制终止

  3. killall 终止某个指定名称的服务所对应的全部进程 killall [参数] [服务名称]

  4. ifconfig获取网络设备配置与网络状态

    ip addr show ens33查看ens33的网络信息

  5. uname 显示操作系统相关信息

    参数 作用
    -a 显示全部信息,包括内核名称、主机名、内核版本号、硬件架构、操作系统类型等
    -s 显示内核名称
    -n 显示主机名
    -r 显示内核版本号
    -v 显示内核详细版本信息
    -m 显示硬件架构
    -o 显示操作系统类型
  6. uptime用于查看系统的负载信息

    它可以显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息,负载值月底越好

  7. free显示当前系统中内存的使用量

    最长使用的就一个参数-h以人类易读的形式显示

    [root@host1 ~]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           1.4G        313M        651M        9.6M        423M        923M
    Swap:          2.0G          0B        2.0G
    
  8. who用于查看当前登入主机的用户信息

    登陆的用户名 终端设备 登陆到系统的时间
    root tty1 2023-07-05 10:10
    root pts/0 2023-07-05 10:24 (192.168.193.1)
  9. last查看所有系统的登录记录

  10. history 历史执行过的命令

    -c 清空历史

    !332再次执行332行的命令

  1. sosrepore收集系统配置及架构信息并输出诊断文档

    -a, --all:收集所有可用的诊断信息。
    -k, --kernel:仅收集与内核相关的诊断信息。
    -n, --network:仅收集与网络相关的诊断信息。
    -d, --disk:仅收集与磁盘存储相关的诊断信息。
    -o, --output <目录>:指定生成的sosreport文件的输出目录。
    -r, --batch:以批处理模式运行,无需交互。
    
  2. pwd显示当前路径

  3. cd 切换工作路径

  4. ls显示目录信息

    -l:以长格式显示文件和目录的详细信息,包括权限、所有者、文件大小、修改时间等。
    -a:显示所有文件和目录,包括隐藏文件(以点开头的文件)。
    -h:以人类可读的格式显示文件大小。
    -r:以相反的顺序列出文件和目录。
    -t:按照修改时间的顺序列出文件和目录,最新修改的在前面。
    -S:按照文件大小的顺序列出文件和目录,文件大小大的在前面。
    -R:递归地列出子目录中的文件和目录。
    -d:仅显示目录本身,而不是其内容。
    -i:显示文件和目录的inode号。
    -G:以彩色显示文件和目录。
    
  5. cat查看纯文本文件(内容比较少的)

  6. more查看纯文本文件内容比较多的

    空格键:向下滚动一屏。
    Enter键:向下滚动一行。
    q键:退出more命令。
    /<关键词>:搜索包含指定关键词的文本,按下n键跳到下一个匹配项,按下N键跳到上一个匹配项。
    :f:显示当前文件名和行号信息。
    :p:显示上一页。
    :n:显示下一页。
    
  7. head查看前多少行 head [选项][文件]

    -n <行数>:指定要显示的行数。例如,head -n 5 file.txt 将显示文件file.txt的前5行。
    -c <字节数>:指定要显示的字节数。例如,head -c 100 file.txt 将显示文件file.txt的前100个字节。
    -q:禁止显示文件名。默认情况下,如果处理多个文件,head命令会在每个文件的开头显示文件名。
    -v:始终显示文件名。默认情况下,仅在处理多个文件时才会显示文件名。
    
  8. tail查看后几行

    -n <行数>:指定要显示的行数。例如,tail -n 5 file.txt 将显示文件file.txt的最后5行。
    -c <字节数>:指定要显示的字节数。例如,tail -c 100 file.txt 将显示文件file.txt的最后100个字节。
    -f:监视文件的变化,并实时显示新增的内容。常用于查看日志文件。
    -q:禁止显示文件名。默认情况下,如果处理多个文件,tail命令会在每个文件的开头显示文件名。
    -v:始终显示文件名。默认情况下,仅在处理多个文件时才会显示文件名。
    
  9. tr替换文本文件中的字符 tr [选项] <字符集1> <字符集2>

    -d:删除源字符集中的字符。
    -s:将连续重复出现的字符压缩成单个字符。
    -c:对源字符集取补集,表示除了源字符集中的字符外的所有字符。
    
  10. wc统计 wc [参数] 文本

    -l  只显示行数
    -w  只显示单词数
    -c  只显示字节数
    
  11. stat 查看文件的具体存储信息和时间等

    [root@host1 ~]# stat anaconda-ks.cfg 
      文件:"anaconda-ks.cfg"
      大小:1318      	块:8          IO 块:4096   普通文件
    设备:fd00h/64768d	Inode:33574991    硬链接:1
    权限:(0600/-rw-------)  Uid:(    0/    root)   Gid:(    0/    root)
    环境:system_u:object_r:admin_home_t:s0
    最近访问:2023-06-29 15:49:24.183839670 +0800
    最近更改:2023-06-29 15:49:24.183839670 +0800
    最近改动:2023-06-29 15:49:24.183839670 +0800
    创建时间:~
    
  12. cut 按列提取文件字符 cut [参数] 文本

    -c <字符位置>:按字符位置提取字段。例如,cut -c 1-5 file.txt 将提取文件file.txt中每行的第1到第5个字符。
    -f <字段列表>:按字段提取。字段列表以逗号分隔,例如,cut -f 2,4 file.txt 将提取文件file.txt中每行的第2和第4个字段。
    -d <定界符>:指定字段的定界符,默认使用制表符(Tab)作为定界符。例如,cut -d , -f 1 file.csv 将提取逗号分隔的CSV文件中的第1个字段。
    
  13. diff比较两个文件大小(比如两个相同的文件查看是否有一个被修改)

    diff file1.txt file2.txt
    -u 或 --unified:以合并格式显示差异,并提供更多上下文信息。
    -c 或 --context:以上下文格式显示差异,与 -u 类似,但提供更少的上下文信息。
    -r 或 --recursive:递归比较目录及其子目录中的文件。
    -q 或 --brief:仅显示文件是否不同,而不显示具体差异内容。
    -s 或 --report-identical-files:报告文件相同,不显示差异内容。
    -i 或 --ignore-case:忽略大小写进行比较。
    -w 或 --ignore-all-space:忽略所有空格字符的差异。
    
  14. touch创建文件,如果有就会修改读取时间

    -a 修改读取时间
    -m 修改修改时间
    -d 同时修改两个
    
  15. mkdir 创建目录

    -r递归创建

  1. cp复制目录

    cp [选项] 原文件  目标文件
    -p保留原文件属性
    -d 若对象为“链接文件”,则保留该“链接文件”的属性
    -r 递归持续复制
    -i 若目标文件存在则询问是否覆盖
    -a 相当于-pdr(p、d、r为上述参数)
    
  2. scp主机之间的互相传输

    scp file.txt user@remote:/path/to/destination
    
  1. mv移动,修改文件名

  2. rm删除文件

    -r 递归
    -f 强制
    
  3. dd按照指定大小和个数的数据块来复制文件或转换文件

    -if  输入的文件名称
    of  输出的文件名称
    bs  设置每个“块”的大小
    count  设置要复制“块”的个数
    
  4. file查看文件的类型

  5. tar打包或解打包

    tar [选项] [文件]
    -c 创建压缩文件
    -x 解压压缩文件
    -t 查看压缩包有哪些文件
    -z 用gzip压缩或解压
    -j 用bizp2压缩或解压
    -v 显示压缩或解压过程
    -f 目标文件名
    -P 保留原始的权限与属性
    -p 使用结对路径来压缩
    
  6. grep文本中搜索关键字

    -b 将可执行文件(binary)当作文本文件(text)来搜索
    -c 仅显示找到的行数
    -i 忽略大小写
    -n 显示行号
    -v 反向选择——仅列出没有“关键词”的行
    
  7. find按指定条件查找文件位置

    find [查找路径] 寻找条件 操作
    -name 匹配名称
    -perm 匹配所有者
    -group 匹配所有组
    -nouser 匹配无所有者的文件
    -nogroup 匹配无所有组的文件
    -newer f1 !f2 匹配比文件f1新但比f2旧的文件
    -size 匹配文件的大小
    -prune 忽略某个目录
    find /path/to/directory -type f -name "*.txt" -exec ls -l {} \;
    将在 /path/to/directory 目录中查找所有扩展名为 .txt 的文件,并对每个文件执行 ls -l 命令。
    
  8. yum 是安装命令

    要配置yum源,您可以按照以下步骤进行操作:

    1. 打开 /etc/yum.repos.d/ 目录:

      cd /etc/yum.repos.d/
      
    2. 创建一个新的 .repo 文件,例如 myrepo.repo

      sudo vi myrepo.repo
      
    3. .repo 文件中添加yum源配置。以下是一个示例配置:

      [myrepo]
      name=My Yum Repository
      baseurl=http://example.com/yum/
      enabled=1
      gpgcheck=0
      
      • [myrepo]:yum源的名称,可以根据需要自定义。
      • name:yum源的描述,可以根据需要自定义。
      • baseurl:yum源的URL,指定存储软件包的位置。
      • enabled:指定是否启用该yum源。1表示启用,0表示禁用。
      • gpgcheck:指定是否验证软件包的GPG签名。0表示不验证,1表示验证。

      这只是一个示例配置,您可以根据实际情况进行修改。

    4. 保存并关闭文件。

    5. 使用 yum 命令测试yum源是否配置成功:

      yum repolist
      

      此命令将显示已配置的yum源列表。

      如果配置本地的需要挂载本地磁盘到一个目录中然后

      baseurl=http://example.com/yum/ 改为baseurl=file:///path/to/packages目录

      mount /dev/cdrom 要挂载的目录

  9. at一次性计划任务

    at 要执行的时间比如13:17
    at> 要执行的任务
    at> ctrl+d退出编写
    
    at -l查看有多少任务
    atrm 序号将其删除
    
  10. crontab周期性的定时任务

    crontab -e 打开文件创建定时任务
    crontab -l 查看当前的定时任务
    分 时 日期 月份 星期 要执行的任务
    25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot 1,3,5证明是每周的1,3,5都执行
    */2如果写在分里面就是每隔两分钟执行一次
    
  11. whereis查询命令的路径

  12. ping 用于查看网络通不通

    -c 次数
    -s 大小
    -i 间隔秒
    -t 设置ping的生存时间
    -w 等待响应的超时时间
    -v 显示详细的输出信息
    -n 进制将ip地址解析为主机名
    -a 尝试将ip地址解析为主机名
    -4 仅使用IPv4进行ping
    -6 仅使用ipv6进行ping
    
  13. traceroutetracert跟踪网络数据包从本地主机到目标主机的路径

  14. netstat查看网络连接、路由表和网络接口统计信息,可以使用netstat命令来检查当前系统上的网络连接状态

    -a 显示所有的网络连接
    -l 只显示监听的端口
    -t 只显示tcp连接
    -p 显示每个连接或端口关联的进程ID和进程名称
    -i 显示每个网络接口的统计信息
    -r 显示当前系统的路由表信息,包括目标网络,网关和接口
    -s 显示网络协议的统计信息比如TCP、UDP、ICMP等
    
  15. nslookup或者dig用于查询DNS记录,获取主机名对应的IP地址反向解析

    yum install bind-utils -y
    
  16. iptables或者firewalld防火墙规则控制网络流量和访问权限的

    iptables:它是一个基于内核的防火墙工具,提供了强大的包过滤和网络地址转换(NAT)功能。iptables 使用规则集来控制网络流量,并可以根据源 IP、目标 IP、端口号等进行过滤和转发。它是传统的 Linux 防火墙工具,被广泛用于各种 Linux 发行版中。
    
    firewalld:它是一个动态防火墙管理器,使用 D-Bus 接口与内核通信。firewalld 提供了更高级的防火墙管理功能,包括支持网络区域、服务和端口的定义,以及动态更新防火墙规则。它更加易于配置和管理,并适合于那些需要频繁调整防火墙规则的场景。
    

    在firewalld中,可以使用防火墙策略来规定网络流量的访问权限。以下是一些常见的firewalld策略规定方式:

    1. 区域(Zone):firewalld使用区域来组织和管理防火墙规则。每个区域定义了特定的网络环境,并为该区域内的网络流量提供相应的访问权限。例如,公共区域(Public)、内部区域(Internal)或受信任区域(Trust)等。

    2. 服务(Service):firewalld提供了一系列预定义的服务,如SSH、HTTP、FTP等。您可以将服务与特定的区域关联,以控制特定服务的访问权限。通过启用或禁用特定服务,可以灵活地设置防火墙规则。

    3. 端口(Port):您可以通过指定特定的端口号来允许或拒绝对该端口的访问。这对于需要更精细控制的网络服务非常有用。

    4. 源地址(Source Address):您可以指定特定的源IP地址或IP地址范围,以限制来自特定源的流量访问。

    5. 目标地址(Destination Address):类似于源地址,您可以指定特定的目标IP地址或IP地址范围,以限制对特定目标的流量访问。

    6. 自定义规则(Custom Rules):如果预定义的区域、服务、端口或地址无法满足您的需求,您可以编写自定义的防火墙规则。这允许您根据具体情况进行更高级的流量控制。

    要规定firewalld的策略,可以使用 firewall-cmd 命令或图形界面工具来进行配置。以下是一些常用的命令示例:

    • 显示当前的防火墙配置:

      firewall-cmd --list-all
      
    • 添加允许或拒绝访问的服务:

      firewall-cmd --zone=public --add-service=http --permanent
      firewall-cmd --zone=public --remove-service=ftp --permanent
      
    • 添加允许或拒绝访问的端口:

      firewall-cmd --zone=public --add-port=8080/tcp --permanent
      firewall-cmd --zone=public --remove-port=22/tcp --permanent
      
    • 添加允许或拒绝访问的源IP地址:

      firewall-cmd --zone=public --add-source=192.168.1.0/24 --permanent
      firewall-cmd --zone=public --remove-source=10.0.0.0/8 --permanent
      
    • 重新加载防火墙配置:

      firewall-cmd --reload
      

    上述命令中的 --zone 参数指定了要应用策略的区域(例如:public)。--permanent 参数用于在配置文件中永久保存更改。通过运行以上命令,您可以根据需要灵活地定义和调整firewalld的防火墙策略。

  17. ssh加密的远程登录

  18. telnet非加密的远程登录

  19. curl测试网咯服务的可用性

    -X <method>指定HTTP请求方法,如 GET、POST、PUT 等。
    -H <header>:添加自定义请求头,可以多次使用该选项来添加多个请求头。
    -d <data>:将数据作为请求的主体发送,常用于POST请求。
    -F <name>=<value>:以multipart/form-data格式发送表单数据,常用于文件上传。
    -G:将数据附加到URL的查询字符串中,用于GET请求。
    -i:显示服务器响应的头信息。
    -o <file>:将服务器响应保存到指定的文件中。
    -s:静默模式,不显示进度和错误信息。
    -u <user:password>:指定用于身份验证的用户名和密码。
    -L:跟随重定向,自动处理HTTP重定向。
    -c <cookie-file>:使用指定的cookie文件进行cookie管理。
    -b <cookie-string>:发送指定的cookie字符串到服务器。
    -A <user-agent>:设置用户代理标头。
    -k:忽略SSL证书验证。
    
  20. ss显示网络连接和统计信息的工具

    -t:只显示TCP连接。
    -u:只显示UDP连接。
    -x:只显示UNIX域套接字连接。
    -a:显示所有连接,包括监听和非监听状态。
    -l:只显示监听状态的连接。
    -n:以数字形式显示IP地址和端口号,而不进行主机名和服务名的解析。
    -p:显示进程ID和进程名称,与连接相关联。
    -r:显示路由表信息。
    -s:显示网络接口的统计信息。
    -o:显示计时器信息,如超时和重传计时器。
    -i <interface>:指定要显示统计信息的网络接口。
    -4:只显示IPv4连接。
    -6:只显示IPv6连接。
    -h:显示帮助信息。
    
  21. useradd创建新用户

    useradd [选项] 用户名
    -d 指定用户的家目录(默认为/home/username)
    -e 用户的到期时间格式为YYYY-MM-DD
    -u 指定用户的默认UID
    -g 指定一个初始的用户基本组
    -G 指定一个或多个扩展用户组
    -N 不创建与用户同名的基本用户组
    -s 指定该用户的默认shell解释器
    
  22. groupadd创建用户组

  23. usermod修改用户的属性

    usermod [选项] 用户名
    -c 填写用户账户的备注信息
    -d -m 参数-m与-d连用,可以重新指定用户的家目录并自动吧旧的数据转移过去
    -e 账户
    -g 变更所属用户组
    -G 变更拓展用户组
    -L 锁定用户进制其登录系统
    -U 解锁用户允许登录系统
    -s 变更默认终端
    -u 修改用户的UID
    
  24. passwd命令

    passwd用于修改用户密码、过期时间、认证信息等

    passwd [选项][用户名]
     -l 锁定用户,进制登录
     -u 接触锁定
     --stdin 允许通过标准输入修改密码如echo "NewPassWord" | passwd —stdin Username
     -d 使该用户可用空密码登录系统
     -e 强制用户在下次登录的时候修改密码
     -S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称
    
  25. userdel删除用户

    -f 强制删除用户
    -r 同时删除用户及家目录
    
  26. 文件类型

    -:普通文件
    d:目录文件
    l:链接文件
    b:块设备文件
    c:字符设备文件
    p:管道文件
    
  27. 权限项:

    权限值

  28. chmod设置权限

    chmod 777 test.txt
    chmod u=rwx,g=rwx,o=rwx  test.txt
    chmod +x  test.txt
    
    -R:递归地更改目录及其子目录中的文件权限。
    -v:显示每个更改的文件名。
    -c:仅显示更改的文件名。
    chmod 4777 test.txt SUID权限
    chmod u+s example.sh
    
    
    chmod 2777 test.txt SGID权限
    chmod g+s example.sh
    
    chmod 1777 /tmp sticky bit(粘着位权限)
    chmod +t /tmp
    

    SUID(Set User ID)是一种特殊的权限位,用于在执行可执行文件时,将其执行者的ID设置为文件所有者的用户ID

    SGID(Set Group ID)是一种特殊的权限位,用于在执行可执行文件时,将其执行者的有效组ID设置为文件所有者的组ID

    设置了 Sticky Bit 权限时,只有目录的所有者、文件的所有者和超级用户能够删除或重命名该目录中的文件

  29. chown 修改文件目录的所有者

    chown user1 test.txt 将指定文件的所有者更改为给定的用户
    chown user1:group1 test.txt 将指定文件的所有者更改为给定的用户,并将所属组更改为给定的组
    chown -R user1 mydir 递归地更改指定目录及其子目录中文件的所有者要将目录 ​mydir​ 及其所有子目录和文件的所有者更改为 ​user1​
    chown -h user1 mysymlink 对符号链接进行更改。默认情况下,​chown​ 命令会更改符号链接指向的文件的所有者,而不是符号链接本身的所有者。使用 ​-h​ 选项,可以更改符号链接本身的所有者
    
  30. chattr设置文件的隐藏属性 chattr [参数] 文件

    参数 作用
    i 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
    a 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
    S 文件内容在变更后立即同步到硬盘(sync)
    s 彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)
    A 不再修改这个文件或目录的最后访问时间(atime)
    b 不再修改文件或目录的存取时间
    D 检查压缩文件中的错误
    d 使用dump命令备份时忽略本文件/目录
    c 默认将文件或目录进行压缩
    u 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
    t 让文件系统支持尾部合并(tail-merging)
    x 可以直接访问压缩文件中的内容
  31. lsattr显示文件的隐藏权限lsattr [参数] 文件

  32. setfacl设置ACL规则

    ACL(Access Control List)是一种权限控制机制,用于在文件系统中对文件和目录进行更细粒度的权限管理。传统的文件权限模型使用用户/组/其他三个权限类别来控制对文件的访问权限,而 ACL 权限模型允许管理员为一个文件或目录指定多个用户或组,并为每个用户或组分配特定的权限。

    setfacl -m u:user1:rw- example.txt   为指定用户设置特定的权限
    setfacl -m g:group1:r-- example.txt   为指定组设置特定的权限
    setfacl -d -m u:user1:rw- mydir       为新创建的文件或目录设置默认的用户级 ACL 权限
    setfacl -d -m g:group1:r-- mydir     为新创建的文件或目录设置默认的组级 ACL 权限
    
    
    -m:设定 ACL 权限。如果是给予用户 ACL 权限,则使用"u:用户名:权限"格式赋予;如果是给予组 ACL 权限,则使用"g:组名:权限" 格式赋予;
    -x:删除指定的 ACL 权限;
    -b:删除所有的 ACL 权限;
    -d:设定默认 ACL 权限。只对目录生效,指目录中新建立的文件拥有此默认权限;
    -k:删除默认 ACL 权限;
    -R:递归设定 ACL 权限。指设定的 ACL 权限会对目录下的所有子文件生效;
    
  33. getfacl显示文件上设置的ACL命令

  34. su 切换用户

    su - root
    
  35. sudo用来指定特定命令的执行权限赋予给这个用户

    -h	列出帮助信息
    -l	列出当前用户可执行的命令
    -u 用户名或UID值	以指定的用户身份执行命令
    -k	清空密码的有效时间,下次执行sudo时需要再次进行密码验证
    -b	在后台执行指定的命令
    -p	更改询问密码的提示语
    
硬件设备 文件名称
IDE设备 /dev/hd[a-d]
SCSI/SATA/U盘 /dev/sd[a-p]
软驱 /dev/fd[0-1]
打印机 /dev/lp[0-15]
光驱 /dev/cdrom
鼠标 /dev/mouse
磁带机 /dev/st0或/dev/ht0
  1. lsblk 列出系统上的块设备(如磁盘和分区)以及相关信息(在永久挂载的时候可以使用这个查看uuid)

    -a:显示完整输出,包括设备拥有者、权限和设备属性。
    -d:仅显示块设备(磁盘),而不显示分区。
    -f:在输出中显示文件系统信息。
    -l:以列表形式显示设备,而不是树状结构。
    -o <列名>:自定义输出的列。可以指定多个列名,使用逗号分隔。
    -p:使用全路径名显示设备的名称。
    -r:以简化的格式输出,省略了某些列信息。
    -s:以大小格式(如 K、M、G)显示设备大小。
    -t:仅显示指定类型的设备。例如,使用 -t disk 仅显示磁盘设备。
    
  2. mount挂载(这是临时挂载)

    -a 挂载所有在/etc/fstab中定义的文件系统
    -t 指定文件系统的类型
    mount /dev/sdb2 /backup
    
    vim /etc/fstab
    /dev/mapper/rhel-root / xfs defaults 1 1
    UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults 1 2   这是永久挂载
    /dev/mapper/rhel-swap swap swap defaults 0 0
    /dev/cdrom /media/cdrom iso9660 defaults 0 0 
    /dev/sdb2 /backup ext4 defaults 0 0
    
  3. umount卸载

    umount /dev/sdb2
    
  4. fdisk管理磁盘分区(为交互式)

    1~4叫做主分区
    超过4的叫做拓展分区
    
    参数 作用
    m 查看全部可用的参数
    n 添加新的分区
    d 删除某个分区信息
    l 列出所有可用的分区类型
    t 改变某个分区的类型
    p 查看分区表信息
    w 保存并退出
    q 不保存直接退出
    fdisk /dev/sdb
    
  5. mkfs格式化

    [root@host1 ~]# mkfs  #这是可格式化的类型
    mkfs mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs
    mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
    
    mkfs.xfs /dev/sdb1
    
  6. df显示文件系统的磁盘空间使用情况,也可以查看到挂载设备的挂载点

    -h 或 --human-readable:以易读的方式显示磁盘空间大小,使用合适的单位(例如,GB,MB,KB)。
    -T 或 --print-type:显示文件系统的类型。
    -a 或 --all:显示所有文件系统的磁盘空间使用情况,包括保留给特殊文件系统的伪文件系统(如 /proc)。
    -i 或 --inodes:显示文件系统的 inode 使用情况。
    -l 或 --local:仅显示本地文件系统,不包括网络挂载的文件系统。
    -x <文件系统类型> 或 --exclude-type=<文件系统类型>:排除指定类型的文件系统,不显示其磁盘空间使用情况。
    --sync:在获取磁盘空间使用情况之前,强制同步文件系统。
    
  7. du估算文件或目录的磁盘空间使用情况

    -h 或 --human-readable:以易读的方式显示磁盘空间大小,使用合适的单位(例如,GB,MB,KB)。
    -s 或 --summarize:只显示总的磁盘使用情况,而不显示每个子目录的详细信息。
    -c 或 --total:在最后一行显示所有目录的总磁盘使用情况。
    -a 或 --all:包括所有文件和目录,而不仅限于目录。
    -x 或 --one-file-system:仅计算指定文件或目录所在的文件系统上的磁盘使用情况,而不跨越不同的文件系统。
    -L 或 --dereference:处理符号链接指向的文件或目录本身,而不会计算链接指向的目标。
    --exclude=<模式>:排除符合指定模式的文件或目录。
    
  8. swap分区介绍

    swap分区是用于linux操作系统中的一种特殊类型的分区,Swap分区主要用于虚拟内存管理,当系统物理内存不足的时候可以使用swap分区来拓展空间

    作用就是虚拟内存,当系统物理内存不足时,操作系统会将一部分暂时不活跃的内存页(即被写入磁盘但没有被访问的内存内容)交换到Swap分区中,从而释放出物理内存供其他进程使用。

    性能影响:尽管Swap分区可以提供额外的内存空间,但由于磁盘I/O相对于内存访问速度较慢,使用Swap分区可能会对系统性能产生负面影响。频繁的内存交换操作可能导致系统响应变慢。

    创建Swap分区:Swap分区可以在系统安装时创建,也可以事后通过分区工具(如fdisk或gparted)创建。一般建议将Swap分区的大小设置为物理内存大小的1-2倍,具体取决于系统的需求。

    启用和禁用Swap分区:可以使用swapon命令将Swap分区启用,使用swapoff命令将其禁用。可以在系统启动时自动启用Swap分区,通过配置/etc/fstab文件中的相应条目实现。

    • 创建swap分区

      运行以下命令以查看当前磁盘和分区信息:

      fdisk -l  这将列出所有可用的磁盘和分区。
      

      选择一个未被使用的磁盘,例如 /dev/sdb。请根据你的实际情况选择正确的磁盘。

      运行以下命令来开始创建新的分区:

      fdisk /dev/sdb
      在 fdisk 命令提示符下,按下 n 键创建一个新分区。
      接下来,选择分区类型。对于Swap分区,一般使用编号 82,这是Linux Swap分区的标识码。
      然后,选择分区的起始扇区和结束扇区。如果你想使用整个剩余空间创建Swap分区,可以按回车键接受默认值。
      完成上述步骤后,按下 t 键来更改分区类型。
      输入分区编号并选择分区类型 82(Linux Swap),然后按下回车键。
      最后,按下 w 键保存并退出 fdisk。
      在分区创建完成后,运行以下命令以格式化Swap分区:
      mkswap /dev/sdb1
      请将 /dev/sdb1 替换为你创建的Swap分区设备号。
      激活 Swap 分区使用以下命令:
      swapon /dev/sdb1
      

      同样,请根据你的实际情况替换 /dev/sdb1。
      现在,你已经成功创建并启用了Swap分区。可以使用 swapon -s 命令验证Swap分区是否正常工作,并使用 free -h 命令查看系统内存和Swap的使用情况。记得在系统重启后,需要再次激活Swap分区,可以通过编辑 /etc/fstab 文件将其设置为自动激活。

      swapon -s 查看当前系统上正在使用的交换空间有哪些
      
  9. xfs_quota用于管理XFS文件系统配额的命令行工具

    xfs_quota是一个用于管理XFS文件系统配额的命令行工具。它允许管理员为用户或组设置磁盘配额,并监视和控制文件系统上的磁盘使用。
    以下是一些常见的xfs_quota命令及其功能:
    初始化XFS配额:使用以下命令初始化XFS文件系统以启用配额管理:
    xfs_quota -x -c 'project -s /mnt' /dev/sdX
    其中,/mnt 是被监视的挂载点,/dev/sdX 是对应的设备。
    显示当前配额设置:可以使用以下命令查看当前的配额设置:
    xfs_quota -x -c 'report -h' /mnt
    这将显示分区中每个项目(用户、组、项目等)的配额使用情况。
    设置用户配额:使用以下命令为特定用户设置磁盘配额限制:
    xfs_quota -x -c 'limit bhard=100m soft=80m user username' /mnt
    其中,username 是要设置配额的用户名。bhard 表示硬限制(即不允许超出的最大限制),soft 表示软限制(即警告阈值)。
    设置组配额:类似地,可以使用以下命令为特定组设置磁盘配额限制:
    xfs_quota -x -c 'limit bhard=500m soft=400m group groupname' /mnt
    挂起/恢复配额:可以使用以下命令挂起或恢复配额限制:
    xfs_quota -x -c 'pause' /mnt
    xfs_quota -x -c 'resume' /mnt
    当配额被挂起时,文件系统上的配额限制将暂时失效。
    
  1. edquota用于编辑用户的quota配额限制 edquota [参数] [用户]

    edquota命令用于编辑用户或组的磁盘配额。它允许系统管理员为每个用户或组设置磁盘配额限制,以控制他们可以使用的磁盘空间。

    使用edquota命令时,您可以指定用户或组的名称,并编辑其磁盘配额限制。您可以设置硬限制和软限制,硬限制表示用户或组的磁盘配额上限,而软限制表示用户或组接近磁盘配额上限时会收到警告。

    以下是edquota命令的一些常用选项:

    • -u:编辑用户的磁盘配额。
    • -g:编辑组的磁盘配额。
    • -t:设置默认的磁盘配额限制。
    • -p:复制一个用户或组的磁盘配额设置到另一个用户或组。

    使用edquota命令需要root权限或具有适当权限的用户才能执行。

  2. 软硬链接(相当于win上面的快捷方式)

    硬链接

    硬链接是指多个文件名指向同一个inode(索引节点),它们共享相同的数据和元数据。当创建一个硬链接时,实际上是将一个新的文件名与现有的文件关联起来,而不是创建一个新的文件副本。

    以下是硬链接的一些特点:

    1. 硬链接可以跨越文件系统,即可以在不同的文件系统中创建硬链接。
    2. 硬链接与原始文件没有任何区别,它们只是不同的文件名指向同一个文件。
    3. 删除任何一个硬链接并不会影响其他链接或原始文件,只有当所有链接和原始文件都被删除时,文件才会真正被删除。
    4. 硬链接可以在文件系统中的任何位置创建,包括同一目录下或不同目录下。

    需要注意的是,硬链接不能指向目录,只能指向文件。这是因为目录中的硬链接会导致循环引用和其他问题,因此在Linux中不允许创建目录的硬链接。

    要创建硬链接,可以使用ln命令,并提供源文件名和目标链接名作为参数。例如,要在当前目录下创建一个名为linkfile的硬链接,指向文件originalfile,可以使用以下命令:

    ln originalfile linkfile
    

    通过ls -l命令可以查看文件的硬链接数量。每个文件至少有一个链接,即原始文件本身。硬链接的数量可以通过链接计数列(第2列)来查看。

    软连接

    在Linux中,软连接(Symbolic link)也被称为符号链接或symlink,它是一个特殊类型的文件,它创建了一个指向另一个文件或目录的快捷方式。

    软连接与硬链接不同,它是一个指向文件或目录路径的引用,而不是共享相同的inode。当创建软连接时,实际上是创建了一个新的文件,该文件包含了指向目标文件或目录的路径信息。

    软连接的一些特点如下:

    1. 软连接可以跨越文件系统,即可以在不同的文件系统中创建软连接。
    2. 删除原始文件或目录不会影响软连接本身,但如果删除了软连接,指向的目标文件或目录仍然存在。
    3. 软连接可以指向文件或目录,因此可以创建指向其他目录的快捷方式。
    4. 软连接可以创建循环引用,即一个软连接指向另一个软连接,从而形成循环。

    要创建软连接,可以使用ln命令,并提供源文件名或目录名以及目标软连接名作为参数。例如,要在当前目录下创建一个名为linkfile的软连接,指向文件originalfile,可以使用以下命令:

    ln -s originalfile linkfile
    

    通过ls -l命令可以查看文件的软连接。软连接可以通过链接类型列(第1个字符为l)来识别。

    需要注意的是,当使用软连接访问目标文件或目录时,实际上是通过解析软连接的路径来找到目标对象,因此在某些操作中可能会有一些性能开销。此外,如果目标文件或目录被移动或重命名,软连接将失效,因为它只是一个路径引用。

  3. ln创建软硬链接

    ln命令用于创建链接(硬链接或软链接)。下面是ln命令的一些常用参数:

    ln originalfile linkfile创建硬链接

    1. -s:创建软链接。使用该参数可以创建一个指向源文件或目录的符号链接。
      例如:ln -s source_file link_name

    2. -f:强制创建链接。如果目标链接已经存在,使用该参数会覆盖它。
      例如:ln -sf source_file link_name

    3. -i:交互式创建链接。如果目标链接已经存在,使用该参数会提示用户是否覆盖它。
      例如:ln -i source_file link_name

    4. -v:显示详细信息。使用该参数会显示每个链接的创建过程。
      例如:ln -sv source_file link_name

    5. -r:递归创建链接。如果源文件或目录是一个目录,则会递归地创建链接。
      例如:ln -sr source_directory link_directory

    6. -t:指定目标目录。使用该参数可以将链接创建到指定的目录中。
      例如:ln -s source_file -t target_directory

    7. --backup[=CONTROL]:在创建链接前进行备份。使用该参数可以在创建链接时进行备份操作,并指定备份的控制方式。
      例如:ln --backup=numbered source_file link_name

    这些是ln命令的一些常用参数,您可以根据需要选择适合的参数来创建链接。

  4. RAID阵列介绍

    RAID阵列是一种将多个独立硬盘自核在一起以提供数据冗余或性能增强的计数

    常见的模式:

    RAID 0 :至少两块 使用率百分之百 提供了比较高的读写性能,但是坏一块数据就会丢失

    RAID 1:至少两块 使用率百分之五十 读效率不变 提高了冗余性,坏一块没事但是成本高

    RAID5: 至少三块 使用率 = (总磁盘数量 - 1) / 总磁盘数量 提供了一定的数据冗余和读取性能提升对写提升低

    RAID6:至少四块 类似于RAID5 四块坏两块没事提高了冗余性 写入性能较低。

    RAID10: 至少四块 RAID 10将RAID 1和RAID 0结合起来 使用率 = (总磁盘数量 / 2)/ 总磁盘数量,提供了冗余性和提高了读写效率,但是成本高

  5. LVM逻辑卷介绍

    硬盘设备管理技术虽然能够有效地提高硬盘设备的读写速度以及数据的安全性,但是在硬盘分好区或者部署为RAID磁盘阵列之后,再想修改硬盘分区大小就不容易了,所以可以用LVM逻辑卷来灵活控制

    功能/命令 物理卷管理 卷组管理 逻辑卷管理
    扫描 pvscan vgscan lvscan
    建立 pvcreate vgcreate lvcreate
    显示 pvdisplay vgdisplay lvdisplay
    删除 pvremove vgremove lvremove
    扩展 vgextend lvextend
    缩小 vgreduce lvreduce
    [root@host1 ~]# pvcreate /dev/sdb /dev/sdc   #创建pv
     Physical volume "/dev/sdb" successfully created
     Physical volume "/dev/sdc" successfully created
     
     
    [root@host1 ~]# vgcreate storage /dev/sdb /dev/sdc   #创建vg组起名字
     Volume group "storage" successfully created
    [root@linuxprobe ~]# vgdisplay   #查看
    --- Volume group ---
     VG Name storage
     
    #创建一个约为150MB的逻辑卷
    [root@host1 ~]# lvcreate -n vo -L 150M storage  #LV的名字是no,指定的卷组名字是storage
     Logical volume "vo" created
    [root@host1 ~]# lvdisplay 
     --- Logical volume ---
     LV Path /dev/storage/vo
     LV Name vo
     VG Name storage
     LV UUID D09HYI-BHBl-iXGr-X2n4-HEzo-FAQH-HRcM2I
     LV Write Access read/write
     LV Creation host, time localhost.localdomain, 2017-02-01 01:22:54 -0500
     LV Status available
     # open 0
     LV Size 148.00 MiB
     
     
    #格式化,然后挂载使用
    [root@host ~]# mkfs.ext4 /dev/storage/vo
    [root@host ~]# mkdir /test
    [root@host ~]# mount /dev/storage/vo /test
    #检查
    [root@linuxprobe ~]# df -h
     Filesystem Size Used Avail Use% Mounted on
     /dev/mapper/rhel-root 18G 3.0G 15G 17% /
     devtmpfs 905M 0 905M 0% /dev
     tmpfs 914M 140K 914M 1% /dev/shm
     tmpfs 914M 8.8M 905M 1% /run
     tmpfs 914M 0 914M 0% /sys/fs/cgroup
     /dev/sr0 3.5G 3.5G 0 100% /media/cdrom
     /dev/sda1 497M 119M 379M 24% /boot
     /dev/mapper/storage-vo 145M 7.6M 138M 6% /test
    

    上面只是创建了想要,逻辑卷的所用就是空间不够进行扩容

    [root@host ~]# umount /test   #卸载
    [root@host ~]# lvextend -L 290M /dev/storage/vo    #扩容
     Rounding size to boundary between physical extents: 292.00 MiB
     Extending logical volume vo to 292.00 MiB
     Logical volume vo successfully resized
     
     [root@host ~]# e2fsck -f /dev/storage/vo #检查硬盘完整性
     [root@host ~]# resize2fs /dev/storage/vo #重置硬盘容量
     [root@host ~]# mount -a  #挂载
    [root@host ~]# df -h #查看
    

    缩小逻辑卷(数据丢失风险大)如果要执行需要备份好数据

    [root@host ~]# umount /test   #卸载
    [root@host ~]# e2fsck -f /dev/storage/vo  #检查完整性
    [root@host ~]# resize2fs /dev/storage/vo 120M  #缩小为120MB
    [root@host ~]# lvdisplay
    --- Logical volume ---
     LV Path /dev/storage/SNAP
    [root@host ~]# mount -a  #挂载
    [root@host ~]# df -h  #查看
    

    逻辑卷快照类似于虚拟机的快照,还原时间点功能的

    快照卷的容量必须等同于逻辑卷的容量;

    快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除。

    #查看卷组信息
    [root@host ~]# vgdisplay
    #写入数据
    [root@host ~]# echo "11111111111111111" > /test/readme.txt
    #查看
    [root@host ~]# ll /test
    #使用-s参数生成一个快照卷,使用-L参数指定切割的大小,命令后面写上是针对哪个逻辑卷执行的快照操作
    [root@host ~]#  lvcreate -L 120M -s -n SNAP /dev/storage/vo
    #在逻辑卷所挂载的目录中创建一个100MB的垃圾文件,然后再查看快照卷的状态可以发现存储空间占的用量上升了
    [root@host ~]# dd if=/dev/zero of=/linuxprobe/files count=1 bs=100M
    #对逻辑卷进行快照还原操作
    [root@host ~]# umount /linuxprobe
    [root@host ~]# lvconvert --merge /dev/storage/SNAP
    #挂载
    [root@test ~]# mount -a
    [root@test ~]# ls /test/
    lost+found readme.txt
    

    删除逻辑卷

    #取消挂载
    [root@host ~]# umount /test
    [root@host ~]# vim /etc/fstab
    #删除逻辑卷
    [root@host ~]# lvremove /dev/storage/vo
    #删除卷组
    [root@host ~]# vgremove storage
    #删除pv卷
    [root@host ~]# pvremove /dev/sdb /dev/sdc
    
  6. 防火墙介绍

    防火墙是计算机网络中的一种安全设备或软件,用于保护网络和主机免受未经授权的访问、恶意攻击和网络威胁。防火墙通过监视、过滤和控制网络流量来实现其作用。

    以下是防火墙的主要作用:

    1. 访问控制:防火墙可以根据预先定义的规则和策略来控制网络流量的进出,阻止未经授权的访问。它可以限制特定IP地址、端口或协议的访问,从而增加网络的安全性。

    2. 网络流量过滤:防火墙可以对网络流量进行过滤和检查,根据指定的规则和策略允许或阻止特定类型的流量。它可以检测和阻止恶意软件、网络攻击、入侵尝试等不良流量。

    3. NAT(网络地址转换):防火墙可以执行网络地址转换,将内部私有IP地址转换为公共IP地址,以增加网络的安全性和隐私性。

    4. VPN(虚拟专用网络)支持:防火墙可以提供VPN功能,通过加密和隧道技术,为远程用户提供安全的远程访问和连接。

    5. 日志记录和监控:防火墙可以记录网络活动日志,包括被阻止的连接尝试、攻击事件等,以便进行安全审计、故障排除和安全事件响应。

    防火墙在网络中起到了关键的保护作用,通过控制和过滤网络流量,防止未经授权的访问和恶意攻击,提高了网络的安全性和可靠性。

    • iptables与firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已,他们就是一种服务

    iptables

    参数 作用
    -P 设置默认策略
    -F 清空规则链
    -L 查看规则链
    -A 在规则链的末尾加入新规则
    -I num 在规则链的头部加入新规则
    -D num 删除某一条规则
    -s 匹配来源地址IP/MASK,加叹号“!”表示除这个IP外
    -d 匹配目标地址
    -i 网卡名称 匹配从这块网卡流入的数据
    -o 网卡名称 匹配从这块网卡流出的数据
    -p 匹配协议,如TCP、UDP、ICMP
    —dport num 匹配目标端口号
    —sport num 匹配来源端口号

    firewalld

    区域 默认规则策略
    trusted 允许所有的数据包
    home 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量
    internal 等同于home区域
    work 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量
    public 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量
    external 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
    dmz 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
    block 拒绝流入的流量,除非与流出的流量相关
    drop 拒绝流入的流量,除非与流出的流量相关

    firewall防火墙策略都以firewall-cmd开头

    参数 作用
    --get-default-zone 查询默认的区域名称
    --set-default-zone=<区域名称> 设置默认的区域,使其永久生效
    --get-zones 显示可用的区域
    --get-services 显示预先定义的服务
    --get-active-zones 显示当前正在使用的区域与网卡名称
    --add-source= 将源自此IP或子网的流量导向指定的区域
    --remove-source= 不再将源自此IP或子网的流量导向某个指定区域
    --add-interface=<网卡名称> 将源自该网卡的所有流量都导向某个指定区域
    --change-interface=<网卡名称> 将某个网卡与区域进行关联
    --list-all 显示当前区域的网卡配置参数、资源、端口以及服务等信息
    --list-all-zones 显示所有区域的网卡配置参数、资源、端口以及服务等信息
    --add-service=<服务名> 设置默认区域允许该服务的流量
    --add-port=<端口号/协议> 设置默认区域允许该端口的流量
    --remove-service=<服务名> 设置默认区域不再允许该服务的流量
    --remove-port=<端口号/协议> 设置默认区域不再允许该端口的流量
    --reload 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
    --panic-on 开启应急状况模式
    --panic-off 关闭应急状况模式
    --permanent 指示对永久配置进行操作,需要使用--reload才能生效

    区域:

    Public(公共):用于公共网络,例如互联网连接。此区域适用于不受信任的网络,通常设置了较严格的规则,以保护主机的安全。
    Internal(内部):内部网络区域,用于受信任的内部网络。此区域可能允许更多的通信,因为内部网络中的主机相互之间更加可信。
    External(外部):用于与已知的外部网络进行通信的区域。该区域可以设定适当的规则,以便与特定的外部网络进行交互
    DMZ(非受限区域):用于放置公共可访问的服务器,如 Web 服务器或邮件服务器。该区域位于内部网络和外部网络之间,允许受限的访问。
    Work(办公场所):用于工作场所或办公室内部网络。通常设置允许必要服务和通信的规则。
    Home(家庭):用于家庭网络环境。类似于 Work 区域,允许必要的服务和通信。
    

    自己划分区域

    firewall-cmd --get-zones #查看当前区域列表确定是否已经有了符合需求的区域:
    firewall-cmd --new-zone=myzone --permanent #创建新区域
    
    #添加区域规则
    firewall-cmd --zone=myzone --add-service=http --permanent
    firewall-cmd --zone=myzone --add-port=8080/tcp --permanent
    firewall-cmd --zone=myzone --add-source=192.168.0.0/24 --permanent
    
    firewall-cmd --reload #重新加载才能生效
    
  7. rount用于管理和查看系统的路由表(查看网关)

    -n:以数字格式显示路由表,而不解析主机名。 #网关信息
    -e:使用扩展格式显示路由表,包括其他附加信息(如 ICMP 相应时间等)。
    -v:显示详细信息,包括网络接口和目标的详细描述。
    -A <地址类型>:指定要操作的地址类型,例如 inet(IPv4)或 inet6(IPv6)。
    add <目标> <命令>:添加一条路由规则。
    del <目标>:删除一条路由规则。
    gw <网关>:指定要添加或删除的网关地址。
    
  8. nmtui图名界面的网络配置工具

  9. nmcli命令行的网络配置命令 文件在/etc/sysconfig/network-scripts/网卡名

    连接管理:
    
    nmcli connection show:显示所有网络连接配置。
    nmcli connection add:添加新的网络连接配置。
    nmcli connection modify:修改现有的网络连接配置。
    nmcli connection delete:删除指定的网络连接配置。
    nmcli connection up:启用指定的网络连接。
    nmcli connection down:禁用指定的网络连接。
    网络设备管理:
    
    nmcli device show:显示所有网络设备信息。
    nmcli device status:显示网络设备的状态。
    nmcli device disconnect:断开指定的网络设备的连接。
    nmcli device connect:连接指定的网络设备。
    Wi-Fi 相关操作:
    
    nmcli device wifi list:列出可用的 Wi-Fi 网络。
    nmcli device wifi connect:连接到指定的 Wi-Fi 网络。
    nmcli device wifi rescan:重新扫描可用的 Wi-Fi 网络。
    DNS 相关操作:
    
    nmcli connection modify:修改网络连接的 DNS 设置。
    nmcli device show <接口名称>:显示指定接口的 DNS 配置。
    nmcli device set <接口名称>:设置指定接口的 DNS 服务器。
    其他常见参数:
    
    -a 或 --ask:在执行命令时提示输入密码或其他敏感信息。
    -f 或 --fields:指定要显示的字段。
    -t 或 --type:指定网络连接的类型,如 Ethernet、Wi-Fi、VPN 等。
    
    比如配置一个静态ip
    ip addr show ens33  #查看ip将动态获取到的配置为静态的,以防ip不可使用
    rount -n  #查看网关获取网关
    nmcli device show ens33 | grep IP4.DNS #查看dns
    nmcli connection  modify ens33 ipv4.method manual ipv4.addresses 192.168.123.123/24 ipv4.gateway 192.168.123.1 ipv4.dns 8.8.8.8 connection.autoconnect yes #设置为手动并开机自启
    
  10. ssh用来远程连接的服务 启用端口是22端口 ssh [参数] 主机IP地址

    ssh 192.168.123.122
    

    这样需要输入密码,如果不想输入密码就需要用到密钥验证

    [root@host1 ~]# ssh-keygen   #生成密钥
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):按回车键或设置密钥的存储路径
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase):直接按回车键或设置密钥的密码
    Enter same passphrase again:再次按回车键或设置密钥的密码
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    40:32:48:18:e4:ac:c0:c3:c1:ba:7c:6c:3a:a8:b5:22 root@linuxprobe.com
    The key's randomart image is:
    +--[ RSA 2048]----+
    |+*..o .          |
    |*.o  +           |
    |o*    .          |
    |+ .    .         |
    |o..     S        |
    |.. +             |
    |. =              |
    |E+ .             |
    |+.o              |
    +-----------------+
    
    
    [root@host1 ~]# ssh-copy-id 192.168.123.122  #发送到远程主机
    ssh 192.168.123.122 #在输入一次密码就不用在输入了
    或者
    [root@host1 ~]# vim /etc/ssh/sshd_config  #直接修改为不需要输入密码
     ………………省略部分输出信息………………
     74 
     75 # To disable tunneled clear text passwords, change to no here!
     76 #PasswordAuthentication yes
     77 #PermitEmptyPasswords no
     78 PasswordAuthentication no
     79 
     ………………省略部分输出信息………………
    [root@host1 ~]# systemctl restart sshd
    
  11. systemctl是一个控制 Systemd 系统管理守护进程的命令行工具

    systemctl start <unit>:启动指定的服务或单元。
    systemctl stop <unit>:停止指定的服务或单元。
    systemctl restart <unit>:重启指定的服务或单元。
    systemctl reload <unit>:重新加载指定的服务或单元。
    systemctl status <unit>:查看指定服务或单元的状态。
    systemctl enable <unit>:永远启动
    systemctl disable <unit>:禁止启动
    
  12. screen是一个在linux和unix系统中运行的终端多复用器工具

    多个终端会话:screen 允许您在一个终端窗口中创建多个独立的终端会话。您可以使用 screen 命令启动一个新的 screen 会话,并在其中运行命令或程序。每个会话都相互独立,就像在不同的终端窗口中运行一样。
    持久化会话:即使关闭了终端窗口,screen 会话仍然在后台继续运行。这意味着您可以重新连接到之前创建的会话,并继续之前的工作,无需重新启动命令或程序。
    会话管理:screen 提供了一组命令,用于管理 screen 会话。您可以通过这些命令创建、关闭、切换和重命名会话,还可以查看当前运行的会话列表。
    分离/重新附加会话:通过 screen,您可以将当前活动的会话分离(detach)并回到原始终端提示符,以便在后台保持会话运行。然后,您可以重新附加(reattach)回分离的会话并恢复到先前的状态。
    
    使用 screen 的基本命令如下:
    
    screen:启动一个新的 screen 会话。
    Ctrl + A, D:将当前 screen 会话分离。
    screen -r:重新附加到最近的分离会话。
    screen -ls:列出当前活动的 screen 会话列表。
    screen -S <会话名称>:为新的 screen 会话指定一个名称。
    
  13. SELinux强制访问控制让系统更安全的

    enforcing:强制启用安全策略模式,将拦截服务的不合法请求。

    permissive:遇到服务越权访问时,只发出警告而不强制拦截。

    disabled:对于越权的行为不警告也不拦截。

    [root@host ~]# vim /etc/selinux/config
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    # enforcing - SELinux security policy is enforced.
    # permissive - SELinux prints warnings instead of enforcing.
    # disabled - No SELinux policy is loaded.
    SELINUX=enforcing
    # SELINUXTYPE= can take one of these two values:
    # targeted - Targeted processes are protected,
    # minimum - Modification of targeted policy. Only selected processes are protected. 
    # mls - Multi Level Security protection.
    SELINUXTYPE=targeted
    
    [root@host ~]# getenforce  #配置文件中修改,重启后生效
    Enforcing
    
    [root@host ~]# setenforce 0    #临时生效
    [root@host ~]# getenforce
    Permissive
    
  14. semanage是一个用于管理 SELinux 策略的命令行工具。SELinux(Security-Enhanced Linux)是一种强制访问控制(MAC)机制,用于增强 Linux 系统的安全性。

    semanage 命令有多个参数,用于执行不同的操作和配置 SELinux 策略。以下是一些常用的 semanage 参数:
    
    port:用于管理 SELinux 策略中的端口定义。
    
    		-l:列出已定义的端口。
    		-a:添加新的端口定义。
    		-d:删除现有的端口定义。
    module:用于管理 SELinux 策略模块。
    
    		-l:列出已加载的模块。
    		-a:安装新的模块。
    		-r:从系统中卸载指定的模块。
    user:用于管理 SELinux 用户。
    
    		-l:列出已定义的用户。
    		-a:添加新的用户定义。
    		-d:删除现有的用户定义。
    		login:用于管理 SELinux 登录角色。
    
    		-l:列出已定义的登录角色。
    		-a:添加新的登录角色定义。
    		-d:删除现有的登录角色定义。
    fcontext:用于管理 SELinux 安全上下文。
    
    		-l:列出已定义的安全上下文规则。
    		-a:添加新的安全上下文规则。
    		-d:删除现有的安全上下文规则。
    boolean:用于管理 SELinux Booleans。
    
    		-l:列出当前可用的 Booleans。
    		-m:修改指定 Boolean 的状态。
    permissive:用于管理 SELinux Policy 模块中的放宽模式。
    
    		-l:列出已定义的放宽模式。
    		-a:将指定进程、用户或角色添加到放宽模式。
    		-d:从放宽模式中删除指定的进程、用户或角色。
    
posted @ 2023-07-06 13:11  未来的启示录  阅读(58)  评论(0)    收藏  举报