Szukam (1) najbezpieczniejszego i (2) najprostszego sposobu, aby użytkownik wpisał hasło w wierszu polecenia powłoki bash i aby hasło to stało się częścią standardowego programu.
Tak powinno wyglądać standardowe wejście:, {"username":"myname","password":"<my-password>"}
gdzie <my-password>
wpisane jest polecenie powłoki. Gdybym miał kontrolę nad programem stdin, mógłbym go zmodyfikować, aby bezpiecznie monitować o hasło i umieścić je na swoim miejscu, ale dalszy ciąg jest standardowym poleceniem ogólnego przeznaczenia.
Rozważyłem i odrzuciłem podejścia wykorzystujące:
- użytkownik wpisujący hasło w wierszu polecenia: hasło zostanie wyświetlone na ekranie, a także widoczne dla wszystkich użytkowników za pośrednictwem „ps”
- interpolacja zmiennej powłoki na argument do programu zewnętrznego (np.
...$PASSWORD...
): hasło byłoby nadal widoczne dla wszystkich użytkowników za pośrednictwem „ps” - zmienne środowiskowe (jeśli pozostaną w środowisku): hasło będzie widoczne dla wszystkich procesów potomnych; nawet wiarygodne procesy mogą ujawnić hasło, jeśli zrzucą podstawowe lub środowiskowe zmienne w ramach diagnostyki
- hasło przechowywane w pliku przez dłuższy czas, nawet plik z wąskimi uprawnieniami: użytkownik może przypadkowo ujawnić hasło, a użytkownik root może przypadkowo zobaczyć hasło
Podam moje obecne rozwiązanie jako odpowiedź poniżej, ale chętnie wybiorę lepszą odpowiedź, jeśli ktoś ją wymyśli. Myślę, że powinno być coś prostszego, a może ktoś zauważy obawy dotyczące bezpieczeństwa, za którymi tęskniłem.