Каковы правильные разрешения при "sys_open" в файле? - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь прочитать содержимое файла, используя сборку x86 в Linux.Вопрос в том, что мы должны поместить в edx - регистр «разрешений» для sys_open.

Я использовал open() из C раньше;но не было никакого поля "разрешений".Я пытаюсь прочитать файл принадлежит тому же владельцу исполняемого файла.Права доступа к файлу установлены на 0400 (-r--------).Я попытался открыть файл с помощью edx: пусто (0), 0666 и 0400.Все они возвращают "-13" в eax, который выглядит как EACCES.

Пример кода:

mov eax, 0x5;     //sys_open
push 0x6362612f //file name in hex, let's say "/abc"
mov ebx, esp;     //filename to ebx
xor ecx, ecx;     //O_RDONLY
mov edx, 0666o;   //permissions in octal for nasm
int 0x80;         //call it

Что должно быть edx, чтобы открыть файл,вообще (или в этом случае только для чтения)?Текущие права доступа к файлу, пустой, произвольный?

Спасибо!

1 Ответ

0 голосов
/ 10 февраля 2019

man 2 open :

, если не указаны ни O_CREAT, ни O_TMPFILE, режим игнорируется.

Как таковой он ненезависимо от того, что вы положили в edx, если вы открываете существующий файл для чтения.Причина ваших проблем в другом.

...