Лучше было бы переписать myapplication
, чтобы оно получало пароль другим способом, например stdin. Environment - еще один вариант, но он все еще виден процессам с тем же euid (или euid 0) через / proc /
.
В противном случае в Linux с версиями до 4.2 вы можете ограничить доступ, убедившись, что пароль не находится в первых 4096 байтах командной строки, чтобы другие процессы не могли получить его, прочитав / proc /
(как и ps
). 4.2 и более поздние версии больше не усекают / proc /
.
Например, с zsh
.${(l:4094::/:):-myapplication} --smtp-password=secret
запустит myapplication с первым аргументом размером 4095 байт (4096 вы превысите предел PATH_MAX), что-то вроде .////// [. ..] /// myapplication
, поэтому ваш пароль будет выше точки останова 4095.
Обратите внимание, что журналы аудита и файлы истории оболочки - это другие области, вызывающие беспокойство в отношении секретных строк, передаваемых в командной строке.