Файлы блокировок

(1/2) > >>

WWX:
Доброго времени суток.

В Ubuntu в директории /var/lock (которая на самом деле является ссылкой на /run/lock) у меня создаются файлы блокировок нолевой длины для синхронизации общего доступа через ф-цию flock.
Всё работает с обычными пользовательскими правами.

Обнаружилось, что в CentOS 7 директория /run/lock имеет права rwxr-xr-x, т.е. обычный пользователь уже не имеет возможность создать там файл блокировки.

Но есть возможность создавать файлы блокировок в директории /var/tmp.

Насколько правильно так делать? И где вообще полагается создавать файлы блокировок для ф-ции flock?

darkelf:
Цитата: WWX от 10-06-2020 11:14

В Ubuntu в директории /var/lock (которая на самом деле является ссылкой на /run/lock) у меня создаются файлы блокировок нолевой длины для синхронизации общего доступа через ф-цию flock.
Всё работает с обычными пользовательскими правами.

Обнаружилось, что в CentOS 7 директория /run/lock имеет права rwxr-xr-x, т.е. обычный пользователь уже не имеет возможность создать там файл блокировки.


Просто для уточнения - первые rwx - это права владельца, вторые r-x - права группы, а третьи - всех остальных. Если Ваш пользователь вдруг окажется владельцем, то это будут его права.

Цитата: WWX от 10-06-2020 11:14

Но есть возможность создавать файлы блокировок в директории /var/tmp.

Насколько правильно так делать? И где вообще полагается создавать файлы блокировок для ф-ции flock?


В принципе, Вы можете их создавать где угодно, главное чтобы искали потом тоже в тех-же местах. Как вариант - можете использовать переменную окружения XDG_RUNTIME_DIR и в каталоге, который там указан создавать свои файлы, соответственно эти блокировки будут работать только для данного конкретного пользователя.

PS: тут нашлось полное теоретическое обоснование.

RXL:
В директорию /run в современных версия Линукса монтируется temfs. Рамдиск. По этому разница между /run и /tmp есть.
Обычному пользователю надо писать в /run/user/<UID>/ или в соотв. /var/... При создании сессии там создаются директории. Во всяком случае Debian-подобные так делают, почему-то за RHEL такое не заметил. Как и кто это создает, не знаю, не разбирался, но пользовался этим персональным рамдисом не раз.

RXL:
Гуглеж указывает на pam_systemd и systemd-logind.service.

WWX:
Спасибо за ответы / наводки. Поизучаю.

Но есть один момент: приложение в общем случае может запускаться от разных пользователей.
Соответственно синхронизация должна проходить между процессами, запущенными разными пользователями.

В идеале было бы найти директорию доступную для записи для любого пользователя, очищающуюся после перезагрузки.

Навигация

[0] Главная страница сообщений

[#] Следующая страница