Linux基础(二)
Linux 文件属性及详细操作
文件属性信息组成
- 文件索引属性信息-inode
- 文件类型权限信息
- 文件链接属性信息-硬链接个数
- 文件属主属性信息-文件所有者
- 文件属组属性信息-文件所属组
- 文件大小属性信息-最小单位字节(大小、kb)
- 文件修改时间信息
- 文件名称信息说明-文件名
文件属性概念说明
-
inode 编号
Linux系统中文件的唯一编号,就相当于身份证号
-
常见文件类型
文件类型 对应字符 普通文件 f/- 文件夹 d 链接文件 l 设备文件 b:磁盘文件 / c:字符文件 套接字文件(socket) s 管道文件 p -
文件类型查看方法
- 配置文件---.conf
- 日志文件---.log
- 脚本文件---.sh
- 脚本文件---.py
文件软硬链接说明
-
命令:ln
- 参数:-s --- 软连接
- 不加参数创建的是硬链接
-
格式1:ln [原文件路径] [硬链接文件路径]
-
格式2:ln -s [原文件路径] [软链接文件路径]
硬链接
硬链接好比商场的出口,商场有多个出口,就相当于多个接口去操作文件,硬链接直接指向index node编号,当文件修改时候,硬链接产生的文件也修改,他们的inode编号相同
# 创建硬链接 [root@localhost ~]# ln /root/test /root/test01
软链接
相当于Windows中的快捷方式,主要用来指向对应文件的路径。
# 创建软连接 [root@localhost ~]# ln -s /root/test /root/test02
验证软链接是指向路径,删除原文件观察
[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
补充知识
如何真正删除一个文件: 删除文件的底层逻辑: 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
- 展示inode信息:
-
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文件内容为例
-
Linux文件系统
Linux文件系统可以简单分为inode table和 data area,inode table中存有inode,文件系统通常会将文件的权限与属性放置到inode中,至于实际内容则放置到data block区块中,还有一个超级区块(superblock)会记录整个文件系统的整体信息。
- 文件的元数据 :权限(rwx)与属性(拥有者、群组、时间参数、大小等)
- 文件的数据:实际记录文件的内容 若文件太大时,会占用多个block
- 文件系统的整体信息:inode/block的总量、使用量、剩余量, 以及档案系统的格式与相关信息等 ![image](https://img2022.cnblogs.com/blog/2358523/202209/2358523-20220924172602582-2001275897.png)
inode block superblock 记录文件的元数据 记录文件的数据 记录文件系统的整体信息
文件用户和用户组
用户:相当于账号,例如root(超管用户)
用户组:某些具有相同属性的账号的集合
- 用户分为系统用户和普通用户:
- uid在[0 - 999] 之间的用户为系统用户,一般用在启动程序上,一般不需要登录系统,root不一定为超级管理员,uid=0的为超管
- uid在[1000+]的用户为普通用户,一般用在登录上
- 创建用户
- 添加用户:useradd [用户]
- 参数
- -g :指定存在用户组
- -r :创建一个系统用户
- -M :不创建家目录
- -u :指定创建用户ID
- -s :指定解析器
- 参数
- 删除用户:userdel -r [用户]
- 相关文件:/etc/passwd
- 添加用户:useradd [用户]
- 创建用户组
- 添加用户组:groupadd [组名]
- 参数 -g:指定用户组的ID
- 删除用户组:groupdel [组名]
- 修改用户组:usermod -g [组名] [用户名]
- 相关文件:/etc/group
- 添加用户组:groupadd [组名]
- 穿件新用户外带组名
- 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)
-
权限字符及其编号
-
使用字符添加权限直接+号就可以添加权限,-号代表取消权限,=代表唯一设定权限
功能一览表:
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
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
- uname :Linux命令,用于显示当前操作系统名称
-
添加系统普通用户
- 添加系统普通用户:useradd [用户名]
- 设置用户密码 :passwd [用户名]
- 免交互模式:echo [密码]|passwd --stdin [用户名] (一般用在脚本文件中)
- 切换用户信息:su 和 su -
- 二者区别就是su是切换用户,但是切换后的用户缺少相应的文件或环境变量;su -相当于重新登录,切换后的用户携带环境变量或相应文件
- 通过pwd和echo $PATH两个命令查看超管和普通用户切换后的区别
- root用户切换到普通用户不需要输入密码
- 普通用户切换到root用户需要输入密码
用户切换原理图:
-
查看当前登录用户信息: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,设置成功+
- 相关文件: /etc/profile
下载的源信息更新
-
Linux中安装软件
- 安装软件的三种方式
- rpm安装
- yum安装
- 源代码编译安装
- 区别:
- rpm安装:类似于windows中的安装包,下载下来之后直接安装。
rpm缺点:不能解决依赖
- yum安装:基于rpm安装,也就是在rpm安装上增加了自动解决依赖的功能
- 源代码安装:通过编译源代码,得到软件包
优点:可以自定制软件包
缺点:是比较复杂 - 注:
依赖通俗理解为,如果下载wps,那么在下载的同时,wps就会自动下载了word/excel/ppt等必备软件,这样就是解决了依赖,如果下载了wps没有自动下载word等软件,就是没有解决依赖*
- rpm安装:类似于windows中的安装包,下载下来之后直接安装。
-
rpm安装
- 命令:
- 安装:rpm -ivh [软件包名称]
- 卸载:rpm -e [软件包名称]
- 升级:rpm -Uvh [软件包名称]
- 查看软件包配置文件:rpm -qc [软件包名称]
- 查看是否安装某软件:rpm -q [软件包名称]
- 查看当前系统安装了哪些软件:rpm -qa [软件包名称]
- 查看软件的安装路径内的内容:rpm -ql [软件包名称]
- 安装前戏
- 执行上传与下载命令:yum install lrzsz -y
- lrzsz:上传和下载从Windows到Linux服务器直接的一个工具包,作用是下载好的安装包可以直接托到linux中
- 👉华为开源镜像站、阿里云等等
- 下载安装包(我是用的是华为源)
-
打开华为镜像源网站,选择base源下载
我的是CentOS 7,找到7/-->os/-->x86_64/Packages/,然后去搜索要下载的安装包!(路径显示:/mirrors_os/centos/7/os/x86_64/Packages/)
-
- 安装
# 安装命令 [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目录内存储的是对应关系,不要修改
- 命令:createrepo [软件仓库路径]
- 初始化后创建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
- 再次初始化尝试验证是否成功,不报错为成功
[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
- 下载必须的软件包
-
远程版
优化本地版,其他机器可以用,接下来用克隆机尝试使用本机的
-
下载必须的软件包
-
创建软件仓库
-
下载对应的软件
-
初始化软件仓库
-
添加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
注:curl 是一种命令行工具,作用是发出网络请求,然后获取数据,显示在"标准输出"(stdout)上面。
如果要把这个网页保存下来,可以使用 -o 参数:
curl -o [文件名] [URL] -
添加yum源
- 命令:yum-config-manager --add-repo=[yum源url根路径]
- 注意:yum源根路径为含有Packages和repodata两个目录
# 添加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 文件
-
测试
[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
- 启动nginx
-
浏览器测试
浏览器查看本机http://192.168.15.100/
-
克隆机测试
[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
-
-
- 安装软件的三种方式
系统安全优化
-
关闭selinux安全服务功能
- 相关文件:/etc/selinux/conf
- 永久关闭 :vim /etc/selinux/conf
- 临时关闭/开启(设置立即生效):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] ),又译作“镜像站点” ,亦即把一个互联网上的网站数据“拷贝”到本地服务器,并保持本地服务器数据的同步更新,因此也称为“复制网络站点” 。
镜像源就是把官方的源做一个镜像,你可以在这下载软件。
官方源如果在国外,下载软件可能会很慢,这时候就需要换成国内的镜像源。