作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我编写了一个汇编代码来创建目录和其中的文件,它们已创建但具有奇怪的权限 - 目录是 drwxrwxrwx
文件是 -r-xr -xr-x
。
据我所知,更改 mode
参数可以将文件权限更改为 777,但我没有找到更改方式和结果的模式。 (它是 777 或 555)。
umask
设置为 0002
。
为什么我得到了目录的全部权限?是什么导致了文件的这些权限?以及如何更改权限?
我使用这两行来编译和链接:
nasm run.s -f elf64 -o run.o
ld run.o -o run
我使用 Ubuntu 而不是 VMWare。
代码:
section .data
dir_name: db 'mynewdir', 0
dir_mode equ 0
file_name: db 'mynewfile', 0
file_mode equ 0
section .text
global _start
_start:
mov rdi, dir_name
mov rsi, dir_mode
mov rax, 83 ; sys_mkdir
syscall
mov rdi, dir_name
mov rax, 80 ; sys_chdir
syscall
mov rdi, file_name
mov rsi, file_mode
mov rax, 85 ; sys_creat
syscall
mov rdi, 0
mov rax, 60 ; sys_exit
syscall
斯特拉斯:
$ strace ./run
execve("./run", ["./run"], [/* 63 vars */]) = 0
mkdir("mynewdir", 0) = 0
chdir("mynewdir") = 0
creat("mynewfile", 0) = 3
exit(0) = ?
+++ exited with 0 +++
最佳答案
为 future 的用户添加答案:
显然,出现意外结果的原因是该程序在具有特殊权限设置(VMWare 默认设置)的共享主机目录中运行。
当我在常规目录中运行它时,考虑到 umask,我得到了预期的结果。
关于linux - 为什么我会获得这些文件权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46897875/
我是一名优秀的程序员,十分优秀!