Sto lavorando a un sistema di runtime per programmi paralleli che può trarre vantaggio da un layout di spazio di indirizzi comune su più processi, potenzialmente distribuiti su diversi (mille) nodi. Molte volte, il software creato per questo ambiente viene eseguito su sistemi Linux che hanno la randomizzazione dello spazio di indirizzi abilitata per impostazione predefinita e gli utenti potrebbero non volere o essere in grado di disabilitarlo a livello di sistema (tramite sysctl -w kernel.randomize_va_space=0
e simili). Ciò impone alcune limitazioni ai programmi paralleli e può compromettere le prestazioni. Quindi, vogliamo capire come disabilitarlo per i binari che costruiamo. La sicurezza non è un problema, poiché questo software è sempre in esecuzione in ambienti controllati.Come disabilitare la randomizzazione dello spazio degli indirizzi per un binario su Linux?
ho trovato riferimenti a varie bandiere e variabili, come ET_EXEC
, EF_AS_NO_RANDOM
(a quanto pare mai fusa?) E PF_RANDOMIZE
, ma non riesco a trovare alcun documento che descrive che cosa posso fare per impostare questi flag. Una risposta ideale potrebbe dirmi quale flag del compilatore/assemblatore/linker disabiliterà la randomizzazione per il binario risultante e su quali versioni della catena di strumenti/kernel funziona. Il prossimo migliore sarebbe uno strumento che faccia lo stesso dopo aver creato un binario.
Poiché sono sicuro che qualcuno lo suggerirà, sono già consapevole che possiamo apportare questo cambiamento in fase di esecuzione con setarch -R
, ma è preferibile registrarlo nell'eseguibile.
Sembra che il paxctl -rx
dovrebbe fare il trucco, ma non sembra applicarsi al metodo corrente utilizzato nei kernel che non includono le patch PaX.
Indagherò e provo ora. – Novelocrat
Sembra aver funzionato. Grazie! – Novelocrat