首页 > 系统相关 >windows 文件授权问题

windows 文件授权问题

时间:2023-11-22 20:44:25浏览次数:23  
标签:文件 执行 windows Windows Unix git 授权 权限

跨平台可执行权限介绍

在类 Unix 系统(如 Mac, Linux)中,执行权限是通过文件的权限位来控制的。而在 Windows 系统中,执行权限通常取决于文件扩展名和关联的执行程序,所以,当我们在跨平台的开发环境中,可能会遇到这样一个问题:在 Windows 系统上创建的脚本文件缺乏类 Unix 系统上的执行权限标志,导致当在类 Unix 系统获取代码时,缺少可执行权限。

由于在 Windows 操作系统下,文件的执行权限对于脚本和可执行文件的运行并不像在类 Unix 系统的要求那样严格,所以在 Windows 上文件的设置执行权限基本不会对文件的运行产生什么实际的影响。

但是为了满足跨平台开发的需求,我们可以使用 git update-index 命令在 Windows 上设置执行权限。这样可以确保在 Windows 系统上创建的脚本文件在提交到 Git 后,在类 Unix 系统上也能够获得执行权限。这种做法有助于保持跨平台的一致性,确保项目在不同操作系统上的可移植性。

解决 window 跨平台权限问题

首先我们现在 window 上创建一个文件,并观察他的文件权限。

#!/usr/bin/env sh
echo test window shell

我们在这里发现,创建好的 shell 脚本是自带了可执行权限

在 mac 上拉取项目,观察文件权限,发现并没有可执行权限。

回到 windows 上通过 git update-index 进行授权,发现 git 检测到变更。

在 window 上提交并推送后,再回到 mac 上拉取项目,发现文件已经具有可执行权限。

git update-index 命令

git update-index 是一个 Git 底层命令,--chmod=+x 是通过 Git 为文件添加可执行权限。

在 Windows 系统上,由于文件系统不同,不能像在类Unix系统上那样直接设置文件的执行权限位。因此,为了在 Windows 上模拟文件的可执行权限,通过将文件添加到 Git 的暂存区并使用 git update-index 命令设置文件的执行权限。

git update-index --chmod=+x 是一种处理在 Windows 系统上设置文件执行权限的特殊情况的方法,以确保与类 Unix 系统上的行为一致,因为在类 Unix 系统上,可以直接使用 chmod 命令设置文件的执行权限,如下图在 Fedora 中,Git 可以直接检测到权限的变更:

通过使用 git update-index 命令来模拟文件的可执行权限是一种在 Windows 上通用的解决方案,因为 Git 可以跨平台运行,而且这种方式避免了对不同版本和配置的 Windows 操作系统进行特定的处理。

window chmod 失效问题

我们先创建一个脚本文件,发现文件不具有可执行权限

通过 chmod +x 执行后,发现文件依旧不具有可执行权限

这是因为在 windows 下并不需要通过 chomd 进行授权,只需要在文件头添加脚本解释器注释即可。

#!/usr/bin/env sh
echo hello world!

再次查看文件权限,发现已经自动授权。

标签:文件,执行,windows,Windows,Unix,git,授权,权限
From: https://www.cnblogs.com/zi-yang/p/17850248.html

相关文章

  • 对linux下日志文件error监控
    对日志文件中的error进行监控,当日志文件中出现error关键字时,就截取日志(grep-ierror不区分大小写进行搜索"error"关键字,但是会将包含error大小写字符的单词搜索出来),大家可以去看这编文章   1)第一类日志在每天的日志目录下生产的error日志,此日志文件每天都会自动生成,里面有......
  • Windows7下ELectron应用的Input输入框在拼音输入中的失焦问题?
    Windows7下ELectron应用的Input输入框在拼音输入中的失焦问题主要是为了解决虚拟键盘(使用的simple-keyboard)的拼音输入问题(Windows自带的虚拟键盘因为不够方便和美观,所以没有采用;simple-keyboard其实也支持拼音输入,但是更不好用),最后决定通过Koffi(ffi,ffi-napi)调用user32.dll,模拟......
  • C/C++ 实现Windows注册表操作
    Windows注册表(Registry)是Windows操作系统中用于存储系统配置信息、用户设置和应用程序数据的一个集中式数据库。它是一个层次结构的数据库,由键(Key)和值(Value)组成,这些键和值被用于存储各种系统和应用程序的配置信息。以下是注册表的一些基本概念:键(Key):注册表中的数据结构,类似于文......
  • system.map文件中各符号含义
     如下图,红圈圈出来的符号含义是什么? 上述符号可以从该网站找到定义:Binutils-GNUProject-FreeSoftwareFoundation (像编译器的编译选项等也可以在该网站中找到说明) ......
  • windows安装QT时出现“无法下载存档……”解决办法
    参考windows、Ubuntu安装QT时经常出现“无法下载存档……”解决办法-CSDN博客使用国内源安装:清华大学:https://mirrors.tuna.tsinghua.edu.cn/qt/北京理工大学:http://mirror.bit.edu.cn/qtproject/中国互联网络信息中心:http://mirror.bit.edu.cn/qtproject/步骤:在qt的exe......
  • 更改Windows的远程桌面端口
    摘自:https://cloud.tencent.com/developer/article/1557774方法一:工具下载地址:https://pan.baidu.com/s/1Rt3ZFXY0sOD5okeb9VI3_A方法二:命令1.执行以下命令(将以下所有的36970更为新的要更改的端口后再执行):regadd"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control......
  • cer文件如何查看 证书文件查看
    1.选择cer文件,点击安装 2.安装完成后,再次点击该文件,右键打开3.点击复制到文件,然后下一步4.选择base64编码,然后下一步 5.选择保存的文件名,点击下一步即可 6.然后用记事本打开该文件即可看到  翻译搜索复制......
  • U-BOOT分析之顶层Makefile文件
    U-BOOT分析(二)之顶层Makefile文件(1)U-BOOT版本u-boot版本:   u-boot-2021.01.tar.bz2Makefile&&make简介      Makefile:是一个描述文件定义一系列的规则来指定源文件编译的先后顺序,拥有特定的语法规则,makefile文件描述了整个工程中所有文件的__编译顺序,编译规......
  • vue 下载文件并且重命名
    <el-buttontype="primary"@click="xz(scope.row)"size="small">下载</el-button>methods内定义方法xz(row){this.getBlob(row.value,(blob)=>{this.saveAs(blob,row.title)......
  • mujoco安装报错:mujoco_py/gl/eglplatform.h:99:10: fatal error: X11/Xlib.h: 没有那
     安装mujoco报错:mujoco_py/gl/eglplatform.h:99:10:fatalerror:X11/Xlib.h:没有那个文件或目录 修复方法:sudoaptinstalllibx11-dev   ......