linux 基础知识(文件权限相关)

部署后项目500的原因

前置情况

bash 复制代码
[root@localhost kms8.113]# pwd
/usr/kms8.113
[root@localhost kms8.113]# cat docker-compose.yml

下面是docker-compose.yml 对应nginx容器配置
 kms-nginx:
    image: nginx:latest
    volumes:
      - ./kms-nginx/html:/usr/share/nginx/html:ro
      - ./kms-nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
      - ./kms-nginx/logs:/var/log/nginx
    restart: always
    ports:
      - "80:80"

nginx的html对应文件

bash 复制代码
ls -la ./kms-nginx/html/
总用量 0
drwxr-xr-x 6 root   root    66  6月  3 09:37 .
drwx------ 4 root   root   109  6月  3 09:47 ..
drwxr-xr-x 4 197610 197610  95  6月  2 10:23 sigk
drwxr-xr-x 4 root   root    76  4月 30 09:46 sigk20260602
drwx------ 3 root   root    93  6月  3 09:36 v2
drwxrwxrwx 3 root   root    93  6月  2 11:14 v220260603

nginx对应的配置

bash 复制代码
server {
    listen 80;
    server_name localhost;

    #v1
    location / {
        alias /usr/share/nginx/html/sigk/; # 使用 alias 更直观
        index index.html;
        try_files $uri $uri/ /sigk/index.html;
    }

    # v2
    location /v2/ {
        alias /usr/share/nginx/html/v2/;
        index index.html;
        try_files $uri $uri/ /v2/index.html;

    }

    # v1接口代理
    location /dev-api/ {
        proxy_pass http://10.168.9.22:9088/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
   # v2接口代理
   location /api-sigk/ {
        proxy_pass http://10.168.9.22:9087/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

最终部署后出错

项目nginx里面部署两个项目,sigk表示v1项目,v2里面是v1项目升级又一个项目,宿主机器默认80,访问v1项目前端直接跳转v2项目初始化页面,但是v2没有权限,导致无法访问

二、ls -la 命令输出的每一列含义

部署nginx对应文件 示例

bash 复制代码
ls -la ./kms-nginx/html/
总用量 0
drwxr-xr-x 6 root   root    66  6月  3 09:37 .
drwx------ 4 root   root   109  6月  3 09:47 ..
drwxr-xr-x 4 197610 197610  95  6月  2 10:23 sigk
drwxr-xr-x 4 root   root    76  4月 30 09:46 sigk20260602
drwx------ 3 root   root    93  6月  3 09:36 v2
drwxrwxrwx 3 root   root    93  6月  2 11:14 v220260603

**第一列:**文件类型和权限(以第五行 v2目录 解释)

权限格式说明

drwx------ 有10个字符,含义如下:

位置 含义 示例值
第1位 文件类型 d=目录, -=文件, l=软链接
第2-4位 所有者权限 rwx=读写执行
第5-7位 用户组权限 ---= 无任何权限
第8-10位 其他用户权限 ---= 无任何权限

插播理解一下,所有者,用户组和其它用户

所有者(u): 创建文件的用户

所属组 (g):与所有者同组的用户

其他用户 (o):既不是所有者也不在所属组

d rwx --- ---

│ │ │ │

│ │ │ └── 其他用户权限:无任何权限

│ │ └─────── 所属组权限:无任何权限

│ └──────────── 所有者(root)权限:读、写、执行

└─────────────── 文件类型:目录

插播权限数字表示法

r read 读 4

w write 写 2

x execute 执行 1

第二列: 硬链接数(以第五行 v2目录 解释)

3

对于目录,通常表示该目录下的子目录数量(包含 . 和 ...)

第三列: 文件所有者的用户名或UID (以第五行 v2目录 解释)

root

第四列: 文件所属组的组名或GID(以第五行 v2目录 解释)

root

第五列: 文件大小(字节)(以第五行 v2目录 解释)

93

普通文件是实际字节数;目录通常是 4096 或更小(如这里的 93 表示元数据大小)

第六列: 最后修改时间 (以第五行 v2目录 解释)

6月 3 09:36

月、日、时间(如果文件旧会显示年份)

第七列: 文件名

v2

二、chmod

bash 复制代码
chmod 755 /usr/kms8.113/kms-nginx/html/v2


# 修复 v2 目录下所有文件的权限(让所有用户可读)
chmod -R 755 ./kms-nginx/html/v2/

chmod 是 Linux/Unix 系统中的命令,全称是 Change Mode(改变模式),用于修改文件或目录的权限。

三、总结

解决 Permission denied

为什么 v2 目录权限不对?

可能原因:

使用 root 用户创建,但没有给其他用户授权

从别处复制过来时保留了原始权限(我是把原来v2 文件直接重命名 v220260603,把dist重命名v2,哈哈里面各自权限还是原始的)

解压或移动文件时没有指定正确的权限

自己菜的一笔

相关推荐
Web3探索者1 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo1 天前
Linux系统中网线与USB网络共享冲突
linux
荣--1 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森1 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜2 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
Sokach10152 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
SelectDB3 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
AlfredZhao3 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3105 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode5 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏