Saksi:
$ ps f
PID TTY STAT TIME COMMAND
31509 pts/3 Ss 0:01 -bash
27266 pts/3 S+ 0:00 \_ mysql -uroot -p
25210 pts/10 Ss+ 0:00 /bin/bash
24444 pts/4 Ss 0:00 -bash
29111 pts/4 S+ 0:00 \_ tmux attach
4833 pts/5 Ss+ 0:00 -bash
9046 pts/6 Ss 0:00 -bash
17749 pts/6 R+ 0:00 \_ ps f
4748 pts/0 Ss 0:00 -bash
14635 pts/0 T 0:02 \_ mysql -uroot -px xxxxxxxxxxxxxxxx
16210 pts/0 S+ 0:01 \_ mysql -uroot -px xxxxxxxxxxxxxxxx
Bagaimana ps tahu menyembunyikan mysql
kata sandi? Bisakah saya memasukkan ini ke dalam skrip saya sendiri untuk menyembunyikan atribut CLI tertentu?
mysql
melakukan keajaiban, bukanps
: "Klien MySQL biasanya menimpa argumen kata sandi baris perintah dengan nol selama urutan inisialisasi mereka." - Panduan Pengguna Akhir untuk Keamanan Kata SandiJawaban:
ps
tidak menyembunyikan kata sandi. Aplikasi seperti mysql menimpa daftar argumen yang mereka dapatkan. Harap dicatat, bahwa ada kerangka waktu kecil (mungkin dapat diperpanjang dengan beban sistem yang tinggi), di mana argumen dapat dilihat oleh aplikasi lain hingga ditimpa. Menyembunyikan proses ke pengguna lain dapat membantu. Secara umum jauh lebih baik untuk mengirim kata sandi melalui file daripada per baris perintah.Dalam artikel ini dijelaskan untuk C, bagaimana melakukan ini. Contoh berikut menyembunyikan / menghapus semua argumen baris perintah:
Lihat juga di /programming/724582/hide-arguments-from-ps dan /programming/3830823/hiding-secret-from-command-line-parameter-on-unix .
sumber
\0
spasi?) Ada tautan kesetproctitle()
?Program mysql menggantikan kata sandi dari baris perintah dengan
x
di baris kode ini :sumber
\0
sehingga Anda memerlukan informasi tambahan untuk menemukan panjang kata sandi (tanpa UB / SEGFAULT).