GNU/Linux >> Znalost Linux >  >> Linux

Změnit vlastníka a skupinu v C?

K dokončení odpovědi lze v systému Linux použít následující (testoval jsem na 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");
  }
}

Můžete použít chmod , fchmodat a/nebo fchmod systémová volání. Všechny tři jsou umístěny v <sys/stat.h> .

Pro vlastnictví je zde chown a fchownat , oba v <unistd.h> .


Linux
  1. Jak vytvořit a odstranit uživatelskou skupinu v Linuxu

  2. 12 Příklady příkazů Linux Chown pro změnu vlastníka a skupiny

  3. Průvodce pro začátečníky ke správě uživatelů a skupin v Linuxu

  1. Priorita uživatele a vlastníka skupiny v oprávněních k souboru?

  2. Jak (správně) změnit UID a GID uživatele/skupiny v Linuxu

  3. Změnit vlastníka a skupinu pouze pro konkrétní vlastníky

  1. Vytvořit soubor jako jiný uživatel a skupina?

  2. Jak najít vlastníka a skupinu adresáře?

  3. Spravujte skupiny zabezpečení a pravidla