Я пытаюсь создать файл из моего исходного кода 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
Бит выполнения в каталоге дает вам возможность войти/обойти его. Поэтому в вашем случае также необходимо создать файл (иначе вы сможете в него войти).