Loading

Linux基础(二)

Linux 文件属性及详细操作

文件属性信息组成

image

  • 文件索引属性信息-inode
  • 文件类型权限信息
  • 文件链接属性信息-硬链接个数
  • 文件属主属性信息-文件所有者
  • 文件属组属性信息-文件所属组
  • 文件大小属性信息-最小单位字节(大小、kb)
  • 文件修改时间信息
  • 文件名称信息说明-文件名

文件属性概念说明

  • inode 编号

    Linux系统中文件的唯一编号,就相当于身份证号

    image

  • 常见文件类型

    文件类型 对应字符
    普通文件 f/-
    文件夹 d
    链接文件 l
    设备文件 b:磁盘文件 / c:字符文件
    套接字文件(socket) s
    管道文件 p

    image

  • 文件类型查看方法

    • 配置文件---.conf
    • 日志文件---.log
    • 脚本文件---.sh
    • 脚本文件---.py
      image
      image

文件软硬链接说明

  • 命令:ln

    • 参数:-s --- 软连接
    • 不加参数创建的是硬链接
  • 格式1:ln [原文件路径] [硬链接文件路径]

  • 格式2:ln -s [原文件路径] [软链接文件路径]
    image

    硬链接

    硬链接好比商场的出口,商场有多个出口,就相当于多个接口去操作文件,硬链接直接指向index node编号,当文件修改时候,硬链接产生的文件也修改,他们的inode编号相同

    # 创建硬链接
    [root@localhost ~]# ln /root/test /root/test01
    

    image

    软链接

    相当于Windows中的快捷方式,主要用来指向对应文件的路径。

    # 创建软连接
    [root@localhost ~]# ln -s /root/test /root/test02
    

    image

    验证软链接是指向路径,删除原文件观察

    [root@localhost ~]# rm -rf /root/test
    [root@localhost ~]# ls
    anaconda-ks.cfg  test01  test02
    [root@localhost ~]# ll -i
    total 8
    134319695 -rw-------. 1 root root 1691 Dec  9 19:03 anaconda-ks.cfg
    134930018 -rw-r--r--. 1 root root   12 Dec 14 16:17 test01
    135086254 lrwxrwxrwx. 1 root root   10 Dec 14 16:25 test02 -> /root/test
    [root@localhost ~]# cat test01
    chinaaaaaaa
    [root@localhost ~]# cat test02
    cat: test02: No such file or directory
    

    image

    补充知识

    如何真正删除一个文件:
    
    删除文件的底层逻辑:
    1、删除的是硬链接
    2、判断该文件硬链接数是否为0
    3、如果为0,则在磁盘中将其删除
    4、如果不为0,则只删除一个硬链接
    

存储数据相关-inode/block

  • inode

    inode用于存放的是文件属性、指针位置,主要在是在格式化创建文件系统的时候诞生的,创建一个文件至少占用一个inode和一个block,在同一分区中,两个文件的inode号码相同,两个文件互为硬链接。

    • 展示inode信息:
        [root@localhost ~]# cd /etc/
        [root@localhost etc]# ll -hi /etc/hosts
        67109955 -rw-r--r--. 1 root root 158 Jun  7  2013 /etc/hosts
      
    • 统计inode数目

      命令:df -i

      [root@localhost etc]# df -i
      Filesystem                Inodes IUsed    IFree IUse% Mounted on
      devtmpfs                   56934   334    56600    1% /dev
      tmpfs                      59949     1    59948    1% /dev/shm
      tmpfs                      59949   692    59257    2% /run
      tmpfs                      59949    16    59933    1% /sys/fs/cgroup
      /dev/mapper/centos-root 52164608 77758 52086850    1% /
      /dev/sda1                 262144   326   261818    1% /boot
      tmpfs                      59949     1    59948    1% /run/user/0	
      
  • block

    用于存储数据-block块信息,存储文件数据信息,主要在是在格式化创建文件系统的时候诞生的;

    • block默认大小为4k,比较大的文件,会占用多个block
    • 当文件比较大的时候,磁盘放不下,会导致空间无法使用-显示磁盘空间不足(no space left on device)
    • 创建一个文件至少占用一个inode和一个block(非空文件)
    • 磁盘读取数据按block为单位读取的
    • 读取一个block会消耗一次磁盘I/O(input/output 磁盘读写)

    命令:df

    相关文件:/etc/hosts

    [root@localhost etc]# ll -hi /etc/hosts
    67109955 -rw-r--r--. 1 root root 158 Jun  7  2013 /etc/hosts
    
    [root@localhost etc]# df
    Filesystem              1K-blocks    Used Available Use% Mounted on
    devtmpfs                   227736       0    227736   0% /dev
    tmpfs                      239796       0    239796   0% /dev/shm
    tmpfs                      239796    5624    234172   3% /run
    tmpfs                      239796       0    239796   0% /sys/fs/cgroup
    /dev/mapper/centos-root 104278276 2636220 101642056   3% /
    /dev/sda1                  520868  134236    386632  26% /boot
    tmpfs                       47960       0     47960   0% /run/user/0
    
    • 读取文件原理图

      文件首先存储在硬盘上,文件最小的单位是块(block),块由扇区(sector)组成,块一般大小为4kb,连续8个扇区组成一个块
      硬盘的最小存储单位扇区(sector),每个扇区存储512字节
      操作系统读取硬盘数据:一次性读取一块数据

    • 读取文件流程

      以读取/etc/passwd文件内容为例

      image

  • Linux文件系统

    Linux文件系统可以简单分为inode table和 data area,inode table中存有inode,文件系统通常会将文件的权限与属性放置到inode中,至于实际内容则放置到data block区块中,还有一个超级区块(superblock)会记录整个文件系统的整体信息。

    • 文件的元数据 :权限(rwx)与属性(拥有者、群组、时间参数、大小等)
    • 文件的数据:实际记录文件的内容 若文件太大时,会占用多个block
    • 文件系统的整体信息:inode/block的总量、使用量、剩余量, 以及档案系统的格式与相关信息等
      inode block superblock
      记录文件的元数据 记录文件的数据 记录文件系统的整体信息
      ![image](https://img2022.cnblogs.com/blog/2358523/202209/2358523-20220924172602582-2001275897.png)

文件用户和用户组

用户:相当于账号,例如root(超管用户)
用户组:某些具有相同属性的账号的集合

  • 用户分为系统用户和普通用户:
    • uid在[0 - 999] 之间的用户为系统用户,一般用在启动程序上,一般不需要登录系统,root不一定为超级管理员,uid=0的为超管
    • uid在[1000+]的用户为普通用户,一般用在登录上
  • 创建用户
    • 添加用户:useradd [用户]
      • 参数
        • -g :指定存在用户组
        • -r :创建一个系统用户
        • -M :不创建家目录
        • -u :指定创建用户ID
        • -s :指定解析器
    • 删除用户:userdel -r [用户]
    • 相关文件:/etc/passwd
  • 创建用户组
    • 添加用户组:groupadd [组名]
      • 参数 -g:指定用户组的ID
    • 删除用户组:groupdel [组名]
    • 修改用户组:usermod -g [组名] [用户名]
    • 相关文件:/etc/group
  • 穿件新用户外带组名
    • id [用户名] / [组名]
  • 用户文件操作
    # 查看用户详情文件
    [root@localhost mail]# useradd alan
    [root@localhost mail]# cat /etc/passwd
    # 格式如下
    alan:x:1000:1000:[用户简介]:/home/alan:/bin/bash
    用户名		 	:alan
    密码占位符	   :x
    1000    	   :userid
    1000		   :组id
    /home/alan       :家目录
    /bin/bash	   :默认的解析器 
    # 默认的解析器为bash
    
    # 解析器的种类 (可以修改)
    bash  /   sh    / zsh
    
    # sh和bash解析器切换
    /bin/bash
    /bin/sh
    
    切换用户
    	su - [用户名]
    	su [用户名]
    	
    # 在已存在的用户组内添加用户
    # 通过指定组名添加
    [root@localhost mail]# id hammer
    uid=1000(hammer) gid=1000(hammer) groups=1000(hammer)
    [root@localhost mail]# useradd wang -g hammer
    [root@localhost mail]# id wang
    uid=1001(wang) gid=1000(hammer) groups=1000(hammer)
    # 通过指定组id添加
    [root@localhost mail]# useradd -g li 1000 
    [root@localhost mail]# id li
    uid=1002(li) gid=1000(hammer) groups=1000(hammer)
    
  • 用户组操作
    [root@localhost mail]# groupadd hammer
    [root@localhost mail]# cat /etc/group
    hammer:x:1000:
    
    hammer	:组名
    x	:密码占位符
    1000	:组id
    
  • 不使用useradd命令添加用户
    # 添加用户
    vim /etc/passwd
    test08:x:2001:2001:自建用户:/home/test08:/bin/bash
    
    # 添加组
    vim /etc/group
    test08:x:2001:
    
    # 添加用户密码
    vim /etc/shadow
    test08:$6h4j93wta/:18974:0:99999:7:::
    
    # 添加用户组密码
    vim /etc/gshadow
    test08:!::
    
    # 家目录
    mkdir test08
    cp /etc/skel/.bash* /home/test08/
    chown -R test08.test08  test08
    改权限
    chmod 700 test08/
    

Linux 文件权限

文件权限的详细操作

  • 简介

    权限就是用户可以对文件可以进行的操作,例如:可读,可写,可执行

  • 命令及归属

    • 命令:chmod

    • 参数:

      • -c : 若该文件权限确实已经更改,才显示其更改动作
      • -f :若该文件权限无法被更改也不要显示错误讯息
      • -v :显示权限变更的详细资料
      • -R :对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
    • 格式:chmod [参数] [权限表达式][修改权限文件名]

    • 文件权限的归属分为:u-属主(Owner)g-属组(Group)o-其他使用者(Other Users)
      image

    • 权限字符及其编号
      image

    • 使用字符添加权限直接+号就可以添加权限,-号代表取消权限,=代表唯一设定权限

      功能一览表:

      Operator 说明
      + 为指定的用户类型增加权限
      - 去除指定用户类型的权限
      = 设置指定用户权限的设置,即将用户类型的所有权限重新设置

      模式 对应数字 描述
      r 4 设置为可读权限
      w 2 设置为可写权限
      x 1 设置为可执行权限
      - 0 没权限
  • 权限对于用户和目录的意义

    • 权限对于用户的意义:

      • 文件属主和超管可以修改文件或目录的权限;
      • root用户是高于权限;
      • 普通用户是严格遵守权限的;
      • 权限需要重新登才生效(su和su - 都可以);
    • 权限对于目录的意义:

      设置最小权限使文件执行相应的操作

      • 文件可读,文件所在路径(文件夹)的最小权限是必须拥有可执行权限。
      • 文件可写,文件所在路径(文件夹)的最小权限是必须拥有可执行权限
      • 文件可执行,文件所在路径(文件夹)的最小权限是必须拥有可读可执行权限
  • 创建文件/文件夹的默认权限来源

    • 相关文件:/etc/profile
    • 在Linux中,常用的文件的权限是666,目录的权限是777
      • 创建文件的默认权限是跟umask值相减,遇到奇数加一,遇到偶数则不变
      • 创建文件夹的权限只和umask相减
    • 查看profile文件中的umask值,及运算关系
      [root@localhost ~]# cat /etc/profile
      image

      root用户举例,示例如下:

      # 查看uid
      [root@localhost ~]# id root
      uid=0(root) gid=0(root) groups=0(root)
      # uid <199,第一步为假了
      
      [root@localhost test]# /usr/bin/id -gn
      root
      [root@localhost test]# /usr/bin/id -un
      root
      # 执行结果相同,为真
      # False && True = False,所以root的umask = 022
      
      # 那么我们在root用户下创建的用户默认权限就可以计算了,文件权限666和目录权限777与umask相减来验证
      
      # 1、文件默认权限验证
      666的每位与022相减: 
      6-0 =6   # 偶数不用变
      6-2 =4   # 偶数不用变
      6-2 = 4  # 偶数不用变
      # 所以root下创建文件的默认权限为644---->rw-r--r--
      
      # 实际创建验证
      [root@localhost test]# touch a.txt
      [root@localhost test]# ll -i
      total 0
      1423023 -rw-r--r--. 1 root root 0 Dec 15 15:48 a.txt
      
      # 2、目录默认权限验证
      777的每位与022直接相减,不需要判断奇偶
      7 - 0 = 7
      7 - 2 = 5
      7 - 2 = 5
      # 所以root下创建的目录的默认权限为755 ----> rwxr-xr-x
      
      # 实际创建验证
      [root@localhost ~]# mkdir test
      [root@localhost ~]# ll -i
      1423022 drwxr-xr-x. 2 root root   19 Dec 15 15:48 test
      
      
  • 修改文件权限案例

    案例:a.txt为例,修改文件ugo的权限

    [root@localhost test]# ll -ia
    1423023 -rw-r--r--. 1 root root   0 Dec 15 15:48 a.txt
    # 现在ugo的权限为读写,可读,可读,把ugo的权限扩大,改为读写执行
    [root@localhost test]# chmod ugo+rwx a.txt 
    或
    [root@localhost test]# chmod 777 a.txt
    [root@localhost test]# ll -i
    total 0
    1423023 -rwxrwxrwx. 1 root root 0 Dec 15 15:48 a.txt
    
    # 将a.txt ugo的读写执行权限都去掉
    [root@localhost test]# chmod ugo-rwx a.txt 
    或
    [root@localhost test]# chmod -777 a.txt 
    [root@localhost test]# ll -i
    total 0
    1423023 ----------. 1 root root 0 Dec 15 15:48 a.txt
    
    # 分别给a.txt 的u读写执行,g添加读写,o添加读权限
    [root@localhost test]# chmod u+rwx,g+rw,o+r a.txt 
    或
    [root@localhost test]# chmod 764 a.txt 
    [root@localhost test]# ll -i
    total 0
    1423023 -rwxrw-r--. 1 root root 0 Dec 15 15:48 a.txt
    
    # 分别给a.txt 的u读写,g执行,o没有任何权限
    [root@localhost test]# chmod u+rw,g+x a.txt 
    或
    [root@localhost test]# chmod 610 a.txt 
    [root@localhost test]# ll -i
    total 0
    1423023 -rw---x---. 1 root root 0 Dec 15 15:48 a.txt
    
    

    案例:以test文件夹为例,分配权限

    # 查看test文件夹文件的权限
    [root@localhost test]# ll
    total 0
    ----------. 1 root root 0 Dec 15 15:48 a.txt
    ----------. 1 root root 0 Dec 15 16:25 b.txt
    # 没有任何权限,下面给test文件下的所有文件添加读写执行权限
    [root@localhost ~]# chmod -R 777 test 
    [root@localhost ~]# ll test
    total 0
    -rwxrwxrwx. 1 root root 0 Dec 15 15:48 a.txt
    -rwxrwxrwx. 1 root root 0 Dec 15 16:25 b.txt
    
    # 将test目录下所有文件的属组的执行权限,其他使用者的写和执行权限去掉
    [root@localhost ~]# chmod -R g-x,o-wx test/
    [root@localhost ~]# ll test/
    total 0
    -rwxrw-r--. 1 root root 0 Dec 15 15:48 a.txt
    -rwxrw-r--. 1 root root 0 Dec 15 16:25 b.txt
    
    
  • 文件时间属性

    stat 命令:显示文件或文件系统状态

    [root@localhost ~]# stat a.txt
    Access: 2021-12-16 15:55:09.631988358 +0800
    Modify: 2021-12-16 15:55:09.631988358 +0800
    Change: 2021-12-16 15:55:09.631988358 +0800
    
    Access 文件访问时间
    Modify 文件修改时间
    Change 属性修改时间
    
    编辑文件  文件修改时间 属性修改时间  改变
    访问文件  文件访问时间 改变
    修改属性  属性修改时间 改变
    

系统基础优化

  • 系统信息查看方法

    # cat /etc/redhat-release
    CentOS release 7.5.1804
    
  • 查看系统内核版本(用于显示当前操作系统名称)

    • uname :Linux命令,用于显示当前操作系统名称
      • -a:详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
      • -r:显示linux操作系统内核版本号
      • -m:查看系统硬件位数
        [root@localhost ~]# uname
        Linux
        [root@localhost ~]# uname -a
        Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
        
        # uname -r
        3.10.0-862.el7.x86_64
        
        # uname -m
        x86_64
        
  • 添加系统普通用户

    • 添加系统普通用户:useradd [用户名]
    • 设置用户密码 :passwd [用户名]
      • 免交互模式:echo [密码]|passwd --stdin [用户名] (一般用在脚本文件中)
    • 切换用户信息:su 和 su -
      • 二者区别就是su是切换用户,但是切换后的用户缺少相应的文件或环境变量;su -相当于重新登录,切换后的用户携带环境变量或相应文件
      • 通过pwd和echo $PATH两个命令查看超管和普通用户切换后的区别
      • root用户切换到普通用户不需要输入密码
      • 普通用户切换到root用户需要输入密码

      用户切换原理图:
      image

  • 查看当前登录用户信息:whoami命令

    [root@localhost ~]# whoami
    root
    
  • 查看当前用户登录系统的终端 :who命令

    root@ubuntumachine01:~# who
    root     tty1         2022-09-24 04:03
    king     pts/1        2022-09-24 04:16 (192.168.28.112)
    
    # tty和pts的含义
    tty ---- 代表虚拟机开的窗口
    pts ---- 代表此时Xshell开的窗口
    
  • 命令提示信息优化

    通过echo $PS1命令修改显示命令行提示符格式信息

    [root@localhost ~]# echo $PS1
    [\u@\h \W]\$
    # 大写方式只能显示路径基名,不显示完全路径
    [root@localhost ~]#cd /etc/sysconfig/network-scripts/
    [root@localhost network-scripts]#
    
    [root@localhost ~]# PS1='[\u@\h \w]\$'
    # 通过小写方式这样就能显示完整路径了
    [root@localhost ~]#cd /etc/sysconfig/network-scripts/
    [root@localhost /etc/sysconfig/network-scripts]#
    

    永久设置切换提示

    • 相关文件: /etc/profile
      • 在profile文件内添加export PS1='[\u@\h \w]$ '
      • 重载文件命令:source
      • 重载文件:source /etc/profile,设置成功+

下载的源信息更新

  • Linux中安装软件

    • 安装软件的三种方式
      • rpm安装
      • yum安装
      • 源代码编译安装
    • 区别:
      • rpm安装:类似于windows中的安装包,下载下来之后直接安装。

        rpm缺点:不能解决依赖

      • yum安装:基于rpm安装,也就是在rpm安装上增加了自动解决依赖的功能
      • 源代码安装:通过编译源代码,得到软件包

        优点:可以自定制软件包
        缺点:是比较复杂

      • 注:

        依赖通俗理解为,如果下载wps,那么在下载的同时,wps就会自动下载了word/excel/ppt等必备软件,这样就是解决了依赖,如果下载了wps没有自动下载word等软件,就是没有解决依赖*

    • rpm安装
      • 命令:
        • 安装:rpm -ivh [软件包名称]
        • 卸载:rpm -e [软件包名称]
        • 升级:rpm -Uvh [软件包名称]
        • 查看软件包配置文件:rpm -qc [软件包名称]
        • 查看是否安装某软件:rpm -q [软件包名称]
        • 查看当前系统安装了哪些软件:rpm -qa [软件包名称]
        • 查看软件的安装路径内的内容:rpm -ql [软件包名称]
      • 安装前戏
        • 执行上传与下载命令:yum install lrzsz -y
        • lrzsz:上传和下载从Windows到Linux服务器直接的一个工具包,作用是下载好的安装包可以直接托到linux中
        • 👉华为开源镜像站、阿里云等等
      • 下载安装包(我是用的是华为源)
        • 打开华为镜像源网站,选择base源下载
          image
          image

          我的是CentOS 7,找到7/-->os/-->x86_64/Packages/,然后去搜索要下载的安装包!(路径显示:/mirrors_os/centos/7/os/x86_64/Packages/)

          image
          image
          image

      • 安装
        # 安装命令
        [root@localhost ~]# rpm -ivh zsh-5.0.2-34.el7_8.2.x86_64.rpm
        Preparing...                          ################################# [100%]
        Updating / installing...
        1:zsh-5.0.2-34.el7_8.2             ################################# [100%]
        [root@localhost ~]# zsh
        
      • 卸载
        # 卸载命令
        [root@localhost]~# rpm -e zsh
        [root@localhost]~# zsh
        zsh: command not found: zsh
        
      • 更新
        # 更新命令
        [root@localhost]~# rpm -Uvh zsh-5.0.2-34.el7_8.2.x86_64.rpm
        Preparing...                          ################################# [100%]
        package zsh-5.0.2-34.el7_8.2.x86_64 is already installed
        [root@localhost]~# zsh
        
      • 软件包名称解释
        zsh-5.0.2-34.el7_8.2.x86_64.rpm 
        软件包名称:zsh
        版本号:5.0.2
        第多少次编译:34
        适用的平台:el7_8(CentOS 7)
        适用的系统位数:x86_64
        扩展名:rpm
        
      • 补充操作
        # 查看软件包的配置文件有哪些
        [root@localhost]~# rpm -qc zsh
        /etc/skel/.zshrc
        /etc/zlogin
        /etc/zlogout
        /etc/zprofile
        /etc/zshenv
        /etc/zshrc
        
        # 查看是否安装某软件
        # 有的话显示软件包信息
        [root@localhost]~# rpm -q zsh
        zsh-5.0.2-34.el7_8.2.x86_64
        # 没有安装输出未安装
        [root@localhost]~# rpm -q asfgghl
        package asfgghl is not installed
        
        # 查看当前系统安装了哪些软件
        [root@localhost]~# rpm -qa
        
        #查看软件的安装路径内的内容
        [root@localhost ~]# rpm -ql zsh
        
        
    • yum安装
      • 格式:yum [参数][进行的操作][软件包名称]
      • 参数 :
        • -y,安装,卸载,更新使用-y参数是免交互模式,不需要确认y/N,
        • --nogpgcheck:忽略公钥认证安装
      • yum命令
        • 安装:yum install [软件包的名称]
        • 卸载:yum remove [软件包的名称]
        • 更新:yum update [软件包的名称]
        • 查看软件源中是否有此软件:yum list [软件包的名称]
        • 清空yum缓存:yum clean all
        • 生成缓存:yum makecache
        • 列出设定yum源的信息:yum repolist
        • 清除缓存目录下的软件包:yum clean packages
      • yum安装的生命周期(从下载到结束):
        • 执行yum install [软件包名称]
        • 去/etc/yum.repos.d/目录 找以 .repo (yum源)结尾的文件
        • 通过.repo 文件中的链接(url),找到对应的软件仓库
        • 在对应的软件仓库中下载指定的软件包
        • 临时下载到/var/cache/yum/
        • 根据缓存,安装软件包
        • 删除软件包(在/etc/yum.conf中有参数keepcache 代表是否保存缓存,0 代表不保存 , 1 代表保存)
          注:rpm其实就是只执行了最后一步
      • 相关文件:
        • yum的配置文件:/etc/yum.conf
        • 安装包缓存目录:/var/cache/yum/
        • 软件仓库目录 :/etc/yum.repos.d/
          注:如果跟具体的软件包名称,就会更新指定软件包;如果没有指定,则更新系统所有的需要更新的软件包。
    • yum私有仓库构建
      • 本地版
        • 下载必须的软件包

          yum install yum-utils createrepo -y
          注:使用'yum-utils'来维护YUM并提高其性能

        • 创建软件仓库
          [root@localhost opt]# mkdir -p /opt/repos
          [root@localhost repos]# pwd
          /opt/repos
          
        • 下载对应软件包
        • 初始化软件仓库
          • 命令:createrepo [软件仓库路径]
            # 初始化仓库
            [root@localhost ~]# createrepo /opt/repos/
            Saving Primary metadata
            Saving file lists metadata
            Saving other metadata
            Generating sqlite DBs
            Sqlite DBs complete
            
            # 切换路径查看初始化结果,多了一个repodata目录
            [root@localhost ~]# cd /opt/repos/
            [root@localhost repos]# ll
            total 4
            drwxr-xr-x 2 root root 4096 Dec 16 20:47 repodata
            # repodata目录内存储的是对应关系,不要修改
            
        • 初始化后创建Packages目录,下载对应的软件包,这里用zsh做例子(华为源提前下载好的)
          [root@localhost repos]# mkdir /opt/repos/Packages
          [root@localhost repos]# ll
          total 4
          drwxr-xr-x 2 root root    6 Dec 16 20:51 Packages
          drwxr-xr-x 2 root root 4096 Dec 16 20:47 repodata
          # 此时/repos里面就有两个目录,Packages下存放安装包,移动准备好的软件安装包(zsh举例)
          [root@localhost repos]# mv /root/zsh-5.0.2-34.el7_8.2.x86_64.rpm Packages/
          [root@localhost repos]# ll /opt/repos/Packages/
          total 2440
          -rw-r--r-- 1 root root 2497380 Dec 16 15:37 zsh-5.0.2-34.el7_8.2.x86_64.rpm
          
          image
        • 再次初始化尝试验证是否成功,不报错为成功
          [root@localhost repos]# createrepo /opt/repos/
          Spawning worker 0 with 1 pkgs
          Workers Finished
          Saving Primary metadata
          Saving file lists metadata
          Saving other metadata
          Generating sqlite DBs
          Sqlite DBs complete
          # 没有报错代表成功了
          
        • 添加yum源
          # 防止原有的源影响测试本地源结果
          # 去yum源,做备份
          [root@localhost repos]# cd /etc/yum.repos.d/
          [root@localhost yum.repos.d]# mkdir backup
          [root@localhost yum.repos.d]# mv *.repo backup/
          [root@localhost yum.repos.d]# ll
          total 4
          drwxr-xr-x 2 root root  237 Dec 16 21:04 backup
          
          # 添加本地yum源
          [root@localhost ~]# yum-config-manager --add-repo=file:///opt/repos
          Loaded plugins: fastestmirror
          adding repo from: file:///opt/repos
          
          [opt_repos]
          name=added from: file:///opt/repos
          baseurl=file:///opt/repos
          enabled=1
          
          # 切换目录,查看是否添加yum源
          [root@localhost repos]# cd /etc/yum.repos.d/
          [root@localhost yum.repos.d]# ll
          total 4
          drwxr-xr-x 2 root root 268 Dec 16 21:07 backup
          -rw-r--r-- 1 root root  85 Dec 16 21:09 opt_repos.repo
          # 成功添加opt_repos.repo
          
          # 查看,发现源下载链接变为本地的file://
          [root@localhost yum.repos.d]# cat opt_repos.repo 
          [opt_repos] # 源的名称
          name=added from: file:///opt/repos # 源的简介
          baseurl=file:///opt/repos # 源的下载地址
          enabled=1 # 是否启用,1为启用,0为不启用
          
        • 清理缓存,生成缓存
          # 清理
          [root@localhost yum.repos.d]# yum clean all
          Loaded plugins: fastestmirror
          Cleaning repos: opt_repos
          Cleaning up list of fastest mirrors
          Other repos take up 664 M of disk space (use --verbose for details)
          
          # 生成
          [root@localhost yum.repos.d]# yum makecache
          Loaded plugins: fastestmirror
          Determining fastest mirrors
          opt_repos                                                         | 2.9 kB  00:00:00
          (1/3): opt_repos/filelists_db                                     | 5.7 kB  00:00:00
          (2/3): opt_repos/other_db                                         | 1.6 kB  00:00:00
          (3/3): opt_repos/primary_db                                       | 2.5 kB  00:00:00
          Metadata Cache Created
          
        • 测试
          [root@localhost yum.repos.d]# yum install zsh
          

        现在下载已经是本地添加的源下载,opt_repos
        image
        image

      • 远程版

        优化本地版,其他机器可以用,接下来用克隆机尝试使用本机的

        • 下载必须的软件包

        • 创建软件仓库

        • 下载对应的软件

        • 初始化软件仓库

        • 添加yum源

        • 生成缓存

        • 获取华为开源网站中Base源url内容

          # 本地只有一个安装包,去华为开源网站获取,执行以下命令
          [root@localhost yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo
          

          image

          注:curl 是一种命令行工具,作用是发出网络请求,然后获取数据,显示在"标准输出"(stdout)上面。
          如果要把这个网页保存下来,可以使用 -o 参数:
          curl -o [文件名] [URL]

        • 添加yum源

          • 命令:yum-config-manager --add-repo=[yum源url根路径]
          • 注意:yum源根路径为含有Packages和repodata两个目录
            image
            # 添加yum源
            [root@localhost yum.repos.d]# yum-config-manager --add-repo=https://repo.huaweicloud.com/epel/7/x86_64/
            Loaded plugins: fastestmirror
            adding repo from: https://repo.huaweicloud.com/epel/7/x86_64/
            
            [repo.huaweicloud.com_epel_7_x86_64_]
            name=added from: https://repo.huaweicloud.com/epel/7/x86_64/
            baseurl=https://repo.huaweicloud.com/epel/7/x86_64/
            enabled=1
            
            
        • 安装远程访问软件(Nginx)

          # 忽略公钥安装
          [root@localhost yum.repos.d]# yum install nginx --nogpgcheck
          
        • 修改nginx的配置文件

          [root@localhost yum.repos.d]# rpm -qc nginx
          /etc/logrotate.d/nginx
          /etc/nginx/fastcgi.conf
          /etc/nginx/fastcgi.conf.default
          /etc/nginx/fastcgi_params
          /etc/nginx/fastcgi_params.default
          /etc/nginx/koi-utf
          /etc/nginx/koi-win
          /etc/nginx/mime.types
          /etc/nginx/mime.types.default
          /etc/nginx/nginx.conf
          /etc/nginx/nginx.conf.default
          /etc/nginx/scgi_params
          /etc/nginx/scgi_params.default
          /etc/nginx/uwsgi_params
          /etc/nginx/uwsgi_params.default
          /etc/nginx/win-utf
          
          # 只修改/etc/nginx/nginx.conf文件
          注释掉:include /etc/nginx/conf.d/*.conf;
          修改路径:root         /opt/repos;
          添加索引:autoindex on;    ---# 作用是目录索引
          
          

          vim /etc/nginx/nginx.conf 文件

          image

        • 测试

          [root@localhost yum.repos.d]# nginx -t
          nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
          nginx: configuration file /etc/nginx/nginx.conf test is successful
          # 测试成功
          
          • 启动nginx
            [root@localhost yum.repos.d]# systemctl start nginx
            
          • 关闭selinux和firewalld
            [root@localhost ~]# systemctl disable --now firewalld
            [root@localhost ~]# setenforce 0
            
        • 浏览器测试

          浏览器查看本机http://192.168.15.100/
          

          image

        • 克隆机测试

          [root@localhost ~]# cd /etc/yum.repos.d/
          # 装yum-utils扩展
          [root@localhost yum.repos.d]# yum install yum-utils -y
          
          # 备份源
          [root@localhost yum.repos.d]# mkdir backup
          [root@localhost yum.repos.d]# mv *.repo backup/
          [root@localhost yum.repos.d]# ll
          total 0
          drwxr-xr-x. 2 root root 268 Dec 16 22:18 backup
          
          # 添加yum源
          [root@localhost yum.repos.d]# yum-config-manager --add-repo=http://192.168.15.100/
          Loaded plugins: fastestmirror
          adding repo from: http://192.168.15.100/
          
          [192.168.15.100_]
          name=added from: http://192.168.15.100/
          baseurl=http://192.168.15.100/
          enabled=1
          
          # 清理缓存、生成缓存
          [root@localhost yum.repos.d]# yum clean all
          [root@localhost yum.repos.d]# yum makecache
          
          # 测试下载
          [root@localhost yum.repos.d]# yum install zsh 
          
          
          

          image

系统安全优化

  • 关闭selinux安全服务功能

    • 相关文件:/etc/selinux/conf
    • 永久关闭 :vim /etc/selinux/conf
      image
    • 临时关闭/开启(设置立即生效):setenforce 0 /1(0代表临时关闭,1代表开启)
      [root@localhost]~# setenforce 0
      [root@localhost]~# setenforce 1
      
  • 关闭防火墙

    • 防火墙底层:
      • firewalld 底层 --> iptables -->系统安全框架
    • 查看防火状态:
      • systemctl status firewalld
    • 暂时关闭防火墙
      • systemctl stop firewalld
    • 永久关闭防火墙
      • systemctl disable firewalld
    • 重启防火墙
      • systemctl enable firewalld
    • 启动防火墙
      • systemctl start firewalld

防止系统乱码优化

  • 出现乱码情况设置
    # 查看字符集
    [root@localhost ~]# echo $LANG
    en_US.UTF-8
    
    # 设置字符集
    export LANG=en.US-gb2312
    
    # 查看字符集
    [root@localhost ~]# echo $LANG
    en.US-gb2312
    
  • 解决乱码 情况设置
    • 临时修改系统字符集信息
      # 查看系统当前使用字符集
      echo $LANG
      # 设置字符集
      export LANG=en.US-gb2312
      
      # 设置中文的
      export LANG=zh_CN.UTF-8
      
    • 永久修改系统字符集信息
      # 备份配置信息
      cp /etc/locale.conf /etc/locale.conf
      # 编写配置文件
      echo 'LANG="en_US.UTF-8"'  >/etc/locale.conf
      source /etc/locale.conf
      # 查看配置信息
      echo $LANG
      

补充知识

  • 什么是源?

    源就是来源,就是你安装软件时,程序从哪里获取软件包(安装程序在你的机器上,但需要安装的东西却在软件源服务器上)。

  • 什么是软件源?

    软件源就相当于软件库,需要安装什么软件,只需要简单使用命令来进行安装,其实你可以把他称为软件仓库。安装软件时,就是从仓库里面调取数据放在你的机器上。

  • 什么是镜像?

    镜像,原意是光学里指的物体在镜面中所成之像。引用到电脑网络上,一个网站的镜像是指对一个网站内容的拷贝。镜像通常用于为相同信息内容提供不同的源,特别是在下载量大的时候提供了一种可靠的网络连接。制作镜像是一种文件同步的过程。“镜像网站”(英文:Mirror sites [1] ),又译作“镜像站点” ,亦即把一个互联网上的网站数据“拷贝”到本地服务器,并保持本地服务器数据的同步更新,因此也称为“复制网络站点” 。
    镜像源就是把官方的源做一个镜像,你可以在这下载软件。
    官方源如果在国外,下载软件可能会很慢,这时候就需要换成国内的镜像源。

posted @ 2022-09-24 13:31  爱learn  阅读(74)  评论(0编辑  收藏  举报