Как открыть/создать файл из под другого пользователя?
Озадачился переносом своей библиотечки под линукс, но опыта не имею. Затык получился с правами доступа - нужно создать или открыть файл из под другого пользователя (креды известны). Под виндой делал LogonUser + ImpersonateLoggedOnUser + CreateFile. Как это правильно сделать под линукс? Буду признателен, если подкинете ссылки на статейки или литературу.
Может вы лучше опишите что делает ваша библиотека и зачем ей доступ к чужим файлам?
Меня вообще смущает концепция, что библиотеке нужен какое-то изменение привилегий пользователя. Это всё-таки скорее прерогатива конкретной программы, а дело библиотеки просто ругнуться и упасть если ей недостаточно прав для каких-то действий.
Алексей Тен: В начале разработки для упрощения последующего портирования я сделал библиотеку реализующую разные платформозависимые вещи (типа примитовов синхронизации, абстракция файловой системы и т. д.). Могу привести пример - есть конфиг, на чтение можно открыть, но запись из под root. Хочется уменьшить количство действий (зайти от root, запустить прграмму и ...) - просто показать пользователю диалог авторизации и получить права на работу с этим конфигом без остановки основной программы. Как только закончим работу с конфигом, вернуть привилегии к исходному состоянию. В общем как я и написал нужен аналог LogonUser + ImersonateLoggedOnUser если таковой имеется.
I_dont_known: Не нужен. Если в конфиг должен кто-то писать он не должен принадлежать руту.
Стандартно конфиги делятся на системные и пользовательские. Посмотрите на тот же bash или git