我知道当我运行命令时
chmod +x filename
bash 将使我的文件成为可执行文件。将文件的体系结构更改为可执行文件究竟会发生什么?即内核如何知道这个文件是可执行的?
只是想锻炼我的书呆子肌肉。
文件的“架构”不会改变——确保它具有正确的格式取决于您。也就是说,该文件已经需要是一个有效的 ELF 二进制文件,或者一个带有有效#!
头文件的脚本,或者你的特定内核可以识别的其他东西(比如 a.out 或 MZ/PE)。
什么chmod
不只是设置一个位文件的权限,告诉用户是在内核允许执行此文件。它可以作为一个小的安全屏障,以及防止某些类型的事故。(请注意,+x
这里是 的简写ugo+x
;它就像读/写一样是一个权限位。)
如果在内核无法识别的文件上设置 +x,它只会从exec
系统调用返回错误代码。(请注意,某些 shell 对此有特殊处理——如果内核报告“无法识别的格式”,则 shell 将尝试在内部将文件解释为脚本,因为这#!
就是发明之前 shellscript 的工作方式。)
归档时间: |
|
查看次数: |
260 次 |
最近记录: |