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

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

自己菜的一笔

相关推荐
未济4 天前
linux 配置环境变量
linux
傲世仙尊4 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
虎头金猫4 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
_艾伦 耶格尔.4 天前
进程间通信
linux
AI职业加油站4 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
Liuqy-054 天前
Linux IO编程——静态库、动态库
linux
此冬歌咏4 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
彧azz4 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
-梅4 天前
linux(8) 软硬链接
linux·运维·服务器
Wang's Blog4 天前
Java 项目实战: 外卖平台-文件下载与ServletOutputStream回写浏览器
服务器·项目开发