如何在汇编 Linux x86 中使用 chmod()?

use*_*325 2 linux permissions x86 assembly chmod

如何使用 chmod() 更改 Assembly linux x86 中的文件权限?我想要汇编中的示例代码,我看到帮助指南,但仍然很难理解

http://man7.org/linux/man-pages/man2/chmod.2.html

int chmod(const char *pathname, mode_t mode);
Run Code Online (Sandbox Code Playgroud)

chmod() 有 2 个 argv ,第一个是路径文件名,第二个是 mod !

路径 /Users/paul/Desktop/file.txt 和 mode_t 模式为: S_ISUID 、 S_ISGID 、 S_ISVTX 、 S_IRUSR 、S_IWUSR

更多内容可以在 url 第一个问题中看到:我需要在 ecx 的变量中设置这些值,或者我必须使用值数字,我必须使用哪个?S_IWGRP 或 00020 #按组写入

第二个问题:我真的这样做了吗?我将它们放入 ecx 并执行相同的操作:

mov eax,15   
mov ebx,mypathfile
mov ecx,S_IWUSR
int 0x80
Run Code Online (Sandbox Code Playgroud)

有人可以给我代码示例吗?

最后一个问题是,如何设置文件的 777 权限(对所有人进行读写执行)?

谢谢。

小智 5

这是完整的程序。这应该可以回答你的问题。

主.asm:

        global _start
        section .text

_start:
        mov eax, 15             ; sys_chmod                                     
        mov ebx, path
        mov ecx, 0777o
        int 0x80

        mov eax, 1              ; sys_exit                                      
        mov ebx, 0
        int 0x80

        section .data

path:   db "file.ext", 0
Run Code Online (Sandbox Code Playgroud)

构建:

nasm -f elf32 -o main.o main.asm
ld -m elf_i386 -o main main.o
Run Code Online (Sandbox Code Playgroud)