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

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

自己菜的一笔

相关推荐
志栋智能5 小时前
超自动化运维如何支持合规审计?
运维·自动化
小诗懂技术5 小时前
【网络通信UDP】基础 进程间不同主机的通信
运维·服务器·网络
weixin_440730505 小时前
selenium实战记录-从登陆-首页-进入应用流程用例三种参数化+日志+报告
服务器·selenium·测试工具
名字还没想好☜5 小时前
Docker 容器安全加固实战:非 root、只读根文件系统、drop capabilities 与最小攻击面
运维·安全·docker·容器·kubernetes
琥珀色糖5 小时前
Linux守护进程
linux·终端·守护进程·会话·进程组
鹤落晴春6 小时前
有状态应用 vs 无状态应用
运维·云原生·k8s
Hstar_chen6 小时前
开源一款 HarmonyOS 服务器监控客户端:星辰云巡 1.0.3
服务器·华为·harmonyos
starzy19908 小时前
虚拟化解决方案全景:软件虚拟化、硬件虚拟化与 Docker 的位置
运维·docker·容器
Neighbor_OldY8 小时前
云上安全配置审计与误配置修复实战:从安全组、OSS、RAM到数据库的全栈排查复盘
大数据·运维·安全·云计算
开心大爆炸9 小时前
xrdp 连接 登录对话框输入密码后闪退
linux·运维·服务器