如何创建具有777权限的目录?

时间:2018-12-07 00:26:44

标签: linux assembly directory x86-64 umask

我要创建具有777权限的目录。

下面的代码创建目录,但没有我要求的权限。

section .text
global _start:
_start:
             mov rax,83 ;syscall number for directory
             mov rdi,chaos ; dir name
             mov esi,00777Q ;permissions for directory
             syscall
             mov rax,60
             mov rdi,0
             syscall
section .data
           chaos:db 'somename'

1 个答案:

答案 0 :(得分:2)

这里是man 2 mkdir

  

参数mode指定新目录的模式(请参见inode(7))。进程的umask会以通常的方式对其进行修改:在没有默认ACL的情况下,创建的目录的模式为(mode & ~umask & 0777)

基本上,您的程序和用户都可以否决每个权限位:

  • 您可以将它们传递给mkdir
  • 用户可以通过设置umask
  • 来说出自己喜欢的位
  • 只有你们双方同意的位才会在最终目录中设置。

因此:

  • 如果在运行程序之前运行umask 0000,则目录将为0777

  • 如果运行umask 0027,则目录将为0750

  • 如果要违反用户的意愿将目录设置为777,则必须在单独的步骤中chmod("somename", 0777)