Świadek:
$ 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
Skąd PS wiedział, aby ukryć mysql
hasła? Czy mogę włączyć to do własnych skryptów, aby ukryć określone atrybuty CLI?
mysql
działa magicznie, a nieps
: „Klienci MySQL zazwyczaj nadpisują argument wiersza polecenia zerami podczas sekwencji inicjalizacji.” - Wytyczne dla użytkowników końcowych dotyczące bezpieczeństwa hasełOdpowiedzi:
ps
nie ukrywa hasła. Aplikacje takie jak mysql zastępują listę argumentów, którą otrzymali. Należy pamiętać, że istnieje krótki przedział czasowy (możliwy do rozszerzenia przez duże obciążenie systemu), w którym argumenty są widoczne dla innych aplikacji, dopóki nie zostaną zastąpione. Ukrywanie procesu innym użytkownikom może pomóc. Zasadniczo o wiele lepiej jest przekazywać hasła przez pliki niż w wierszu poleceń.W tym artykule opisano C, jak to zrobić. Poniższy przykład ukrywa / usuwa wszystkie argumenty wiersza poleceń:
Zobacz także /programming/724582/hide-arguments-from-ps i /programming/3830823/hiding-secret-from-command-line-parameter-on-unix .
źródło
\0
spację?) Dowolny link dosetproctitle()
?Mysql program zastępuje hasła z wiersza poleceń ze
x
w tej linii kodu :źródło
\0
, abyś potrzebował dodatkowych informacji, aby znaleźć długość hasła (bez UB / SEGFAULT).