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 socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- Linux 下无损图片压缩小工具介绍