Change owner and group in C?
To complete the answer, on Linux the following can be used (I've tested on Ubuntu
):
#include <sys/types.h>#include <pwd.h>#include <grp.h>void do_chown (const char *file_path, const char *user_name, const char *group_name) { uid_t uid; gid_t gid; struct passwd *pwd; struct group *grp; pwd = getpwnam(user_name); if (pwd == NULL) { die("Failed to get uid"); } uid = pwd->pw_uid; grp = getgrnam(group_name); if (grp == NULL) { die("Failed to get gid"); } gid = grp->gr_gid; if (chown(file_path, uid, gid) == -1) { die("chown fail"); }}