chmod +x:影响一个操作系统或所有操作系统中的文件

chmod +x:影响一个操作系统或所有操作系统中的文件

例如,我有一个名为run.sh.我想让这个文件可执行,所以我运行:

chmod +x run.sh

我的问题是:

  • 该命令使该文件可执行。那么,如果我将此文件带到不同的操作系统,它仍然可执行吗?
  • 如果仍然可执行,那么为什么人们在发送到其他地方之前不使其可执行呢?

我问这个,因为当我在 Docker 环境上测试时,我发现:我在主机环境上使文件可执行会受到 docker 环境的影响。

谢谢

答案1

文件的权限保留在磁盘上,因此当您设置文件的可执行位时,它会存储在磁盘上。如果您通过移动磁盘或只是启动不同的操作系统来“将文件带到另一个操作系统”,则该文件的元数据将是相同的。

但是,如果你说的“带来”是指某些操作,例如scp或其他文件传输机制,那么这些通常不是默认情况下,会携带元数据,例如修改时间或权限。你可以用例如来做到这一点scp -p。从手册:

 -p      Preserves modification times, access times, and modes from the original file.

这里的“模式”就是通常所说的权限(实际上,chmod毕竟是“更改模式”的缩写)。假设复制操作目的地的文件系统知道如何处理这些元数据,它在新主机上仍然具有相同的权限。

答案2

那么,如果我将此文件带到不同的操作系统,它仍然可执行吗?

这将取决于引入的方式(即,将 FS 引入远程存储不支持执行标志)。

如果仍然可执行,那么为什么人们在发送到其他地方之前不使其可执行呢?

也许有些人知道它的行为,因此不会以这种方式引入。

相关内容