程序可执行文件标记为只读

Ind*_*mer 1 c file-permissions segmentation-fault

我正在阅读关于分段错误的维基百科,并通过以下代码和语句来完成.

int main(void)
 {
     char *s = "hello world";
     *s = 'H';
 }
Run Code Online (Sandbox Code Playgroud)

当编译包含此代码的程序时,字符串"hello world"被放置在标记为只读的程序可执行文件的部分中; 加载时,操作系统将其与其他字符串和常量数据放在只读的内存段中.执行时,变量s设置为指向字符串的位置,并尝试通过变量将H字符写入内存,从而导致分段错误.使用编译器编译此类程序,该编译器不会在编译时检查只读位置的分配.

我的问题是文件权限,即当可执行文件标记为只读和读写时等等?

我想知道关于文件权限的所有信息.我们可以明确地更改文件权限吗?

Ven*_*nge 5

"hello world"存储在内存的只读部分.写入可执行文件内存的给定部分的能力与写入磁盘上可执行文件的能力无关.