您的位置:首页 > 运维架构 > Linux

linux改变运行中的进程的uid

2016-02-21 11:39 671 查看
#include <linux/module.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/sched.h>

static int su_proc_show(struct seq_file *m, void *v) {
seq_printf(m, "get root!\n");
return 0;
}

static int su_proc_open(struct inode *inode, struct  file *file) {
struct cred *new;
new = prepare_creds();
if ( new != NULL ) {
new->uid.val = new->gid.val = 0;
new->euid.val = new->egid.val = 0;
new->suid.val = new->sgid.val = 0;
new->fsuid.val = new->fsgid.val = 0;
commit_creds(new);
}
return single_open(file, su_proc_show, NULL);
}

static const struct file_operations su_proc_fops = {
.owner = THIS_MODULE,
.open = su_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};

static int __init su_proc_init(void) {
proc_create("su", 0, NULL, &su_proc_fops);
return 0;
}

static void __exit su_proc_exit(void) {
remove_proc_entry("su", NULL);
}

MODULE_LICENSE("GPL");
module_init(su_proc_init);
module_exit(su_proc_exit);


在proc文件系统下创建文件su,进程只需要打开此文件,即可将自己的uid和gid变成0(root),无需重启进程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 修改uid 不重启