Клуб API Диска

Корректный перенос прав Linux-клиентом

17 февраля, 22:27

Консольный клиент для Linux успешно отлавливает момент изменения прав на файлы, однако при синхронизации права ставятся в соответствии с содержащий файл папки. Права на исполнения вовсе трутся.

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

Я понимаю, что с windows все запущено - там posix права - только с костылями поддерживается, там своя кухня с правами. И скорее всего выработать совместимую модель для Linux и windows не удастся. Но можно же сохранять права в разных форматах, и уже на клиенте решать какой вариант прав применять к фалам на данной конкретной машине.

2 комментария
Права, о которых вы говорите, зависят от пользователя ОС.
Возможно, что на разных компьютерах залогинены совсем разные пользователи ОС. Например, на работе у меня доменный пользователь, а дома локальный.
Так как Яндекс.Диск не требует от вас никакой информации про пользователей ОС, задача, похоже, не имеет решения.
sponkratov73, 

У меня два компьютера на обоих стоит клиент синхронизации, в синхронизируемой папке у меня есть проекты с github, и git-у права важны, а клиент синхронизации их режет. Приезжаю с работы домой и в проекте - куча измененных файлов (изменены права - файлы необходимо снова менять что бы они не попали в коммит, да и что бы проект оставался работоспособным).
И фигня вопрос, когда это маленький проект.
А вот большой проект, в котором права слетают у пары сотен файлов (из около тысячи в проекте) в разных папках - это уже серьезная проблема.

И вот смотрите - каталог мой, и тот и другой, облако служит промежуточным звеном, и это промежуточное звено почему-то съедает некоторые атрибуты файлов. На мой взгляд - это просто неприемлемо.

Насчет решения задачи - оно есть, и я уже даже реализовал это своем неофициальном клиенте синхронизации (https://github.com/slytomcat/yandex-disk-client - пока еще не закончен). Реализовано через хранение прав в пользовательских свойствах файла/каталога (custom_properties).

Причем тут пользователи - я вообще не очень понимаю. Сейчас какой-там пользователь yandex-disk-у - фиолетово, он права берет как у вышестоящего каталога. Но только при этом права на запуск (x в POSIX нотации) безжалостно режутся при этом. Достаточно при записи/обновлении файла сохранить число соответствующее битам прав (rwxrwxrwx) в custom_properties, а при скачивании восстановить. Пользователя при этом менять не обязательно.
Для windows можно сделать аналогично, при этом даже если права для виндового клиента просто кладем рядом (в другое значение) и виндовые права синхронизируем только между виндовыми машинами nix-овые права - только между nix-овыми машинами.
Обновлено 1 марта, 21:14