ロード可能なカーネルモジュールによって作成された/ procファイルを書き込もうとしています。私は書き込みのためにファイルを開くのにfopen()を使用していますが、errno:13(permission denied)を取得しています。Errno:13 on procエントリでfopenを使用する
FILE *fp;
fp = fopen("/proc/file1","w");
if(fp == NULL){
printf("Errno : %d",errno); // prints 13
}
The LKM contains the following code:
static struct proc_dir_entry *proc_entry;
static ssize_t proc_write(struct file *filp, const char __user *buff, unsigned long len, void *data)
{
// code writes from buffer to local variable
return len;
}
static ssize_t proc_read(char *page, char **start, off_t off, int count, int *eof, void *data)
{
// code for reading file
return 0;
}
int proc_open(struct inode *inode, struct file *file)
{
try_module_get(THIS_MODULE);
return 0;
}
int proc_close(struct inode *inode, struct file *file)
{
module_put(THIS_MODULE);
return 0;
}
これを解決する方法についてのご意見はありますか?
ありがとうございました。
あなたはrootとして実行するとまだ失敗しますか? –
ファイルをrootとして開きますか?カーネルモジュールはファイルへの書き込みアクセスを許可していますか?詳細情報が必要 – Petesh
実行ファイルがset-root-UIDになっても失敗しません。 – Jake