システムコールを直接実行

システムコールを直接実行

ユーザーが何かにアクセスする権限を持っていると仮定すると、どのようにgeteuid()などのシステムコールを直接実行できますか? bashから有効なユーザーIDを取得します(これは単なる例です)。どうすればいいですか?

ベストアンサー1

システムコールによるユーザ空間カーネル空間通信は、メモリ位置とマシンレジスタに基づいて行われます。これは主に、テキスト文字列として機能するシェルの抽象化レベルよりはるかに低いです。

つまり、bashでは次のことができます。https://github.com/taviso/ctypes.shCレベルの粒度でテキスト文字列を抽象化するプラグイン:

$ . ctypes.sh
$ dlcall -r long geteuid
long:1001

ただし、この特定の操作では、bashのマジック変数を使用する方が簡単で慣用的で効率的です$UID

$ echo "$EUID" #effectively a cached geteuid call
1001

おすすめ記事