커널 모듈 프로그래밍을 배우기위한 자습서를 진행하고있었습니다. 그 후/proc 파일을 읽거나 쓸 때 약간의 프로세스를 수행하기 위해 약간의 프로그래밍을 작성했다. 모듈을 성공적으로 컴파일하고 insmod도 수행했다. 하지만proc 파일을 읽을 때 권한이 거부되었습니다.
고양이/proc 디렉토리/procfile
같은 proc 파일을 읽기 위해 노력하고있어 그 어느 때 권한 거부 오류가 발생합니다.
내 코드에 모듈 권한 기능이 포함되어 있으며 권한 검사가 실패 할 때마다 실제로 오류가 발생합니다.
struct cred *proc_current; //to get the EUID for current task
static struct proc_dir_entry *our_proc_file;
static int module_permission(struct inode *inode, int op)
{
printk(KERN_INFO "permission is %d \n",op);
if(op==4||(op==2 && (proc_current->euid == 0)))
return 0;
return -EACCES;
}
.....
//Init module
static int __init proc_init(void)
{
printk(KERN_INFO "Init module loaded \n");
our_proc_file=create_proc_entry(PROC_NAME, 0644, NULL);
if(our_proc_file == NULL)
{
remove_proc_entry(PROC_NAME,proc_root);
printk(KERN_INFO "Error in creating proc file \n");
return -ENOMEM;
}
our_proc_file->proc_fops=&fops;
our_proc_file->proc_iops=&iops;
our_proc_file->mode=S_IFREG | S_IRUGO | S_IWUSR;
our_proc_file->uid=0;
our_proc_file->gid=0;
our_proc_file->size=80;
printk(KERN_INFO "proc file created in '/proc' \n");
return 0;
}
초기화 모듈에서 파일 권한을 777로 변경하려고 시도했지만 그다지 도움이되지 않습니다. 권한 검사 기능을 제외하면 제대로 작동합니다. 또한 단지
printk(KERN_INFO "permission is %d \n",op);
항상 무엇 이것에 대한 이유는 무엇이며 어떻게 실제로 여기에 권한 검사를 수행하는 (36)를 인쇄하는 권한 기능을 살펴 가지고?
실제 코드는 당신이 인용 결과를 얻을 수 있습니다 일반 사용자로 읽을하려고하면 procfile.c
들여 쓰기를 해결하시기 바랍니다. – alk
커널 버전? – ldx
튜토리얼은 2.6 버전을 기반으로하고 최신 버전 – Chandu