我正在尝试在 Linux 上使用 x86 程序集读取文件的内容。问题是,我们应该将什么放入 edx
- sys_open 的“权限”寄存器。
我以前用过C的open()
;但没有任何“权限”字段。我正在尝试读取属于可执行文件同一所有者的文件。该文件的权限设置为 0400
(-r--------
)。我试过用 edx
打开文件:空 (0)、0666
和 0400
。它们都将“-13”返回给 eax
,这似乎是 EACCES
。
示例代码:
mov eax, 0x5; //sys_open
push 0x6362612f //file name in hex, let's say "/abc"
mov ebx, esp; //filename to ebx
xor ecx, ecx; //O_RDONLY
mov edx, 0666o; //permissions in octal for nasm
int 0x80; //call it
一般情况下(或在这种只读情况下)edx
应该是什么来打开一个文件?文件的当前权限,空的,任意的?
谢谢!
最佳答案
if neither O_CREAT nor O_TMPFILE is specified, then mode is ignored.
因此,如果您打开现有文件进行阅读,那么在 edx
中放入什么并不重要。你的问题的原因是别的。
关于linux - "sys_open"文件时正确的权限是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54609695/