LINUX.ORG.RU
Ответ на: комментарий от anonymous

Отличная возможность, . Но, к сожалению, не для меня, т.к. запустивший пользователь будет всё видеть.

greek_31 ★★
() автор топика
Ответ на: комментарий от uzbl

Жестко =) Как крайний вариант - да. Принцип понятен. Надо найти строки пароля и заменить ее на «****». Жаль не могу вспомнить, где это уже делалось.

greek_31 ★★
() автор топика

Ну а что сложного-то?

#include <string.h>

int main(int argc, char *argv[])
{
    int i;
    size_t len;
    for (i = 1; i <argc; ++i)
    {
        len = strlen(argv[i]);
        memset(argv[i], 0, len);
    }
    
    sleep(100);
    return 0;
}
$ gcc test.c -o test
$ ./test -u user -p password &
$ ps aux | grep test
$ ./test
beka
()
Ответ на: комментарий от greek_31

Только учти, что есть определенный временный промежуток в доли секунд между тем как запускается программа и изменяется argv - и злоумышленнык может этим воспользоваться. Т.е. для серьезных вещей такое решение не годится.

beka
()
Ответ на: комментарий от beka

Т.е. для серьезных вещей такое решение не годится.

Для серьезных вещей вообще не годится передавать пароль параметром :)

unfo ★★★★★
()

greek_31

Пароль передается через командную строку и соответственно появляется в выводе ps.

почему его нельзя передать как-то иначе? например passwd принимает пароль из /dev/stdin.

drBatty ★★
()
Ответ на: комментарий от drBatty

+1 за передачу в stdin. Ещё можно менять нечто типа «заголовка» процесса, который и отображается в ps.

Krieger_Od ★★
()
Ответ на: комментарий от beka

beka

memset(argv, 0, len);

это вроде работает, но я бы не рискнул назвать такое решение надёжным и безопасным. argv на самом деле скорее указатель на указатель на константу... Да и затирать все параметры == подкладывать свинью самому админу. ИМХО лучше воткнуть туда *** (вместо пароля), а ещё лучше вводить пароль как-то иначе. Для ssh например можно использовать ключи.

drBatty ★★
()
Ответ на: комментарий от greek_31

По контракту argv[] константный. Соответственно и изменять его, даже через указатель на неконстантный объект неверно. Плохой способ.

anonymous
()

Пароль передается через командную строку и соответственно появляется в выводе ps

Читай пароль из /dev/stdin при запуске. Тогда можно запускать а-ля:

./program < ~/.secret_storage/password 
tensai_cirno ★★★★★
()

Господа, тема решена, спасибо за ответы =)

ps Безопасное и надежное решение не требовалось. Просто нужно было, что-бы пароль, которым сложно в принципе воспользоваться, не светился в top и ps, которые может смотреть другой человек.

greek_31 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.