Почему для создания файла в C (Linux) необходимы разрешения на выполнение и разрешения на запись?

Почему для создания файла в C (Linux) необходимы разрешения на выполнение и разрешения на запись?

Я пытаюсь создать файл из моего исходного кода C на Linux. Я использую ddкоманду для чтения из файла и записи его в файл, создавая его. Если у меня нет прав на выполнение (у меня есть права на запись) для целевого каталога (где будет создан файл), он не сможет создать файл. Если у меня есть и права на запись, и на выполнение, он сможет создать файл.

Что является причиной этого?

решение1

Если установлены атрибуты режима r, w и x, они оказывают следующее влияние на файлы и каталоги:

  • Атрибут r (разрешение на чтение):

Файлы:Позволяет файлу бытьоткрылсяичитать.

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

  • Атрибут w (разрешение на запись):

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

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

  • Атрибут x (разрешение на выполнение):

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

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

Ссылка: Командная строка Linux® Уильям Э. Шоттс-младший.

Я бы рекомендовал прочитать эту книгу или ее PDF-версию, которую вы можете скачать по этой ссылке:http://sourceforge.net/projects/linuxcommand/files/TLCL/13.07/TLCL-13.07.pdf/download

решение2

Бит выполнения в каталоге дает вам возможность войти/обойти его. Поэтому в вашем случае также необходимо создать файл (иначе вы сможете в него войти).

Связанный контент