cでファイルの所有者とグループを変更したい。私はそれをGoogleのが、システム()とchmodコマンドまたは相対的な機能を使用するいくつかのコードを見つける場合。 system()関数とbashコマンドなしでこれを行う方法はありますか?オーナーとグループをcで変更する
ありがとうございます。しかし、新しい問題! : cで "id -u username"コマンドを使用せずにユーザーuidとgidを取得する方法はありますか?/etc/passwdの解析?またはより良い方法ですか?
cでファイルの所有者とグループを変更したい。私はそれをGoogleのが、システム()とchmodコマンドまたは相対的な機能を使用するいくつかのコードを見つける場合。 system()関数とbashコマンドなしでこれを行う方法はありますか?オーナーとグループをcで変更する
ありがとうございます。しかし、新しい問題! : cで "id -u username"コマンドを使用せずにユーザーuidとgidを取得する方法はありますか?/etc/passwdの解析?またはより良い方法ですか?
chown()
です。
man 2 chown
ほとんどのCライブラリでchown
機能があります:
#include <sys/types.h>
#include <unistd.h>
int chown(const char *path, uid_t owner, gid_t group);
答えを完了するには、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");
}
}
ありがとうございますが、もう1つ! cで "id -u username"コマンドを使用せずにユーザーuidとgidを取得する方法はありますか?/etc/passwdの解析?またはより良い方法ですか? –
getuid/geteuid/getgid/getpwent/...を検索し、関連する関数を '* pwent'docsで見てください。 'getlogin'と' getpwnam'です。 – Mat
ああ、ありがとうございます:) –