2016-07-03 13 views
2
私は How to read/write files within a Linux kernel module? 読書にこのリンクから機能を使用して、問題があることであるファイル

Linuxカーネルプログラミング - ファイルを作成するか、またはroot権限でファイルを開く

に書いている私自身のシステムコールと を作成してい

root以外のユーザーが私の新しいシステムコールを呼び出すと、これらの機能は動作しません。

オプションは次のとおりです。これらの機能に を呼び出す前に、root権限を設定したり、許可777を使用してファイルを作成し、これらの関数 に呼び出す前に、多分より多くのオプションがあります

が、私はこれを行う方法を知りません。

+0

権限を '777'に設定するには、' chmod 777 FILENAME'を呼び出します。 –

+0

@EliSadoff:そうするためにカーネル内からプロセスを生成することは、非常にばかげた考えのようです。アクセス権を '777 'に設定するのは、通常、まず愚かな考えです。スロットマシンではありません! –

+0

@MattiVirkkunen私はちょうど許可を '777'に設定する方法を言っていました。 –

答えて

0

あなたは何らかの形で(権限チェックなしで)setfsuid呼び出しをエミュレートし、現在のプロセスのfsuidを開いて復元する必要があります。 FS UIDを変更すると、実際に開いているシステムコールを呼び出すことができます。ファイルディスクリプタを自分で使用することもできます(警告:ユーザーコードもそのファイルディスクリプタを使用できます)。FS UIDを復元すると、あなたが使っているディスクリプタ。ユーザー空間に戻る前にファイルを閉じることをお勧めします。

+0

どのように?どうやって?どうやって?どうやって? – tigger

+0

さて、setfsuid呼び出しをエミュレートするためには、実際には自分自身を悩ませています。私は実際のsetfsuid呼び出しからインスピレーションを取り、単に条件付きで返されるものを取り除きます.EACCES、それからFS UIDを0に設定します。 –

+0

setfsuidと同様の関数を作成することができます。私は新しい関数funcntionフリップフロップ? – tigger

関連する問題