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

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

自己菜的一笔

相关推荐
jiayong231 小时前
Claude Code 常见操作实战指南
linux·服务器·网络·ai·claude·claude code
醇氧2 小时前
【Linux 】sudo、sudo -i、su、su - 完整区别总结
linux·运维·服务器
xiaoye-duck2 小时前
《Linux系统编程》System V IPC 进阶:消息队列与信号量从入门到内核
linux
代码熬夜敲Q2 小时前
网络工程相关
linux·服务器·网络
我先去打把游戏先2 小时前
VMware NAT 模式 Ubuntu 虚拟机「宿主机能上网、虚拟机 ping 不通外网 + apt 更新卡死」全故障复盘
linux·运维·vscode·单片机·嵌入式硬件·ubuntu·keil5
开压路机2 小时前
基础IO
linux·运维·服务器
呉師傅3 小时前
EPSON爱普生 L3118打印头【喷头】清洗方法
运维·服务器·网络·学习·电脑
JeJe同学3 小时前
LabelImg 标签字体大小修改教程
linux·人工智能·python
小鸡毛程序员3 小时前
从零搭建 Linux 开发服务器:VMware NAT 静态网络 + Docker + MySQL + Redis + 云服务器迁移
linux·服务器·网络