Обновить
25

Software Engineer

4
Подписчики
Отправить сообщение
Редактор пусть сохраняет файлы так же как он делал 10 лет назад. Вопрос в том, какие данные сообщать вызовам stat(2) и umask(2), поступившим в WSL от юниксовых утилит, имея на руках только NTFS-метаданные. Правильный ответ — «организовать правила трансляции». Неправильный ответ от Microsoft, чреватый проблемами — «создавать и хранить синтетические метаданные, следя за их целостностью».
Я запутался, о какой ФС идёт речь.

Для ext3 тома решение — сделать для программы примонтирования ext тома настройки «дефолтный uid», «дефолтный gid» и т.д. Примерно как это делается в линуксе в опциях к mount.ntfs, только наоборот.

Для ntfs тома решение — убрать нафиг подход «разваливающееся хранилище метаданных для файлов Linux» и вместо этого ввести в wsl правила трансляции ntfs метаданных в ext метаданные для stat(2) и umask(2) с человеческими дефолтами.
Извиняюсь, я думал, что речь про редактирование файлов на ext3 томе, и все мои ответы были на эту тему. Если речь идёт про файлы на ntfs томе, то у меня впечатление всё то же самое — подход костыльный, какой-то «файл метаданных для линуксовых файлов». Стабильный источник метаданных — файловая система. Не думаю, что для WSL большая проблема ввести вменяемые правила и дефолты для трансляции ntfs-метаданных в данные для системного вызова umask().
Тьфу чёрт, я думал, что речь про редактирование файлов на ext3 томе, и все мои ответы были на эту тему.
Извиняюсь, мы видимо про разные ACL говорили. Я имел в виду POSIX ACL, а они являются расширением.

Если речь про rwxrwxrwx, то ответ на ваш вопрос называется umask.

> Вы понимаете, что файл РЕДАКТИРУЕТСЯ? И, в общем случае, драйвер не может просто взять и оставить ему те же метаданные, которые были раньше?
Что значит «не может оставить»? Именно это и делают все вменяемые файловые системы при редактировании файла. Запись в файловой таблице (inode) для файла останется одной и той же, пишите в него хоть 0 байт, хоть Войну и мир. Меняется количество и адреса блоков с содержимым, но это уже другой вопрос, они не являются метаданными.

> Вот софтина берет, при сохранении удаляет старый файл, и под тем же именем создаёт новый.
В общем случае так не происходит — редактируется старый inode. Если всё же происходит, то вопрос сводится к «какие метаданные выставлять для нового файла?» Это вопрос сложный из-за сложности и количества метаданных, но если бы я был пользователем wsl, мне было бы достаточно грубого решения в первом приближении: «Время доступа взять из системных часов Windows. UID, GID, флаги chmod — спросить в начале у юзера.»
Про ACL речь не шла вообще, это уже опциональная надстройка, они бы хотя бы с голым ext разобрались. Вы бы ещё спросили, как винде взаимодействовать с apparmor или selinux.

Проблема бы решилась так, что эти «метаданные», упомянутые в статье, брались бы драйвером из файловой системы, а не из какого-то внешнего неконсистентного хранилища. Uid и gid для ext раздела можно было бы спрашивать у юзера при подключении тома.
Вам встречный вопрос тот же: вы понимаете суть проблемы? Вы понимаете разницу между содержимым файлов и метаданными?
RIP, клёвый был трекер. Правила там были драконовские, в том числе на оформление vorbis тегов, но зато порядок в тегах и каталогизация были — моё почтение…
Костыль на костыле вместо того, чтобы реализовать нативный драйвер ext3 или btrfs. Впрочем, кто бы сомневался.
Клёвый квест, спасибо)

Но первым же действием после перегрева на убунте должна была быть проверка — воспроизводится ли проблема на любом минимальном линуксе, например на debootstrap-установке дебиана или убунты, или на LiveCD любого дистрибутива. Желательно с как можно более новым ядром. Желательно без systemd. Никаких power profile, демонов и т.д. — выставляем все опции энергосбережения руками в /sys/class и /proc/acpi, максимум через обёртки типа powertop. Если и это не помогло бы, значит всё, только сидеть ждать новых релизов ядра.
> приватность
> мессенджер, использующий идентификацию по номеру телефона

Ну да, ну да

> Спасибо за чтение данного руководства конфиденциальности. Если он вам понравился, нажмите на сердечко ниже, чтобы другие люди могли увидеть это.

Покажите сердечко!
Гораздо больше меня умиляет предложение использовать Gmail.
Даже если бы этой проблемы с RAID не было, ставить Линукс на настолько новые модели ноутбуков — это занятие только для сильных духом)) Я помню, сколько сил убил на Thinkpad Tablet 12 + Debian в 2014 году…
Ни слова о технических подробностях курсов, кроме названий 2 дисциплин (ну и форк-бомбы), зато в статье нашлось место платьям за 15$, выступлениям корейских диджеев и общему пафосу. Я вообще на хабр пришёл?
> Как об этом узнать, не читая man man целенаправленно?

Никак =) Вроде бы такого канонического документа «по общим вопросам» нет.
Самое близкое, что я знаю, — это проект tldp.org. Но, как правило, по конкретной утилите или системному компоненту в интернете всегда можно быстро найти хороший вводный курс. Я сам грешен тем, что вместо мануалов порой гуглю быстрые howto от сторонних авторов.
Как бы безмерно я ни уважал идеи RMS, но как человек он от этики весьма далёк.

Это вообще какая-то дикость: человек, которого часто называют хакером (в изначальном смысле), придумавший GDB и Emacs и который вроде как в силу своих знаний и опыта должен быть сверхадекватен в суждениях в области IT, выдаёт полные субъективизма и самомнения детсадовские суждения «какой язык типа самый лучший» в своём мирке, где видимо только Си и Лисп:

> Самый мощный язык программирования это Lisp. Если вы не знаете Lisp (или его вариант, схему), вы не знаете, что имеется в виду, когда говорят о мощности и элегантности языка программирования. Однажды вы выучите Lisp и поймете чего не хватает в других языках программирования.

Он вообще знаком хотя бы на уровне «слышал» с Haskell, Coq, Agda? С концепцией pattern matching, с выводом типов, с тем фактом, что функциональное программирование не закончило прогрессировать на Лиспе? Он хотя бы может предположить, что может чего-то не знать, в чём-то не разбираться?

Lisp красивый, но есть и красивее, не говоря уже о том, что Lisp — это целое семейство диалектов, среди которого есть и уродцы вроде Emacs Lisp. (+ мне кажется, RMS под слово Lisp понимает Common Lisp).
Вагон-то вагон, но этот вагон будет действовать до первого небольшого изменения в вёрстке. nth-child=2? Вставят рекламу как nth-child=3 и нет больше блокировки. И внести изменения в алгоритм вставки рекламных блоков значительно легче и быстрее, чем реализовать ответ на это на стороне блокировщика. Не говоря уже о том, что с точки зрения пользователя весь процесс будет выглядеть как «мой блокировщик рекламы периодически не работает».
sudo apt-get install poppler
pdftotext input.pdf output.txt

</thread>
Да, «область стадий» мощно перевели))

Информация

В рейтинге
Не участвует
Откуда
Ирландия
Зарегистрирован
Активность