Как создать каталог с разрешениями 777? - PullRequest
0 голосов
/ 07 декабря 2018

Я хочу создать каталог с разрешением 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 голосов
/ 07 декабря 2018

Вот man 2 mkdir:

Аргумент mode указывает режим для нового каталога (см. Inode (7)).Он изменяется с помощью umask процесса обычным способом: при отсутствии ACL по умолчанию, режим создаваемого каталога: (mode & ~umask & 0777).

По сути, ваша программа и ваш пользователь могут наложить вето.каждый бит разрешения:

  • Вы можете сказать, какие биты вам удобны, передав их mkdir
  • Пользователь может сказать, какие биты ему удобны, установив umask
  • В конечном каталоге будут установлены только те биты, с которыми вы оба согласны.

Поэтому:

  • Если вы запустите umask 0000 перед запуском вашей программы ваш каталог будет 0777.

  • Если вы запустите umask 0027, ваш каталог будет 0750.

  • Если вы хотите, чтобы ваш каталог был 777 вопреки желанию пользователя, вам нужно chmod("somename", 0777) в отдельном шаге.

...