Хорошо, позвольте мне уточнить: вы не «монтировали fuse», вы использовали программу-пример fusexmp
, которая является очень простой программой fuse, которая просто передает все операции стандартным вызовам библиотеки Linux. Это просто пример программы, и очень скучная.
Вы не сказали, под каким пользователем вы выполняли эту операцию монтирования, но я предполагаю, что вы сделали это как root
(потому что иначе allow_other
не сработало бы и не создало бы testfile
с владельцем root
). Обратите внимание, что в принципе вы можете монтировать файловые системы FUSE как любой пользователь.
Поэтому, когда test
пользователь выполнил touch
, сначала он открыл файл в файловой системе, смонтированной на предохранителе. Поскольку вы использовали default_permissions
, система проверила test
, разрешено ли пользователю создавать файлы в этом конкретном каталоге (что, по-видимому, успешно), и затем позволила fusexmp
создать файл. Как fusexmp
работает root
, этот файл был создан как root
.
Далее touch
хотел установить дату. Поскольку вы использовали default_permissions
, система проверила test
, разрешено ли пользователю устанавливать дату для этого конкретного файла. Это не так, поэтому система прервалась с ошибкой разрешения, независимо от того, сможет ли программа на fusexmp
самом деле установить дату (которую она будет выполнять от имени пользователя root).
Я до сих пор не уверен в том, в чём смысл этого упражнения: вы использовали необычную программу примера, а затем поинтересовались результатами. Если вы дадите default_permissions
, то вам также следует убедиться, что ваша пользовательская программа создает файлы с правильным владельцем и т. Д. ( fusexmp
Что не так).
Если вы хотите понять файловые системы fuse с точки зрения пользователя, я предлагаю вам поэкспериментировать с реальными примерами, такими как sshfs . Или напишите свою собственную программу-предохранитель и самостоятельно обрабатывайте разрешения и т. Д.