
Я экспериментировал с sshfs
намерением получить доступ к каталогу на Synology box и смонтировать его через Terminal. Для этого я использую версию SSHFS, предоставленнуюFUSE для macOSпроект. Настройка следующая:
- каталог на устройстве Synology
/volume1/justnfs
, который необходимо подключить, принадлежитuser1:users
пользователю с идентификатором 1026 и идентификатором группы 100 и содержит каталоги/файлы, принадлежащие только этому пользователю. - на моем ноутбуке пользователь (также
user1
), монтирующий каталог, имеет идентификатор пользователя 501 и идентификатор группы 20 (имя группыstaff
)
Теперь, если я это сделаю,
sshfs -o sshfs_debug syno:/justnfs ./storage
каталог монтируется, тем не менее идентификатор пользователя/идентификатор группы всех файлов не переназначается (как и ожидалось). Чтобы решить эту проблему, я создал два файла с требуемым сопоставлением, а именно users.txt
с user1:1026
и groups.txt
с staff:100
. Затем команда
sshfs -o sshfs_debug -o idmap=file -o uidfile=users.txt -o gidfile=groups.txt syno:/justnfs ./storage
также монтирует удаленный каталог, однако, если я затем переключусь на storage
и сделаю ls
, вывод будет совершенно пустым и dmesg
покажет
osxfuse: fuse_vnop_readdir failed (err=1)
Как ни странно, когда я пытаюсь получить доступ к cat
файлу с известным путем (т. е. напрямую), команда выполняется успешно и отображает содержимое файла. Как будто по какой-то причине не разрешено только перечисление каталогов.
Интересно, что если я укажу uid/gid явно, как
sshfs -o sshfs_debug -o uid=501 -o gid=20 syno:/justnfs ./storage
затем ls
снова работает.
В чем может быть причина того, что последние две команды ведут себя по-разному и/или что невозможно вывести список содержимого каталога?