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

Posted

技术标签:

【中文标题】如何在汇编 linux x86 中使用 chmod()?【英文标题】:How work with chmod() in assembly linux x86? 【发布时间】:2014-08-02 15:33:53 【问题描述】:

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

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

int chmod(const char *pathname, mode_t mode);

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 #write by group

第二个问题:我真的这样做了吗?我把这些放在 ecx 中并执行同样的这个:

mov eax,15   
mov ebx,mypathfile
mov ecx,S_IWUSR
int 0x80

谁能给我代码示例?

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

谢谢。

【问题讨论】:

我找到了如何设置777烫发,请回答我的其他问题 【参考方案1】:

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

main.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

构建:

nasm -f elf32 -o main.o main.asm
ld -m elf_i386 -o main main.o

【讨论】:

以上是关于如何在汇编 linux x86 中使用 chmod()?的主要内容,如果未能解决你的问题,请参考以下文章

如何反汇编原始 16 位 x86 机器代码?

如何在 x86 汇编语言中创建嵌套循环

如何在汇编程序 x86 函数调用中传递参数?

内核基础---AT&T汇编与x86汇编的区别

如何在 x86 汇编中编写自己的 atoi 函数

x86汇编如何查看一个地址的值