Linux 为什么我要获得这些文件权限?
我编写了一个汇编代码,在其中创建了一个目录和一个文件,它们被创建了,但拥有奇怪的权限-目录是Linux 为什么我要获得这些文件权限?,linux,assembly,permissions,x86-64,system-calls,Linux,Assembly,Permissions,X86 64,System Calls,我编写了一个汇编代码,在其中创建了一个目录和一个文件,它们被创建了,但拥有奇怪的权限-目录是drwxrwxrwx,文件是-r-xr-xr-x 据我所知,更改模式参数可以将文件权限更改为777,但我没有找到更改方式和结果的模式。(777或555) umask设置为0002 为什么我要获得该目录的完全权限?是什么原因导致该文件具有这些权限?我如何更改权限 我使用这两行代码来编译和链接: nasm run.s -f elf64 -o run.o ld run.o -o run 我使用Ubuntu而不
drwxrwxrwx
,文件是-r-xr-xr-x
据我所知,更改模式
参数可以将文件权限更改为777,但我没有找到更改方式和结果的模式。(777或555)
umask
设置为0002
为什么我要获得该目录的完全权限?是什么原因导致该文件具有这些权限?我如何更改权限
我使用这两行代码来编译和链接:
nasm run.s -f elf64 -o run.o
ld run.o -o run
我使用Ubuntu而不是VMWare
代码:
战略:
$ strace ./run
execve("./run", ["./run"], [/* 63 vars */]) = 0
mkdir("mynewdir", 0) = 0
chdir("mynewdir") = 0
creat("mynewfile", 0) = 3
exit(0) = ?
+++ exited with 0 +++
为未来用户添加答案:
显然,出现意外结果的原因是,该程序在具有特殊权限设置(VMWare默认设置)的共享主机目录中运行。
考虑到umask,当我在常规目录中运行此命令时,我会得到预期的结果。为未来用户添加答案:
显然,出现意外结果的原因是,该程序在具有特殊权限设置(VMWare默认设置)的共享主机目录中运行。
考虑到umask,当我在常规目录中运行时,我得到了预期的结果。这看起来是正确的。这是什么汇编程序?在我的系统上,这似乎可以正常工作,除了
mynewdir
是使用权限0000创建的,因此chdir
失败(执行错误检查!)。这真的是你测试的程序吗?@fuz谢谢,我在问题中添加了这些信息。而在我的身上却没有。我刚刚重新执行了它,它也执行了同样的操作。你能为我发布“strace run”的输出吗?通常你会传递octal0777
以获得权限,从而让umask屏蔽位。您使用的Linux内核版本是什么?也许在您的版本和fuz的内核版本之间,mode=0
的处理发生了变化?绝对是poststrace
输出。这看起来是正确的。这是什么汇编程序?在我的系统上,这似乎可以正常工作,除了mynewdir
是使用权限0000创建的,因此chdir
失败(执行错误检查!)。这真的是你测试的程序吗?@fuz谢谢,我在问题中添加了这些信息。而在我的身上却没有。我刚刚重新执行了它,它也执行了同样的操作。你能为我发布“strace run”的输出吗?通常你会传递octal0777
以获得权限,从而让umask屏蔽位。您使用的Linux内核版本是什么?也许在您的版本和fuz的内核版本之间,mode=0
的处理发生了变化?明确地发布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 +++