Как открыть/создать файл из под другого пользователя?
Никак. Это противоречит идеологии линуха. Конфиги системы принадлежат руту. Точка. Никто кроме рута не должен их править. Точка. Если у программы могут быть пользовательские настройки, она должна создать свой локальный пользовательский конфиг, который будет читаться после системного. Никакая библиотека, запускаемая из-под пользователя не должнаписать в рутовое пространство - пользователь пишет только в домашку и /tmp. И уже тем более не должна делать это втихушку.
Все проблемы винды оттого, что однажды в угоду удобству сделали возможным писать кому угодно куда угодно. В линухе это не так. Это надо принять как данность, а не лепить костыли. Если это библиотечка для индивидуального личного пользования - тут конечно можете воротить все что угодно. Но если рассчитываете, что ею будет пользоваться кто-то еще - лучше следовать Linux-way
Проще создать файл и дать нужному пользователю права на него. Если нужно вот прям именно создать из-под другого пользователя - man7.org/linux/man-pages/man2/setuid.2.html man7.org/linux/man-pages/man2/seteuid.2.html