avertissement: erreur désactivant l'adresse randomisation de l'espace: opération non autorisée

qu'ai-je fait de mal (ou ne font pas) que gdb ne fonctionne pas correctement pour moi?

root@6be3d60ab7c6:/# cat minimal.c 
int main()
{
  int i = 1337;
  return 0;
}
root@6be3d60ab7c6:/# gcc -g minimal.c -o minimal
root@6be3d60ab7c6:/# 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.
35
c gdb
demandé sur ks1322 2016-03-08 09:29:46

3 réponses

si vous utilisez Docker, vous avez probablement besoin de l'option --security-opt seccomp=unconfined (ainsi que de l'activation de ptrace):

docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
50
répondu wisbucky 2017-10-10 22:20:40

pour quelque raison que ce soit, votre compte d'utilisateur n'a pas la permission de désactiver la randomisation de la disposition de l'espace d'adresse du noyau pour ce processus. Par défaut, gdb éteint cela parce qu'il rend certaines sortes de débogage plus facile (en particulier, cela signifie que l'adresse des objets de pile sera la même à chaque fois que vous exécutez votre programme). Lire la suite ici .

Vous pouvez contourner ce problème en désactivant cette fonction de gdb avec set disable-randomization off .

quant à obtenir à votre Utilisateur la permission nécessaire pour désactiver ASLR, il se résume probablement à avoir la permission d'écrire à /proc/sys/kernel/randomize_va_space . Lire la suite ici .

13
répondu Chris Kitching 2017-04-13 12:22:39

s'appuyant sur wisbucky la réponse de (merci!!!!), voici les mêmes paramètres pour Docker composer:

security_opt:
  - seccomp:unconfined
cap_add:
  - SYS_PTRACE

L'option de sécurité seccomp:unconfirmed fixe address space randomization mises en garde.

la capacité SYS_PTRACE ne semblait pas avoir d'effet perceptible même si la documentation Docker stipule que SYS_PTRACE est une capacité qui"n'est pas accordée par défaut". Peut-être que je ne sais pas ce que pour chercher.

3
répondu Kevin W Matthews 2018-07-26 02:13:05