Seperti yang dijelaskan Gilles dalam jawaban yang sangat komprehensif untuk pertanyaan serupa di security.stackexchange.com, lingkungan proses hanya dapat diakses oleh pengguna yang memiliki proses (dan tentunya root).
Variabel lingkungan sangat aman. Apa pertanyaan yang Anda tautkan katakan adalah bahwa jika sistem dikompromikan, satu-satunya manfaat keamanan menggunakan variabel lingkungan di atas file konfigurasi adalah ketidakjelasan. Artinya jika seseorang telah mendapatkan akses root, mereka dapat mengakses keduanya.
Apakah menggunakan variabel lingkungan untuk data rahasia dianggap 'tidak jelas' juga masih bisa diperdebatkan. Ini adalah praktik yang sangat umum, dan karena itu saya tidak akan menganggapnya seperti itu.
Anda hanya dapat mengakses data yang disimpan dalam variabel lingkungan di 2 tempat:
1. Lingkungan proses yang sedang berjalan
Saat proses sedang berjalan, variabel lingkungan dari proses tersebut dapat diakses melalui /proc/$PID/environ
. Namun, hanya pengguna yang memiliki proses, atau root, yang dapat mengakses file tersebut.
2. Sumber variabel lingkungan
Jika Anda menggunakan skrip init, dan variabel disimpan dalam skrip init tersebut, tentu saja variabel tersebut dapat diperoleh dengan membaca skrip tersebut.
Atau jika variabel lingkungan berasal dari tempat lain, maka dari mana pun itu.
3. keluaran 'ps'
Ya, saya tahu saya mengatakan 2, dan dalam sistem yang layak, itu akan menjadi 2. Namun jika admin tidak tahu apa yang dia lakukan, mungkin untuk membuka jalan ke-3.
Jika proses diluncurkan melalui sesuatu seperti sh -c 'cd /foo/bar; POP=tart /my/executable'
, lalu sh
itu proses akan terlihat di ps
:
$ sh -c 'cd /; POP=tart sleep 10' &
[1] 3085
$ ps ax | grep POP
phemmer 3085 14 5 0.0 0.0 SN 00:00 sh -c cd /; POP=tart sleep 10