![chmod +x:影响一个操作系统或所有操作系统中的文件](https://linux22.com/image/131408/chmod%20%2Bx%EF%BC%9A%E5%BD%B1%E5%93%8D%E4%B8%80%E4%B8%AA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E6%88%96%E6%89%80%E6%9C%89%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6.png)
例如,我有一个名为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 引入远程存储不支持执行标志)。
如果仍然可执行,那么为什么人们在发送到其他地方之前不使其可执行呢?
也许有些人知道它的行为,因此不会以这种方式引入。