Change owner and group in C? Change owner and group in C? linux linux

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");  }}


You can use the chmod, fchmodat and/or fchmod system calls. All three are located in <sys/stat.h>.

For ownership, there's chown and fchownat, both in <unistd.h>.


There is a chown function in most C libraries:

#include <sys/types.h>#include <unistd.h>int chown(const char *path, uid_t owner, gid_t group);