我想在c中更改文件的所有者和组。我谷歌它,但如果只找到一些使用system()和chmod命令或相关功能的代码。有没有办法在没有system()函数和bash命令的情况下执行此操作?
谢谢大家。但新问题! : 有没有办法让用户uid和gid而不使用" id -u username"命令在c?解析/ etc / passwd?还是更好的方式?
答案 0 :(得分:7)
答案 1 :(得分:7)
要完成答案,在Linux上可以使用以下内容(我在Ubuntu
上测试过):
#include <sys/types.h>
#include <pwd.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");
}
}
答案 2 :(得分:1)
答案 3 :(得分:1)
chown()
可以解决问题。
man 2 chown
答案 4 :(得分:1)
大多数C库中都有chown
函数:
#include <sys/types.h>
#include <unistd.h>
int chown(const char *path, uid_t owner, gid_t group);