Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: mpakmop в Jun 01, 2010, 15:03



Титла: промяна на парола
Публикувано от: mpakmop в Jun 01, 2010, 15:03
Здравейте,
Пиша на Java и трябва да променя парола на потребител. Самото изпълнение на команди не е нищо сложно:
Код:
            Process p = Runtime.getRuntime().exec("ps -ef");
въпросът е обаче, че при passwd трябва да се подаде стара и нова парола.
Някой сблъсквал ли се е с подобно нещо? Предполагам, че най-добрият начин ще е да се смени парола на потребител с едноредова команда, но не можах да открия подобна възможност специално за passwd.
Благодаря предварително за всички мнения и препоръки :)


Титла: Re: промяна на парола
Публикувано от: VladSun в Jun 01, 2010, 15:23
В конзола зз бих използвал expect ($2)


Титла: Re: промяна на парола
Публикувано от: mpakmop в Jun 01, 2010, 18:32
Благодаря за идеята, макар да не ми е още съвсем ясно как да вградя това в кода - вероятно чрез извикване на скрипт? Друго неудобство е, че това ще изисква инсталирането на expect на системата...

Но да питам нещо друго - ровейки се по форумите намерих следното:

echo <password> | passwd <username>

където
<password> = новата парола
<username> = потребителското ми име

И съответно това вече лесно ще може да се изпълни по следния начин:

Код:
Runtime.getRuntime().exec("echo <password> | passwd <username>");

Работя под Ubuntu 9.10 и се опитвам да изпълня посочената по-горе команда в конзолата, но получавам следната грешка:
Authentication token manipulation error.

Някакви идеи?



Титла: Re: промяна на парола
Публикувано от: remotex в Jun 02, 2010, 13:29
Само да уточня че тези също са външни команди:
Код
GeSHi (Bash):
  1. ps -ef ...
  2. echo ...
  3. passwd ...


Титла: Re: промяна на парола
Публикувано от: remotex в Jun 02, 2010, 13:36
Навярно забравяш че командата очаква и потвърждение на паролата т.е. тя трябва да се въведе 2 пъти... или нещо от сорта на :
Код
GeSHi (Bash):
  1. (sleep 3; echo "$password";sleep 3;echo "$password" )| passwd "$user" > /dev/null
за повече подробности (най-вече относно сигурността и др. опции напр. --stdin) разгледай коментарите тук:
http://stackoverflow.com/questions/714915/using-the-passwd-command-from-within-a-shell-script ($2)


Титла: Re: промяна на парола
Публикувано от: mpakmop в Jun 03, 2010, 15:56
Благодаря огромно, remotex!   [_]3