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,哈哈里面各自权限还是原始的)

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

自己菜的一笔

相关推荐
ltl3 小时前
存储性能建模:IOPS、吞吐与延迟
linux
九硕智慧建筑一体化厂家3 小时前
数字化管控落地,直流照明构筑安全照明体系
运维·人工智能·笔记·安全·智慧城市
波波0073 小时前
C# 15 重磅新特性: 带标签 break 与 continue:重新定义嵌套循环控制流
服务器·前端·c#
刘某的Cloud4 小时前
ceph osd 导入导出 rbd volume 卷
linux·运维·ceph·volume
隔窗听雨眠5 小时前
GBase 8s并发控制深度解析:封锁机制、隔离级别与死锁处理全攻略
服务器·数据库·oracle
酸菜。6 小时前
dw_axi_dmac总结
linux
神奇霸王龙6 小时前
Agent 准入门控屠夫:5 旗舰 4 维度评估
linux·运维·数据库·ai·ai作画·agent·ai编程
鲸采云SRM采购管理系统6 小时前
采购管理系统哪家好?2026最新测评对比
java·服务器·数据库
cfm_29147 小时前
基于Binlog实现不停机数据库平滑迁移技术
运维·数据库·架构
迪康Defender7 小时前
AI 重构终端安全运营:智能分析中枢 AI Insight 模块架构与落地场景深度解析
运维·网络·人工智能·其他·安全·重构·架构