[解決済み] C - Linux Kernel - current_uid()の支援
2022-02-17 06:06:17
質問
私はある課題の一部を担当しているのですが、その修正に困っています。要件は、システムコールのオープンをインターセプトし、一般ユーザーのための新しいシステムオープンコールに置き換えることであり、システムログにユーザーIDとファイル名をプリントアウトします。それ以外の場合は、標準のシステムオープンコールを実行するだけです。以下は、私が持っているもののうち、私を悩ませている部分です。
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/syscalls.h>
unsigned long **sys_call_table;
asmlinkage long (*ref_sys_open)(const char *filename, int flags, umode_t mode);
asmlinkage long (*ref_sys_close)(unsigned int fd);
asmlinkage long new_sys_open(const char *filename, int flags, umode_t mode) {
if (current_uid() >= 1000) {
printk(KERN_INFO "User %d is opening file: %s\n", current_uid(), filename);
} else {
(*ref_sys_open)(filename, flags, mode);
}
return 0;
}
私が得ている問題は、current_uid() の戻り値が kuid_t 型の構造体であることです。さらに調べてみると、その構造体は次のようなものでした。
typedef struct {
uid_t val;
} kuid_t;
int 1000 と uid_t val 型を比較するにはどうすればよいのでしょうか?
余談ですが、旧バージョンのシステムコールは正しく呼び出せましたでしょうか?
解決方法は?
から
ここで
,
uid_t
の単なる型定義です。
__kernel_uid32_t
であり、これは
unsigned int
によると
こちら
関連
-
[解決済み】MPI通信でMPI_Bcastを使用する場合
-
[解決済み] char pointers: 'char*' から 'char' への無効な変換?
-
[解決済み] Cプログラムで「配列の添え字が整数でない」。
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] 配列の場合、なぜ a[5] == 5[a] になるのでしょうか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] Linux で grep を使ってファイル名だけを表示するにはどうしたらいいですか?
-
[解決済み] Cプリプロセッサはなぜ "linux "という単語を定数 "1 "と解釈するのですか?
-
[解決済み] Linuxのディレクトリ内のファイルを再帰的にカウントする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み】式は、単純なポインタ演算を使用して完全なオブジェクト型へのポインタでなければなりません【重複】。
-
[解決済み】"Expected expression before ' { ' token"(トークンの前に期待される式)。
-
[解決済み】エラー:'for'ループの初期宣言はC99モードでしかできない【重複
-
[解決済み】「複数の定義」「最初に定義されたのはここです」エラーについて
-
[解決済み】警告:引数「互換性のないポインタ型から」を渡す[デフォルトで有効]。
-
[解決済み] char pointers: 'char*' から 'char' への無効な変換?
-
[解決済み】インクリメントオペランドとして lvalue が必要です。
-
[解決済み】0LLや0x0ULの意味は何ですか?
-
[解決済み】Linuxソケットのwrite()でBad File Descriptorが発生するC