Скрытие аргументов командной строки для сценария Perl - PullRequest
5 голосов
/ 02 июля 2011

Допустим, я написал Perl-скрипт с именем "foo.pl", который принимает аргумент пароля через переключатель -p.

Однако, пока он работает, любой может выполнить psи увидеть всю строку командной строки, включая пароль:

$ ps a |grep 'foo\.pl'
32310 pts/4    S+     0:00 /usr/bin/perl -w ./foo.pl -p password
32313 pts/5    S+     0:00 grep foo.pl

Какой самый простой / простой способ скрыть пароль и заменить его на что-то вроде xxxxxx?

Ответы [ 3 ]

4 голосов
/ 02 июля 2011

Передача паролей в командной строке не очень хорошая идея, как уже упоминалось.

Но: обычно вы можете (это зависит от ОС) изменить имя, которое отображается ps, назначив$0.

например (проверено в Linux)

$ cat secret.pl
#!/usr/bin/perl

$0 = "my secret perl script";
sleep 15;

$ ./secret.pl -p foobar &
[2] 426
$ ps a | grep perl
  426 pts/0    S      0:00 my secret perl script
  428 pts/0    S+     0:00 grep perl

Подробнее см. в разделе $0 на странице perlvar.

4 голосов
/ 02 июля 2011

Запросите пароль внутри скрипта, чтобы вам не приходилось передавать его в качестве аргумента.


Обновление

Видимо, эта работа для меня, имитирующая mysql поведение:

#!/usr/bin/perl
($0 = "$0 @ARGV") =~ s/--password=\K\S+/x/;
<STDIN>;

$ ./s --user=me --password=secret
^Z
$ ps
  PID TTY           TIME CMD
 1637 ttys000    0:00.12 -bash
 2013 ttys000    0:00.00 ./s --user=me --password=x

под MacOS 10.6

1 голос
/ 02 июля 2011

Есть несколько способов пойти.Самое непосредственное - это (как говорит sidyll) запросить пароль в реальном скрипте.Не вставляйте в командную строку, и вам не придется ее скрывать.

Другой вариант - файл личного пароля .Этот файл можно прочитать с помощью интерполяции оболочки, но он все еще является своего рода клуджем.

Вы можете добавить немного большей гибкости к файлу приватного пароля, обернув свой сценарий в сценарий запуска.По сути, вы пишете сценарий, единственная цель которого - «настроить» файл паролей, а затем запустить свой настоящий сценарий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...