视频学习:黑马程序员Java项目实战瑞吉外卖 网盘资源:https://pan.baidu.com/s/1LxIxcHDO7SYB96SE-GZfuQ 提取码:dor4

部分内容参考:Kyle’s Blog

Linux安装

安装Linux

这里以CentOS7为例

  • 首先安装虚拟机:VMWare

  • 创建新的虚拟机–>稍后安装操作系统–>选择Linux系统,版本选择CentOS7

  • 设置虚拟机名称并且选择物理存放位置

    image-20230704144427845

  • 点击自定义硬件。调整内存、处理器、以及选择镜像文件(关键)

    image-20230704144816284

点击虚拟机如下所示:

点击内部光标就会消失,ctrl+alt光标就会出来

image-20230704145426192

安装即可,软件选择选择最小安装即可

  • 设置root用户密码

网卡设置

由于启动服务器的时候未加载网卡,所以这里我们要手动修改一下配置文件

  • 进入到对应的目录

    1
    cd /etc/sysconfig/network-scripts
  • 编辑ifcfg-ens33文件

    1
    vi ifcfg-ens33
  • 输入i进入编辑状态

  • 修改ONBOOT=yes

  • ESC

  • 输入:wq保存并退出

  • 重新启动linux系统

  • 输入ip addr,能够获取ip地址即可

    image-20230704151549336

    如果有问题,可以使用service network restart重启网络

安装SSH连接工具

  • 为什么要安装SSH连接工具?
    • 因为实际工作的时候,Linux操作系统都是安装在统一的服务器上,而不是像我们现在使用的本地虚拟机
    • 所以我们需要SSH连接工具,远程连接到服务器上
  • 这里安装的是FinalShell

连接成功效果如下:

image-20230704152959998

如果连接失败:

  • 首先查看之前的网卡是否设置正确

  • 然后使用ip addr命令查看ens33是否有ip

    • 如果没有ip,可能是网络服务被关闭,此时查看任务管理器,确保以下两项开启

      image-20230705160848158

    • 如果有ip,可以尝试重启网络service network restart,并重启虚拟机

Linux的目录结构

image-20230704153152159

目录 含义
/bin 存放二进制可执行文件
/boot 存放系统引导时使用的各种文件
/dev 存放设备文件
/etc 存放系统配置文件
/home 存放系统用户的文件
/lib 存放程序运行所需的共享库和内核模块
/opt 额外安装的可选应用程序包所放置的位置
/root 超级用户目录
/sbin 存放二进制可执行文件,只有root用户才能访问
/tmp 存放临时文件
/usr 存放系统应用程序
/var 存放运行时需要改变数据的文件,例如日志文件

Linux常用命令

文件目录操作命令

ls

  • 作用:显示指定目录下的内容

  • 语法:ls [-al] [dir]

  • 说明:

    • -a:显示所有文件及目录(以.开头的隐藏文件也会列出)
    • -l:除文件名外,还会讲文件的形态、权限、拥有者、文件大小等详细信息列出

    注意:由于我们使用ls命令时,经常会加上-l选项,所以Linux很人性化的为我们提供了ll命令来作为ls -l命令的简写,使用ll -a也可以替代ls -al

cd

  • 作用:用户切换当前工作目录,即进入指定目录
  • 语法:cd [dirName]
  • 说明:
    • ~表示用户的home目录
    • .表示当前所在的目录
    • ..表示当前位置的上级目录

cat

  • 作用:用于显示文件内容
  • 语法:cat [-n] fileName
  • 说明:
    • -n:由1开始对所有输出的行数编号
  • 举例:
    • cat /etc/profile: 查看/etc目录下的profile文件内容
    • cat -n /etc/profile:查看/etc目录下的profile文件内容,显示行号

more

  • 作用:以分页的形式显示文件内容
  • 语法:more fileName
  • 说明:
    • 回车键:向下滚动一行
    • 空格键:向下滚动一屏
    • b:返回上一屏
    • q或者Ctrl+C:退出more
  • 举例:
    • more /etc/profile:以分页方式显示/etc目录下的profile文件内容

tail

  • 作用:查看文件末尾的内容
  • 语法:tail [-f] fileName
  • 说明:
    • -f:动态读取文件末尾内容并显示,通常用于日志文件的内容输出
  • 举例:
    • tail /etc/profile:显示/etc目录下的profile文件末尾10行的内容
    • tail -20 /etc/profile:显示/etc目录下的profile文件末尾20行的内容
    • tail -f /kyle/blog.log:动态读取/kyle目录下的blog.log文件末尾内容并显示

mkdir

  • 作用:创建目录
  • 语法:mkdir[-p] dirName
  • 说明:
    • -p:确保目录名称存在,不存在的就创建一个。通过此选项,可以实现多层目录同时创建
  • 举例:
    • mkdir linuxCast:在当前目录下,建立一个名为linuxCast的子目录
    • mkdir-p linuxCast/test:在工作目录下的linuxCast目录中建立一个名为test的子目录,若linuxCast目录不存在,则建立一个

rmdir

  • 作用:删除空目录
  • 语法:rmdir [-p] dirName
  • 说明:
    • -p:当子目录被删除后使父目录为空目录的话,则一并删除
  • 举例:
    • rmdir linuxCast:删除名为linuxCast的空目录
    • rmdir -p linuxCast/test:删除linuxCast目录中名为test的子目录,若test目录删除后linuxCast目录变为空目录,则也被删除
    • rmdir linuxCast*:删除名称以linuxCast开始的空目录

rm

  • 作用:删除文件或者目录
  • 语法:rm [-rf] name
  • 说明:
    • -r:将目录及目录中所有文件(目录)逐一删除,即递归删除
    • -f:无需确认,直接删除
    • name:要删除的文件/目录,支持通配符

拷贝移动命令

cp

作用:用于复制文件或目录
语法:cp [-r] source dest

说明:

  • -r:如果复制的是目录需要使用此选项,此时将复制该目录下所有的子目录和文件
  • source:要复制的资源(文件/目录)
  • dest:要移动到的位置

举例:

  • cp hello.txt linuxCast/:将hello.txt复制到linuxCast目录中
  • cp hello.txt ./ hi.txt:将hello.txt复制到当前目录,并改名为hi.txt
  • cp -r linuxCast/ ./blog/:将linuxCast目录和目录下所有文件复制到blog目录下
  • cp -r linuxCast/* ./blog/:将linuxCast目录下所有文件复制blog目录下

mv

作用:为文件或目录改名,或将文件或目录移动到其它位置
语法:mv source dest

说明:

  • source:要移动的资源(文件/目录)
  • dest:要移动到的位置

举例:

  • mv hello.txt hi.txt:将hello.txt改名为hi.txt
  • mv hi.txt blogl:将文件hi.txt移动到blog目录中
  • mv hi.txt blog/hello.txt:将hi.txt移动到blog目录中,并改名为hello.txt
  • mv linuxCast/ blogl:如果blog目录不存在,将linuxCast目录改名为blog
  • mv linuxCast/ blogl:如果blog目录存在,将linuxCast目录移动到blog目录中

打包压缩命令

tar

作用:对文件进行打包、解包、压缩、解压
语法:tar [-zcxvf] fileName [files]
包文件后缀为.tar表示只是完成了打包,并没有压缩
包文件后缀为.tar.gz表示打包的同时还进行了压缩,也可以用.tgz作为简写

说明:

  • -z: 代表的是gzip,通过gzip命令处理文件,gzip可以对文件压缩或者解压
  • -c: 代表的是create,即创建新的包文件
  • -x: 代表的是extract,实现从包文件中还原文件
  • -v: 代表的是verbose,显示命令的执行过程
  • -f: 代表的是file,用于指定包文件的名称
  • cx是互斥的,解压和压缩不能同时进行

举例 :

  • tar -cvf test.tar test/:将test目录下所有文件打包,打包后的文件名为test.tar

  • tar -zcvf test.tar.gz test/:将test目录下所有文件打包并压缩,打包后的文件名为test.tar.gz

  • tar -xvf test.tar:将hello.tar中的文件解包

  • tar -zxvf test.tar.gz:将hello.tar.gz中的文件解压缩

    image-20230704163219900

    可以看出压缩后的文件更小

  • tar -zxvf test.tar.gz -C /usr/local :(最常用) 解压到指定文件

文本编辑命令

vi

作用:vi命令是Linux系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似于windows中的记事本
语法:vi fileName

说明:

  1. vim是从vi发展来的一个功能更加强大的文本编辑工具,在编辑文件时可以对文本内容进行着色,方便我们对文件进行编辑处理,所以实际工作中vim更加常用。
  2. 要使用vim命令,需要我们自己完成安装。可以使用下面的命令来完成安装:yum install vim

vim

作用:对文件内容进行编辑,vim其实就是一个文本编辑器
语法:vim fileName

说明:

  1. 要使用vim命令,需要自己进行安装,可以使用该命令完成安装:yum install vim
  2. 在使用vim命令编辑文件时,如果指定的文件存在则直接打开此文件。如果指定的文件不存在则新建文件
  3. vim在进行文本编辑时共分为三种模式,分别是命令模式(Command mode),插入模式(Insert mode)和底行模式(Last line mode)。这三种模式之间可以相互切换。我们在使用vim时一定要注意我们当前所处的是哪种模式。

针对vim中的三种模式说明如下:

  1. 命令模式
    命令模式下可以查看文件内容、移动光标(上下左右箭头、gg(开头)、G(末尾))
    通过vim命令打开文件后,默认进入命令模式
    另外两种模式需要首先进入命令模式,才能进入彼此
  2. 插入模式
    插入模式下可以对文件内容进行编辑
    在命令模式下按下[i,a,o]任意一个,可以进入插入模式。进入插入模式后,下方会出现INSERT字样
    在插入模式下按下ESC键,回到命令模式
  3. 底行模式
    底行模式下可以通过命令对文件内容进行查找、显示行号、退出等操作
    在命令模式下按下[:,/]任意一个,可以进入底行模式
    通过 / 方式进入底行模式后,可以对文件内容进行查找
    通过 : 方式进入底行模式后,可以输入wq(保存并退出)、q!(不保存退出)、set nu(显示行号)

查找命令

find

作用:在指定目录下查找文件
语法:find dirName -option fileName

说明:

  • dirName:指定目录
  • -option:一般指定-name(根据文件名称来查找)
  • fileName:可以使用通配符的方式

举例:

  • find / -name helloworld.log:在所有文件夹下查找helloworld.log文件
  • find . -name "*.java":在当前目录及其子目录下查找.java结尾文件
  • find /linuxCast -name "*.java":在/linuxCast目录及其子目录下查找.java结尾的文件

grep

作用:从指定文件中查找指定的文本内容
语法:grep word fileName

说明:

  • word:查找的文本
  • fileName:从哪个文件中种找

举例:

  • grep Hello Helloworld.java:查找Helloworld.java文件中出现的Hello字符串的位置
  • grep hello *.java:查找当前目录中所有.java结尾的文件中包含hello字符串的位置

Linux软件安装

软件安装方式

  1. 二进制发布包安装
    • 软件已经针对具体平台编译打包发布,只要解压,修改配置即可
  2. rpm安装
    • 软件已经按照redhat的包管理规范进行打包,使用rpm命令进行安装,不能自行解决库依赖问题
  3. yum安装
    • 一种在线软件安装方式,本质上还是rpm安装,自动下载安装包并安装,安装过程中自动解决库依赖问题
  4. 源码编译安装
    • 软件以源码工程的形式发布,需要自己编译打包

安装JDK

步骤:

  1. 使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux

  2. 解压安装包:tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local

    将jdk换成自己的版本,-C /path是解压到指定目录,自己安装软件一般都放在/usr/local目录下

  3. 配置环境变量,使用vim命令修改/etc/profile文件,在文件末尾添加如下配置

    1
    2
    JAVA_HOME=/usr/local/jdk1.8.0_171
    PATH=$JAVA_HOME/bin:$PATH

    或者使用echo追加文件内容:

    1
    2
    echo 'JAVA_HOME=/usr/local/jdk1.8.0_171' >> /etc/profile
    echo 'PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile

    查看文件新增内容:tail /etc/profile

  4. 重新加载profile文件,使更改的配置立即生效:source /etc/profile

  5. 检查安装是否成功:java -version

  6. 看到jdk版本号则说明安装成功

    1
    2
    3
    4
    [root@localhost local]# java -version
    java version "1.8.0_171"
    Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
    Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

安装Tomcat

操作步骤:

  1. 使用FinalShell自带的上传工具将Tomcat的二进制发布包上传到Linux

  2. 解压安装包:tar -zxvf apache-tomcat-7.0.57.tar.gz-C /usr/local

  3. 进入Tomcat的bin目录启动服务,命令为sh startup.sh或者./startup.sh

  4. 验证Tomcat是否启动成功,这里给出两种方法

    • 查看进程:ps -ef | grep tomcat

      1
      2
      root      29307      1 35 15:43 pts/0    00:00:09 /usr/local/jdk1.8.0_171/bin/java -Djava.util.logging.config.file=/usr/local/apache-tomcat-7.0.57/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/apache-tomcat-7.0.57/endorsed -classpath /usr/local/apache-tomcat-7.0.57/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.57/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/apache-tomcat-7.0.57 -Dcatalina.home=/usr/local/apache-tomcat-7.0.57 -Djava.io.tmpdir=/usr/local/apache-tomcat-7.0.57/temp org.apache.catalina.startup.Bootstrap start
      root 29786 7970 0 15:43 pts/0 00:00:00 grep --color=auto tomcat
    • 查看日志

      • more /usr/local/ apache-tomcat-7.0.57/logs/catalina.out
      • tail -50 /usr/local/apache-tomcat-7.0.57/logs/catalina.out
  5. 停止Tomcat

    • 运行Tomcat的bin目录中提供的停止服务的脚本文件./shutdown.shsh shutdown.sh

    • 结束Tomcat进程:kill -9 29307

      注意这里的29307是Tomcat的进程id,是上面查看进程查出来的

虽然Tomcat服务器启动了,但是暂时还是无法访问的,因为防火墙是开启的,而且没有开放8080端口。后续实现

ps -ef |

  • ps命令是linux下非常强大的进程查看命令,通过ps -ef可以查看当前运行的所有进程的详细信息
  • |在linux中称为管道符,可以将前一个命令的结果输出给后一个命令作为输入
  • 使用ps命令查看进程时,经常配合管道符和查找命令grep一起使用,来查看特定进程。

防火墙操作

相关命令

  • 查看防火墙状态:systemctl status firewalldfirewall-cmd --state
  • 暂时关闭防火墙:systemctl stop firewalld
  • 永久关闭防火墙:systemctl disable firewalld
  • 开启防火墙:systemctl start firewalld
  • 开放指定端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent
  • 关闭指定端口:firewall-cmd --zone=public --remove-port=8080/tcp --permanent
  • 立即生效:firewall-cmd --reload
  • 查看开放的端口:firewall-cmd --zone=public --list-ports
  1. systemctl是管理Linux中服务的命令,可以对服务进行启动、停止、重启、查看状态等操作
  2. firewall-cmd是Linux中专门用于控制防火墙的命令
  3. 为了保证系统安全,服务器的防火墙不建议关闭

开放8080端口

  1. 防火墙开放8080端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent
  2. 并设置立即生效:firewall-cmd --reload
  3. 此时在浏览器中访问ip:8080就可以正常访问

image-20230705160439548

安装MySQL

安装

RPM (Red-Hat Package Manager)RPM软件包管理器,是红帽Linux用于管理和安装软件的工具

如果当前系统中已经安装有MySQL数据库,安装将失败。CentOS7自带mariadb,与MySQL数据库冲突

  1. 检测当前系统中是否安装MySQL数据库

    • rpm -qa:查询当前系统中安装的所有软件

    • rpm -qa | grep mysql:查询当前系统中安装的名称带mysql的软件

    • rpm -qa | grep mariadb:查询当前系统中安装的名称带mariadb的软件

  2. 卸载已经安装的冲突软件

    • 如果发现有mariadb需要把它卸载掉:rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

    • 看一下是否已经卸载:rpm -qa | grep mariadb

  3. 上传MySQL安装包到linux并解压

    • 创建要解压到的目录:mkdir /usr/local/mysql

    • 解压:tar -zxvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz -C /usr/local/mysql

      解压后得到6个rpm的安装包文件

    • 按顺序安装rpm包

      1
      2
      3
      4
      5
      6
      7
      rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
      rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
      rpm -ivh mysql-community-devel-5.7.25-1.el7.x86_64.rpm
      rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
      rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm
      yum install net-tools
      rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm

使用

启动MySQL:

  • 查看MySQL服务状态systemctl status mysqld

  • 启动MySQL服务system start mysqld

    image-20230705202752709

  • 设置开机时自动启动MySQL服务,避免每次开机都要启动MySQL: systemctl enable mysqld

  • 查看已经启动的服务

    • netstat -tunlp
    • netstat -tunlp | grep mysql
  • 查看MySQL进程ps -df | grep mysql

登录MySQL:

  • 查看日志内容中包含password的行信息:cat /var/log/mysqld.log |grep password

    image-20230705203216631

  • 根据查询到的密码来登录MySQL:mysql -uroot -p

  • 登录成功之后修改密码

    • 设置密码长度最低位数:set global validate_password_length=4;
    • 设置密码安全等级低,便于密码可修改为root:set global validate_password_policy=LOW;
    • 设置密码为root:set password = password('root');
    • 开启访问权限(从外部也可以访问):grant all on *.* to 'root'@'%' identified by 'root';
    • 刷新权限:flush privileges;

注意:如果想从外部访问linux上的数据库,需要防火墙开放3306端口firewall-cmd --zone=public --add-port=3306/tcp --permanent

安装lrzsz

Yum(全称为Yellow dog Updater, Modified)是一个在Fedora和RedHat以及Cent05中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

操作步骤:

  1. 搜索lrzsz安装包:yum list lrzsz

  2. 使用yum命令在线安装:yum install lrzsz.x86_64

  3. 安装完后输入 rz ,就会跳出一个文件上传窗口,选择文件后即可上传

    image-20230705205528900

    FinalShell集成了这个功能,所以不安装也可以;但是对于一些没有这个功能的软件比如:xshell等就可以弹出这个界面,便于上传


项目部署

手工部署项目

  1. 在IDEA上将项目打包成jar包

    • 通过Maven的package指令打包

    • 打完的包会放在target目录下

      image-20230705212355515

  2. 将jar包上传到linux服务器

    • 最好还是创建一个对应的目录:mkdir /usr/local/app
    • 然后使用上传打包好的jar包
  3. 启动项目:java -jar [打包好的jar包名]

    java -jar springboot_reggie-0.0.1-SNAPSHOT.jar

    image-20230705213612325

  4. 检查防火墙。确保8080和3306端口是开放的

  5. 测试。在浏览器访问ip:端口/路径

    image-20230705213940202

注意:此时瑞吉外卖是不能登陆的,因为Linux的数据库上并没有这些数据

通过Shell脚本自动部署项目

  1. 在Linux安装Git

    • 列出git安装包:yum list git

    • 在线安装git:yum install git

    • 使用git克隆代码:git clone [仓库地址]

      在此之前随便编写一个boot项目,controller层写一个GetMapping,随便写个方法返回字符串,方便我们启动服务器的时候查看,然后传到GitHub

  2. 在Linux安装Maven

    • 切换到/usr/local目录

    • 上传maven的安装包

    • 解压到当前位置:tar -zxvf apache-maven-3.5.4-bin.tar.gz

    • 编辑配置文件:/etc/profile

      • vim /etc/profile

      • 加入以下两行配置

        1
        2
        export MAVEN_HOME=/usr/local/apache-maven-3.5.4
        export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
      • 此时进行测试mvn -version

        image-20230705215713234

    • 编辑maven的settings.xml

      • 创建本地仓库目录:mkdir /usr/local/repo
      • 进入到对应目录修改文件:cd /usr/local/apache-maven-3.5.4/conf
        • vim settings.xml,然后输入i进入插入模式
        • settings标签下加上这句话设置仓库位置<localRepository>/usr/local/repo</localRepository>
  3. 编写Shell脚本(拉取代码、编译、打包、启动)

    /usr/local下创建一个sh文件夹,然后创建一个sh文件:vim xxx.sh,将下面内容粘进去即可

    这部分暂时不需要自己写,体验一下即可

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #!/bin/sh
    echo =================================
    echo 自动化部署脚本启动
    echo =================================

    echo 停止原来运行中的工程
    APP_NAME=helloworld

    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ ${tpid} ]; then
    echo 'Stop Process...'
    kill -15 $tpid
    fi
    sleep 2
    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ ${tpid} ]; then
    echo 'Kill Process!'
    kill -9 $tpid
    else
    echo 'Stop Success!'
    fi

    echo 准备从Git仓库拉取最新代码
    cd /usr/local/HelloWorld

    echo 开始从Git仓库拉取最新代码
    git pull
    echo 代码拉取完成

    echo 开始打包
    output=`mvn clean package -Dmaven.test.skip=true`

    cd target

    echo 启动项目
    nohup java -jar HelloWorld-1.0-SNAPSHOT.jar &> helloworld.log &
    echo 项目启动完成

    如果github代码发生改变,再执行这个sh文件就可以更新,因为其中实现了拉取功能

  4. 为用户授予执行Shell脚本的权限

    • 7表示rwx三个权限都有,现在我们把权限都给了方便测试:chmod 777 xxx.sh
  5. 执行Shell脚本sh xxx.sh

  6. 设置静态ip(可选)

    因为默认的IP分配时dhcp模式,会自动分配IP,如果一旦网络出现了问题,再次访问原来的IP可能就不行了,所以这里设置固定的IP地址。

    • 首先进入到对应目录:cd /etc/sysconfig/network-scripts/

    • 然后编辑ifcfg-ens33文件

      • vim ifcfg-ens33

      • 修改添加以下内容(改成自己的子网IP)

        1
        2
        3
        4
        5
        BOOTPROTO=static       # 使用静态IP地址,默认是dhcp自动分配IP
        IPADDR=192.168.186.100 # 设置的静态IP
        NETMASK=255.255.255.0 # 子网掩码
        GATEWAY=192.168.186.2 # 网关地址
        DNS1=192.168.186.2 # DNS服务器

      注意:修改后的静态IP、网关、DNS服务器的网段需要和此处保持一致

      image-20230705223349645

    • 重启网络服务:systemctl restart network。此时FinalShell需要建立新的连接才能访问虚拟机


Linux中的权限

chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令

  • Linux中的权限分为:读(r)、写(w)、执行(x)三种权限

  • Linux中的文件调用权限分为三级:文件所有者(Owner)、用户组(Group)、其他用户(Other Users)

  • 只有文件的所有者和超级用户(Root)可以参与修改文件或目录的权限

  • 要执行Shell脚本需要有对此脚本文件执行的权限,如果没有则不能执行

image-20230705221612546

chmod命令可以使用八进制来指定权限

# 权限 rwx
7 读+写+执行 rwx
6 读+写 rw-
5 读+执行 r-x
4 只读 r–
3 写+执行 -wx
2 只写 -w-
1 只执行 –x
0

举例:

  • chmod 777 xxx.sh:为所有用户授予读、写、执行的权限
  • chmod 755 xxx.sh:为文件拥有者授予读、写、执行的权限,同组用户和其他用户授予读、执行权限

三位数字分别代表不同用户的权限:第一位:文件拥有者;第二位:同组用户;第三位:其他用户

image-20230705222335342