我编写了一个汇编代码来创建一个目录和一个文件,并且它们已经创建但具有奇怪的权限 - 目录是drwxrwxrwx
,文件是-r-xr-xr-x
。
据我所知,更改mode
参数可以将文件权限更改为777,但我没有找到更改方式和结果的模式。 (这是777或555)。
umask
设置为0002
。
为什么我获得该目录的完全权限?什么原因导致文件的这些权限?我该如何更改权限?
我使用这两行来编译和链接:
nasm run.s -f elf64 -o run.o
ld run.o -o run
我在VMWare上使用Ubuntu。
代码:
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的:
$ strace ./run
execve("./run", ["./run"], [/* 63 vars */]) = 0
mkdir("mynewdir", 0) = 0
chdir("mynewdir") = 0
creat("mynewfile", 0) = 3
exit(0) = ?
+++ exited with 0 +++
答案 0 :(得分:0)
为将来的用户添加答案:
显然,出现意外结果的原因是程序在具有特殊权限设置的共享主机目录(VMWare默认值)中运行。
当我在常规目录中运行它时,我得到了我期望的结果,考虑到umask。