Re[5]: Аналог виндовой ProgramData в Linux
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 26.07.20 09:17
Оценка: +2
Здравствуйте, rudzuk, Вы писали:

R>Приложение работает с большим объемом данных, которые, на начальном этапе, загружаются из интернет.


Тогда было бы правильнее иметь независимую службу (демон), загружающую/обновляющую эти данные. Делать это непосредственно из приложения допустимо лишь в том случае, когда все без исключения пользователи системы (и локальные, и сетевые) являются доверенными, и никак не могут навредить.
Re[10]: Аналог виндовой ProgramData в Linux
От: rudzuk  
Дата: 26.07.20 11:03
Оценка: -1 :)
Здравствуйте, vsb, Вы писали:

vsb> Создайте инсталлятором папку /var/cache/myprogram и дайте ей нужные права, хоть 777 (но лучше 770 и создать отдельную группу для пользователей вашей программы).


Софт распространяется в виде appimage, инсталлятора нет.
avalon/3.0.0
Re[6]: Аналог виндовой ProgramData в Linux
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 26.07.20 15:43
Оценка: 9 (1)
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Тогда было бы правильнее иметь независимую службу (демон), загружающую/обновляющую эти данные. Делать это непосредственно из приложения допустимо лишь в том случае, когда все без исключения пользователи системы (и локальные, и сетевые) являются доверенными, и никак не могут навредить.


Не обязательно. Даже со стандартными правами ugo*rwx можно делать следующее:
1. Все пользователи, участвующие в данном хранилище, входят в назначенную группу — и только она будет иметь соответствующие права.
2. Все операции по созданию файлов и каталогов в хранилище сопровождаются chgrp() на эту группу.
3. Все операции по созданию файлов и каталогов в хранилище выставляют права g+rw для файлов и g+rwx для каталогов. (Можно это сделать через umask(2) перед такими операциями.)

Да, тут потребуется дисциплина доступа, но это для данной ситуации явно не страшно.

С расширенными ACL, которые сейчас чуть менее, чем везде, можно делать то же самое и ещё больше.

Вариант с демоном неплох по-своему, но можно и без него.
The God is real, unless declared integer.
Re: Аналог виндовой ProgramData в Linux
От: kov_serg Россия  
Дата: 26.07.20 07:07
Оценка: -1
Здравствуйте, rudzuk, Вы писали:

R>Куда в линуксе принято сохранять разделяемые между локальными пользователями изменяемые данные приложения? В Windows эту задачу решает ProgramData, а в линуксе? FHS смотрел, но ничего похожего не нашел

/usr/share
/usr/local/share
Re[9]: Аналог виндовой ProgramData в Linux
От: vsb Казахстан  
Дата: 26.07.20 10:41
Оценка: +1
Здравствуйте, rudzuk, Вы писали:

R>В /var/cache доступа на запись нет.


Создайте инсталлятором папку /var/cache/myprogram и дайте ей нужные права, хоть 777 (но лучше 770 и создать отдельную группу для пользователей вашей программы).
Отредактировано 26.07.2020 10:41 vsb . Предыдущая версия .
Re[4]: Аналог виндовой ProgramData в Linux
От: σ  
Дата: 26.07.20 23:10
Оценка: +1
_>/usr/local/share/myapp/cache
_>/usr/local/share/myapp/data



Хватит пропагандировать бредятину. Для данных приложения — /var/lib/myapp, для кэша — /var/cache/myapp.

> /usr is shareable, read-only data. That means that /usr should be shareable between various FHS-compliant hosts and must not be written to. Any information that is host-specific or varies with time is stored elsewhere.

https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch04.html#purpose18
Отредактировано 26.07.2020 23:12 σ . Предыдущая версия .
Re: /var/cache/appname
От: VladCore  
Дата: 27.07.20 02:40
Оценка: +1
Здравствуйте, rudzuk, Вы писали:

R>Куда в линуксе принято сохранять разделяемые между локальными пользователями изменяемые данные приложения? В Windows эту задачу решает ProgramData, а в линуксе? FHS смотрел, но ничего похожего не нашел


как же не нашел? 3ю версию смотрел или вторую?

4.9.4
неизменяемые — /usr/local/share (для программ не из дистрибутива), /usr/share — только для программ из дистрибутива

5.
изменяемые — /var/lib, /var/opt, /var/cache, /var/share

если тебе данные можно загрузить из интернета, то /var/cache/appname
если нужно что бы при backup системы сохранялись, то /var/lib/appname
Отредактировано 27.07.2020 2:43 VladCore . Предыдущая версия .
Аналог виндовой ProgramData в Linux
От: rudzuk  
Дата: 25.07.20 23:00
Оценка:
Куда в линуксе принято сохранять разделяемые между локальными пользователями изменяемые данные приложения? В Windows эту задачу решает ProgramData, а в линуксе? FHS смотрел, но ничего похожего не нашел
avalon/3.0.0
Re[2]: Аналог виндовой ProgramData в Linux
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 26.07.20 07:16
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>/usr/share

_>/usr/local/share

Тут надо добавить, что эти каталоги доступны на запись только аккаунтам с повышенными правами, рядовые пользователи могут только читать (и это правильно). Если какой-то код или данные нужно разделять на чтение между пользователями, то внести их туда должен администратор при установке/настройке. А в винде ProgramData — в первую очередь неконтролируемая свалка для приложений, сделанных раздолбаями, которые до сих пор не научились правильно организовывать доступ, и лишь в последнюю — средство для разделения данных между пользователями.
Re[2]: Аналог виндовой ProgramData в Linux
От: σ  
Дата: 26.07.20 07:29
Оценка:
_>/usr/share
_>/usr/local/share

/var/lib
Re[2]: Аналог виндовой ProgramData в Linux
От: rudzuk  
Дата: 26.07.20 08:35
Оценка:
Здравствуйте, kov_serg, Вы писали:

k> R>Куда в линуксе принято сохранять разделяемые между локальными пользователями изменяемые данные приложения? В Windows эту задачу решает ProgramData, а в линуксе? FHS смотрел, но ничего похожего не нашел


k> /usr/share

k> /usr/local/share

У обычного юзера нет прав на запись сюда, а данные приложения изменяемые. Хочется избежать дублирования большого объема данных. Софт распространяется в виде appimage.
avalon/3.0.0
Re[3]: Аналог виндовой ProgramData в Linux
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 26.07.20 08:44
Оценка:
Здравствуйте, rudzuk, Вы писали:

k>> /usr/share

k>> /usr/local/share

R>У обычного юзера нет прав на запись сюда, а данные приложения изменяемые.


А какова вообще модель разделения данных между пользователями? Если это для совместной работы в группе, то и общий каталог нужно делать для группы, с соответствующими правами доступа. Если же это нечто вроде свалки "для всех" (в том числе и сетевых гостей), то действительно ли это вытекает из логики работы приложения?
Re[4]: Аналог виндовой ProgramData в Linux
От: rudzuk  
Дата: 26.07.20 09:14
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ> R>У обычного юзера нет прав на запись сюда, а данные приложения изменяемые.


ЕМ> А какова вообще модель разделения данных между пользователями? Если это для совместной работы в группе, то и общий каталог нужно делать для группы, с соответствующими правами доступа. Если же это нечто вроде свалки "для всех" (в том числе и сетевых гостей), то действительно ли это вытекает из логики работы приложения?


Приложение работает с большим объемом данных, которые, на начальном этапе, загружаются из интернет. В процессе работы, приложение эти данные не изменяет, но, иногда, загружает обновления для них. Сейчас данные хранятся в ~/.local/share/appname, но очень хочется избежать дублирования данных, когда приложение используется несколькими локальными пользователями.
avalon/3.0.0
Re[5]: Аналог виндовой ProgramData в Linux
От: Михaил  
Дата: 26.07.20 09:22
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Здравствуйте, Евгений Музыченко, Вы писали:


ЕМ>> R>У обычного юзера нет прав на запись сюда, а данные приложения изменяемые.


ЕМ>> А какова вообще модель разделения данных между пользователями? Если это для совместной работы в группе, то и общий каталог нужно делать для группы, с соответствующими правами доступа. Если же это нечто вроде свалки "для всех" (в том числе и сетевых гостей), то действительно ли это вытекает из логики работы приложения?


R>Приложение работает с большим объемом данных, которые, на начальном этапе, загружаются из интернет. В процессе работы, приложение эти данные не изменяет, но, иногда, загружает обновления для них. Сейчас данные хранятся в ~/.local/share/appname, но очень хочется избежать дублирования данных, когда приложение используется несколькими локальными пользователями.


Звучит как кандидат для /var/caches/ или /var/tmp
Re[6]: Аналог виндовой ProgramData в Linux
От: rudzuk  
Дата: 26.07.20 09:34
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ> Тогда было бы правильнее иметь независимую службу (демон), загружающую/обновляющую эти данные. Делать это непосредственно из приложения допустимо лишь в том случае, когда все без исключения пользователи системы (и локальные, и сетевые) являются доверенными, и никак не могут навредить.


Навредить не реально, данные имеют цифровую подпись.
avalon/3.0.0
Re[6]: Аналог виндовой ProgramData в Linux
От: rudzuk  
Дата: 26.07.20 09:39
Оценка:
Здравствуйте, Михaил, Вы писали:

М> R>Приложение работает с большим объемом данных, которые, на начальном этапе, загружаются из интернет. В процессе работы, приложение эти данные не изменяет, но, иногда, загружает обновления для них. Сейчас данные хранятся в ~/.local/share/appname, но очень хочется избежать дублирования данных, когда приложение используется несколькими локальными пользователями.


М> Звучит как кандидат для /var/caches/ или /var/tmp


Обе локации не гарантируют длительного хранения.
avalon/3.0.0
Re[7]: Аналог виндовой ProgramData в Linux
От: Михaил  
Дата: 26.07.20 10:03
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Здравствуйте, Михaил, Вы писали:


М>> R>Приложение работает с большим объемом данных, которые, на начальном этапе, загружаются из интернет. В процессе работы, приложение эти данные не изменяет, но, иногда, загружает обновления для них. Сейчас данные хранятся в ~/.local/share/appname, но очень хочется избежать дублирования данных, когда приложение используется несколькими локальными пользователями.


М>> Звучит как кандидат для /var/caches/ или /var/tmp


R>Обе локации не гарантируют длительного хранения.


если пользователь вручную не удалит, они никуда не денутся. как и с програмдата
Re[8]: Аналог виндовой ProgramData в Linux
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 26.07.20 10:21
Оценка:
Здравствуйте, Михaил, Вы писали:

М>>> Звучит как кандидат для /var/caches/ или /var/tmp


R>>Обе локации не гарантируют длительного хранения.


М>если пользователь вручную не удалит, они никуда не денутся. как и с програмдата


/var/tmp обычно чистится по крону.
The God is real, unless declared integer.
Re[8]: Аналог виндовой ProgramData в Linux
От: rudzuk  
Дата: 26.07.20 10:23
Оценка:
Здравствуйте, Михaил, Вы писали:

М> М>> Звучит как кандидат для /var/caches/ или /var/tmp


М> R>Обе локации не гарантируют длительного хранения.


М> если пользователь вручную не удалит, они никуда не денутся. как и с програмдата


Про /var/tmp написано:

Although data stored in /var/tmp is typically deleted in a site-specific manner, it is recommended that deletions occur at a less frequent interval than /tmp.

То есть, вероятность удаления не нулевая.

В /var/cache доступа на запись нет.
avalon/3.0.0
Re[7]: Аналог виндовой ProgramData в Linux
От: ononim  
Дата: 26.07.20 10:36
Оценка:
R>Навредить не реально, данные имеют цифровую подпись.
И прям стопроцентов уверены что проверка не уязвима например к TOCTOU?
А если например какой нить злой юзер положит ковявые файлы или пермишены на них. Все остальные смогут работать или таки DoS атака окажется успешной?
Как много веселых ребят, и все делают велосипед...
Re[8]: Аналог виндовой ProgramData в Linux
От: vsb Казахстан  
Дата: 26.07.20 10:43
Оценка:
Здравствуйте, ononim, Вы писали:

R>>Навредить не реально, данные имеют цифровую подпись.

O>И прям стопроцентов уверены что проверка не уязвима например к TOCTOU?

Сначала читаем в память, потом проверяем и потом используем из памяти.

O>А если например какой нить злой юзер положит ковявые файлы или пермишены на них. Все остальные смогут работать или таки DoS атака окажется успешной?


Загружаем заново и кладём на нужное место. Злой юзер сможет потратить трафик.

Вообще защищаться от злого юзера — тухлое дело. Защищаться надо от глупого юзера. Который что-то по ошибке может сделать. Например почистить эти самые кеши какой-нибудь кривой командой вроде echo > /var/caches/myprogram/download000.dat А если он реально злой — тут вы, скорей всего, уже проиграли. Потому, что он заюзает какой-нибудь local escalation exploit которых слишком много, чтобы считать их теоретическими и вот уже он злой root.
Отредактировано 26.07.2020 10:46 vsb . Предыдущая версия . Еще …
Отредактировано 26.07.2020 10:45 vsb . Предыдущая версия .
Re[8]: Аналог виндовой ProgramData в Linux
От: rudzuk  
Дата: 26.07.20 11:03
Оценка:
Здравствуйте, ononim, Вы писали:

o> R>Навредить не реально, данные имеют цифровую подпись.


o> И прям стопроцентов уверены что проверка не уязвима например к TOCTOU?


Прям уверены.

o> А если например какой нить злой юзер положит ковявые файлы или пермишены на них. Все остальные смогут работать или таки DoS атака окажется успешной?


Задачи оборонятся от пользователя нет. Пользователь достаточно хорошо мотивирован.
avalon/3.0.0
Re[9]: Аналог виндовой ProgramData в Linux
От: ononim  
Дата: 26.07.20 11:13
Оценка:
o>> И прям стопроцентов уверены что проверка не уязвима например к TOCTOU?
R>Прям уверены.
ну если уверены тогда ладно

o>> А если например какой нить злой юзер положит ковявые файлы или пермишены на них. Все остальные смогут работать или таки DoS атака окажется успешной?

R>Задачи оборонятся от пользователя нет. Пользователь достаточно хорошо мотивирован.
тогда логиньте всех от рута и нет проблем
Как много веселых ребят, и все делают велосипед...
Re[9]: Аналог виндовой ProgramData в Linux
От: ononim  
Дата: 26.07.20 11:15
Оценка:
R>>>Навредить не реально, данные имеют цифровую подпись.
O>>И прям стопроцентов уверены что проверка не уязвима например к TOCTOU?
vsb>Сначала читаем в память, потом проверяем и потом используем из памяти.
Хорошо если оно так и сделано. Кстати далеко не всегда можно так сделать — иногда все данные просто не влазят в память, и приходится костылять всякие там merkle tree.

O>>А если например какой нить злой юзер положит ковявые файлы или пермишены на них. Все остальные смогут работать или таки DoS атака окажется успешной?

vsb>Загружаем заново и кладём на нужное место. Злой юзер сможет потратить трафик.
А злой юзер настолько злой, что повесил inotify и ломает ваши данные как только вы их загрузите.
Как много веселых ребят, и все делают велосипед...
Re[11]: Аналог виндовой ProgramData в Linux
От: ononim  
Дата: 26.07.20 11:19
Оценка:
vsb>> Создайте инсталлятором папку /var/cache/myprogram и дайте ей нужные права, хоть 777 (но лучше 770 и создать отдельную группу для пользователей вашей программы).
R>Софт распространяется в виде appimage, инсталлятора нет.
Ну назовем это 1st run initialization, с запуском под sudo.
Как много веселых ребят, и все делают велосипед...
Re[9]: Аналог виндовой ProgramData в Linux
От: ononim  
Дата: 26.07.20 11:25
Оценка:
vsb>Вообще защищаться от злого юзера — тухлое дело. Защищаться надо от глупого юзера. Который что-то по ошибке может сделать. Например почистить эти самые кеши какой-нибудь кривой командой вроде echo > /var/caches/myprogram/download000.dat А если он реально злой — тут вы, скорей всего, уже проиграли. Потому, что он заюзает какой-нибудь local escalation exploit которых слишком много, чтобы считать их теоретическими и вот уже он злой root.
Это нифига не unix way. А количество local escalation exploit-ов на апдейтящейся системе примерно равно нулю.
Как много веселых ребят, и все делают велосипед...
Re[3]: Аналог виндовой ProgramData в Linux
От: kov_serg Россия  
Дата: 26.07.20 11:44
Оценка:
Здравствуйте, rudzuk, Вы писали:

k>> /usr/share

k>> /usr/local/share

R>У обычного юзера нет прав на запись сюда, а данные приложения изменяемые. Хочется избежать дублирования большого объема данных. Софт распространяется в виде appimage.

Так сделайте папку и дайте на неё права если надо, при вервом запуске или сваливайте всё к текущему пользователю. Если хочется то можно sudo mount --bind /usr/local/share/myapp/cache ~/.local/share/myapp/cache
/usr/local/share/myapp/cache
/usr/local/share/myapp/data
Re[10]: Аналог виндовой ProgramData в Linux
От: vsb Казахстан  
Дата: 26.07.20 12:02
Оценка:
Здравствуйте, ononim, Вы писали:

R>>>>Навредить не реально, данные имеют цифровую подпись.

O>>>И прям стопроцентов уверены что проверка не уязвима например к TOCTOU?
vsb>>Сначала читаем в память, потом проверяем и потом используем из памяти.
O>Хорошо если оно так и сделано. Кстати далеко не всегда можно так сделать — иногда все данные просто не влазят в память, и приходится костылять всякие там merkle tree.

Да, если не влазит в память, это будет весьма нетривиальная задача.

O>>>А если например какой нить злой юзер положит ковявые файлы или пермишены на них. Все остальные смогут работать или таки DoS атака окажется успешной?

vsb>>Загружаем заново и кладём на нужное место. Злой юзер сможет потратить трафик.
O>А злой юзер настолько злой, что повесил inotify и ломает ваши данные как только вы их загрузите.

Грузим в память, сохраняем на диски, используем из памяти.
Re: Аналог виндовой ProgramData в Linux
От: rudzuk  
Дата: 26.07.20 12:05
Оценка:
Здравствуйте, rudzuk, Вы писали:

r> Куда в линуксе принято сохранять разделяемые между локальными пользователями изменяемые данные приложения? В Windows эту задачу решает ProgramData, а в линуксе? FHS смотрел, но ничего похожего не нашел


В общем, решили добавить путь к разделяемым данным в конфиг. Всем спасибо за участие.
avalon/3.0.0
Re[3]: Аналог виндовой ProgramData в Linux
От: wildwind Россия  
Дата: 26.07.20 14:10
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Хочется избежать дублирования

R>Софт распространяется в виде appimage.

Тут какое-то противоерчие.
Re[4]: Аналог виндовой ProgramData в Linux
От: rudzuk  
Дата: 26.07.20 14:28
Оценка:
Здравствуйте, wildwind, Вы писали:

w> R>Хочется избежать дублирования

w> R>Софт распространяется в виде appimage.

w> Тут какое-то противоерчие.


Если цитировать корректно, то нет.
avalon/3.0.0
Re[10]: Аналог виндовой ProgramData в Linux
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 26.07.20 14:29
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Создайте инсталлятором папку

_>Так сделайте папку

Мда, вот она, деградация терминологии...
Re[5]: Аналог виндовой ProgramData в Linux
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.07.20 18:28
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Приложение работает с большим объемом данных, которые, на начальном этапе, загружаются из интернет. В процессе работы, приложение эти данные не изменяет, но, иногда, загружает обновления для них. Сейчас данные хранятся в ~/.local/share/appname, но очень хочется избежать дублирования данных, когда приложение используется несколькими локальными пользователями.


Тогда это скорее /var/cache/app-name (app-name — имя программы).

Я бы разбил эту конструкцию на два процесса. Один — демон, имеющий право записи в /var/cache/..., и отвечающий за подгрузку необходимого. Другой — пользовательская программа, с read-only доступом к данным.

А то нехорошо получится, если кто-то из пользователей нагадит в общие данные.
Re[7]: Аналог виндовой ProgramData в Linux
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.07.20 19:16
Оценка:
Здравствуйте, rudzuk, Вы писали:

ЕМ>> Тогда было бы правильнее иметь независимую службу (демон), загружающую/обновляющую эти данные. Делать это непосредственно из приложения допустимо лишь в том случае, когда все без исключения пользователи системы (и локальные, и сетевые) являются доверенными, и никак не могут навредить.


R>Навредить не реально, данные имеют цифровую подпись.


Ну, удаление их — это тоже вред. Иначе какой смысл их подкачивать?
Re: Аналог виндовой ProgramData в Linux
От: varenikAA  
Дата: 27.07.20 00:44
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Куда в линуксе принято сохранять разделяемые между локальными пользователями изменяемые данные приложения? В Windows эту задачу решает ProgramData, а в линуксе? FHS смотрел, но ничего похожего не нашел


Linux сетевая ос, понятие локальный пользователь относительно, там чаще используется понятие хоста на который вошел юзер (localhost или server не принципиально).
Доступен только /home/usr и /tmp.
Лучше БД для хранения общих данных ничего нет.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[7]: Аналог виндовой ProgramData в Linux
От: Evgeny.Panasyuk Россия  
Дата: 27.07.20 04:27
Оценка:
Здравствуйте, netch80, Вы писали:

N>2. Все операции по созданию файлов и каталогов в хранилище сопровождаются chgrp() на эту группу.

N>Да, тут потребуется дисциплина доступа, но это для данной ситуации явно не страшно.

Для 2. есть setgid на директорию.

https://www.gnu.org/software/coreutils/manual/html_node/Directory-Setuid-and-Setgid.html
On most systems, if a directory’s set-group-ID bit is set, newly created subfiles inherit the same group as the directory, and newly created subdirectories inherit the set-group-ID bit of the parent directory.

Re[11]: Аналог виндовой ProgramData в Linux
От: Sheridan Россия  
Дата: 02.08.20 10:04
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Софт распространяется в виде appimage, инсталлятора нет.

Увольте предложившего распространять таким образом и наймите более годного девапса.
Matrix has you...
Re[11]: Аналог виндовой ProgramData в Linux
От: VladCore  
Дата: 02.08.20 12:26
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Здравствуйте, vsb, Вы писали:


vsb>> Создайте инсталлятором папку /var/cache/myprogram и дайте ей нужные права, хоть 777 (но лучше 770 и создать отдельную группу для пользователей вашей программы).


R>Софт распространяется в виде appimage, инсталлятора нет.


добавте в образ appname-config.sh, если еще не добавили. так все делают. из известных например mysql и postresql. надо было с самого начала начинать с этого скрипта/бинарника. у вас ни одного что ли опытного пользователя линукс нет?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.