2016-03-08 14 views
21

私は間違っている(またはしなかった)ことをgdbは私のために正しく動作していませんか?警告:アドレススペースのランダム化を無効にするエラー:操作が許可されていません

[email protected]:/# cat minimal.c 
int main() 
{ 
    int i = 1337; 
    return 0; 
} 
[email protected]:/# gcc -g minimal.c -o minimal 
[email protected]:/# gdb minimal 
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1 
. 
. 
. 
Reading symbols from minimal...done. 
(gdb) break main 
Breakpoint 1 at 0x4004f1: file minimal.c, line 3. 
(gdb) run 
Starting program: /minimal 
warning: Error disabling address space randomization: Operation not permitted 
During startup program exited normally. 
(gdb) 
(gdb) print i 
No symbol "i" in current context. 
+28

私はadded'までドッキングウィンドウコンテナ内で実行されている、私はこのエラーを得た - セキュリティにopt seccomp = unconfinedを 'docker run'に送信します。 –

+0

@CameronTaggartはチップをありがとう!あなたは私の一日を作った。 – gaijin

+0

@CameronTaggartそれは私のためにはうまくいくが、セキュリティ問題のcoms – Jia

答えて

12

あなたのユーザーアカウントには、このプロセスのカーネルのアドレススペースレイアウトのランダム化を無効にする権限がありません。デフォルトでは、gdbはこれを無効にします。何らかのデバッグを容易にするためです(特に、プログラムを実行するたびにスタックオブジェクトのアドレスが同じであることを意味します)。続きを読むhere

この問題を回避するには、gdbのこの機能をset disable-randomization offで無効にします。

ASLRを無効にするために必要な権限をユーザに与えるためには、おそらく/proc/sys/kernel/randomize_va_spaceへの書き込み権限が必要です。続きを読むhere

14

あなたがドッカーを使用している場合、あなたはおそらく--security-opt seccomp=unconfinedオプション(同様のptraceを有効にする)必要があります。

docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined 
関連する問題