elfmz / far2l

Linux port of FAR v2
GNU General Public License v2.0
1.76k stars 173 forks source link

[Feature request] NetRocks & ACL: optional chmod/chown disable for fish/scp/sftp protocols #2257

Open spnethw opened 3 months ago

spnethw commented 3 months ago

Компиляция обсужений из tg-чата (за авторством Dima & @akruphi ).

Чтоб работал ACL inheritance(наследование) критически важно, чтоб любые права создаваемых файлов/каталогов вообще никак не менялись. При использовании ACL любое "прикосновение" к правам напрочь ломает ACL.

Т.е. хорошо бы

akruphi commented 3 months ago

На беглый взгляд внутри OpXfer::Transfer() функция CopyAttributes() вроде вызывается всегда без каких либо условий. Однако уже внутри CopyAttributes() есть проверки https://github.com/elfmz/far2l/blob/ecc75b6bed9b14ac4da167c75dd463a60c9a0726/NetRocks/src/Op/OpXfer.cpp#L454-L456 влияние галочки [ ] Copy attributes that override umask и состояния #define EXTRA_NEEDED_MODE (S_IRUSR | S_IWUSR). В зависимости от них либо доходит до SetMode(), либо нет.

elfmz commented 3 months ago

То есть вообще не делать chmod? Тогда исполняемые файлы таковыми перестанут быть... Хотя в SFTP не перестанут, там ведь режим передается в sftp_open . Кстати это хоть не ломает ничего?

spnethw commented 3 months ago

Dima:

Именно так - не делать ничего. В SFTP тоже ломается. Бог с ним, с execute bit. ACL в данном случае важнее.

elfmz commented 2 months ago

Пока сделал глобальную опцию (изменил umask override на трехпозиционный combobox) тк непонятно как применять такую per-site настройку к файлам при скачивании

akruphi commented 2 months ago

глобальную опцию

Глобальную опцию и не сразу вот так найдёшь (это же надо в Options -> Plugins configuration -> NetRocks options) - быстро из списка NetRocks sites и не доберёшься.

Да и не для всех соединений такое ограничение бывает нужно.

Может для каждого соединения в его настройках добавить индивидуальную версию такой опции - то ли сразу в каждом диалоге Site connection settings, то ли чуть глубже в Extra options ?