|
| Ændre password Fra : Morten Trab |
Dato : 09-10-03 13:36 |
|
Hvordan kan man ændre password på en bruger, uden at skulle indtaste det 2
gange...Altså ala med adduser hvor du kan sætte password med -p optionen...
passwd user password
Den kommando duer ikke, nogle forslag??
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Klaus Ellegaard (09-10-2003)
| Kommentar Fra : Klaus Ellegaard |
Dato : 09-10-03 13:41 |
|
"Morten Trab" <mortenREMOVE@trab.dk> writes:
>passwd user password
>Den kommando duer ikke, nogle forslag??
Det er en feature, at den ikke findes. En anden bruger vil kunne
lave en "ps -ef" (eller whatnot) og se passwordet. Det kræver lidt
held, men det kan lade sig gøre med lidt timing.
Personligt ville jeg bruge setpwent (C-funktionen der også findes
i Perl) til det. Den kan hedde noget andet på din specifikke
platform.
Mvh.
Klaus.
| |
Morten Trab (09-10-2003)
| Kommentar Fra : Morten Trab |
Dato : 09-10-03 14:05 |
|
"Klaus Ellegaard" <klausellegaard@msn.com> skrev i en meddelelse
news:bm3l0g$iam$1@katie.ellegaard.dk...
> "Morten Trab" <mortenREMOVE@trab.dk> writes:
>
> >passwd user password
>
> >Den kommando duer ikke, nogle forslag??
>
> Det er en feature, at den ikke findes. En anden bruger vil kunne
> lave en "ps -ef" (eller whatnot) og se passwordet. Det kræver lidt
> held, men det kan lade sig gøre med lidt timing.
>
> Personligt ville jeg bruge setpwent (C-funktionen der også findes
> i Perl) til det. Den kan hedde noget andet på din specifikke
> platform.
Det skal bruges i et PHP script, som udføres fra Apache, igennem en omgang
sudo...
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Mogens Kjaer (09-10-2003)
| Kommentar Fra : Mogens Kjaer |
Dato : 09-10-03 14:26 |
|
Morten Trab wrote:
> Hvordan kan man ændre password på en bruger, uden at skulle indtaste det 2
> gange...Altså ala med adduser hvor du kan sætte password med -p optionen...
Du kan bruge moduser kommandoens -p option.
Bemærk, at du skal selv kryptere passwordet med crypt,
hvordan dette gøres afhænger af, om du kører md5
passwords eller ej.
Følgende du'er til perl, så må du selv lave det om
til php:
MD5:
$salt = '$1$';
$salt .= join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64,
rand 64, rand 64, rand 64, rand 64, rand 64, rand 64];
$salt .= '$';
$cpassword = "-p".crypt($password, $salt);
$result = system "/usr/sbin/usermod", "$cpassword", $username;
Ikke MD5:
$salt = join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64];
$cpassword = "-p".crypt($password, $salt);
$result = system "/usr/sbin/usermod", "$cpassword", $username;
Mogens
--
Mogens Kjaer, Carlsberg A/S, Computer Department
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
Email: mk@crc.dk Homepage: http://www.crc.dk
| |
Morten Trab (09-10-2003)
| Kommentar Fra : Morten Trab |
Dato : 09-10-03 15:25 |
|
"Mogens Kjaer" <mk@crc.dk> skrev i en meddelelse
news:3F856200.2060109@crc.dk...
> Bemærk, at du skal selv kryptere passwordet med crypt,
> hvordan dette gøres afhænger af, om du kører md5
> passwords eller ej.
Hvordan kan jeg se det???
> Følgende du'er til perl, så må du selv lave det om
> til php:
>
> MD5:
>
> $salt = '$1$';
> $salt .= join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64,
> rand 64, rand 64, rand 64, rand 64, rand 64, rand 64];
> $salt .= '$';
> $cpassword = "-p".crypt($password, $salt);
> $result = system "/usr/sbin/usermod", "$cpassword", $username;
>
> Ikke MD5:
>
> $salt = join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64];
> $cpassword = "-p".crypt($password, $salt);
> $result = system "/usr/sbin/usermod", "$cpassword", $username;
Det ser rimeligt let ud at oversætte, brotset fra join?! Hvad gør den?? Jeg
har aldrig kodet perl, så jeg kender ikke helt syntaxen...Kan dog se at den
er rimelig lig med PHP...
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Mogens Kjaer (09-10-2003)
| Kommentar Fra : Mogens Kjaer |
Dato : 09-10-03 15:33 |
|
Morten Trab wrote:
> "Mogens Kjaer" <mk@crc.dk> skrev
>>Bemærk, at du skal selv kryptere passwordet med crypt,
>>hvordan dette gøres afhænger af, om du kører md5
>>passwords eller ej.
>
>
> Hvordan kan jeg se det???
Check /etc/shadow (eller /etc/passwd, hvis shadow filen
ikke findes). Hvis password feltet (det er det, der kommer
efter det første kolon) starter med $1$ kører du med md5
passwords
....
>>$salt .= join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64,
>>rand 64, rand 64, rand 64, rand 64, rand 64, rand 64];
....
> Det ser rimeligt let ud at oversætte, brotset fra join?! Hvad gør den?? Jeg
> har aldrig kodet perl, så jeg kender ikke helt syntaxen...Kan dog se at den
> er rimelig lig med PHP...
Join sætter de enkelte arrayelementer sammen med den
tekst, der står i den første parameter.
Kort fortalt:
$salt sættes til 8 tilfældige tegn bland tegnene
"." "/" 0-9 A-Z og a-z
Mogens
--
Mogens Kjaer, Carlsberg A/S, Computer Department
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
Email: mk@crc.dk Homepage: http://www.crc.dk
| |
Morten Trab (09-10-2003)
| Kommentar Fra : Morten Trab |
Dato : 09-10-03 17:23 |
|
"Mogens Kjaer" <mk@crc.dk> skrev i en meddelelse
news:3F8571B0.3040100@crc.dk...
> Check /etc/shadow (eller /etc/passwd, hvis shadow filen
> ikke findes). Hvis password feltet (det er det, der kommer
> efter det første kolon) starter med $1$ kører du med md5
> passwords
Det må så være MD5 passwords jeg bruger...
PHP har forresten en funktion der hedder MD5, kan den ikke bare bruges, og
så sætte $1$ foran og $ bagefter??
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Mogens Kjaer (10-10-2003)
| Kommentar Fra : Mogens Kjaer |
Dato : 10-10-03 07:27 |
|
Morten Trab wrote:
....
> PHP har forresten en funktion der hedder MD5, kan den ikke bare bruges, og
> så sætte $1$ foran og $ bagefter??
....
Tvivler; prøv det!
Mogens
--
Mogens Kjaer, Carlsberg A/S, Computer Department
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
Email: mk@crc.dk Homepage: http://www.crc.dk
| |
Morten Trab (10-10-2003)
| Kommentar Fra : Morten Trab |
Dato : 10-10-03 11:00 |
|
"Mogens Kjaer" <mk@crc.dk> skrev i en meddelelse
news:3F865130.9010904@crc.dk...
> Morten Trab wrote:
> ...
> > PHP har forresten en funktion der hedder MD5, kan den ikke bare bruges,
og
> > så sætte $1$ foran og $ bagefter??
> ...
>
> Tvivler; prøv det!
Jeg har lige sammenlignet to strenge, en jeg har lavet og en fra min bruger
på box'en, og de er ikke ens... :(
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Morten Trab (10-10-2003)
| Kommentar Fra : Morten Trab |
Dato : 10-10-03 11:21 |
|
"Mogens Kjaer" <mk@crc.dk> skrev i en meddelelse
news:3F865130.9010904@crc.dk...
> Morten Trab wrote:
> ...
> > PHP har forresten en funktion der hedder MD5, kan den ikke bare bruges,
og
> > så sætte $1$ foran og $ bagefter??
> ...
>
> Tvivler; prøv det!
Heh...
$pass = crypt("passwdexam");
Det giver den rette MD5 cryptede streng...MD5 er standard encryption i min
PHP... :)
--
Mvh. Morten Trab
--
Svar venligst kun i NG, med mindre det er MEGET vigtigt.
Ved mail, slet REMOVE i min adresse.
Web: http://www.blackchart.dk
| |
Esben Skov Pedersen (09-10-2003)
| Kommentar Fra : Esben Skov Pedersen |
Dato : 09-10-03 21:07 |
|
Morten Trab wrote:
> "Mogens Kjaer" <mk@crc.dk> skrev i en meddelelse
> news:3F856200.2060109@crc.dk...
>
>> Bemærk, at du skal selv kryptere passwordet med crypt,
>> hvordan dette gøres afhænger af, om du kører md5
>> passwords eller ej.
>
> Hvordan kan jeg se det???
>
>> Følgende du'er til perl, så må du selv lave det om
>> til php:
>>
>> MD5:
>>
>> $salt = '$1$';
>> $salt .= join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64,
>> rand 64, rand 64, rand 64, rand 64, rand 64, rand 64];
>> $salt .= '$';
>> $cpassword = "-p".crypt($password, $salt);
>> $result = system "/usr/sbin/usermod", "$cpassword", $username;
>>
>> Ikke MD5:
>>
>> $salt = join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64];
>> $cpassword = "-p".crypt($password, $salt);
>> $result = system "/usr/sbin/usermod", "$cpassword", $username;
>
> Det ser rimeligt let ud at oversætte, brotset fra join?! Hvad gør den??
> Jeg har aldrig kodet perl, så jeg kender ikke helt syntaxen...Kan dog se
> at den er rimelig lig med PHP...
join svarer til implode. Du skal forestille dig at ('.', '/', 0..9,
'A'..'Z', 'a'..'z') ligeså godt kunne have været et array.
| |
Rasmus Bøg Hansen (10-10-2003)
| Kommentar Fra : Rasmus Bøg Hansen |
Dato : 10-10-03 12:45 |
|
"Morten Trab" <mortenREMOVE@trab.dk> writes:
> "Mogens Kjaer" <mk@crc.dk> skrev i en meddelelse
> news:3F865130.9010904@crc.dk...
>> Morten Trab wrote:
>> ...
>> > PHP har forresten en funktion der hedder MD5, kan den ikke bare bruges,
> og
>> > så sætte $1$ foran og $ bagefter??
>> ...
>>
>> Tvivler; prøv det!
>
> Jeg har lige sammenlignet to strenge, en jeg har lavet og en fra min bruger
> på box'en, og de er ikke ens... :(
Brugte du samme salt-værdi?
/Rasmus
--
-- [ Rasmus "Møffe" Bøg Hansen ] ---------------------------------------
if (!strcmp(getenv(EDITOR), "vi")) {karma++};
----------------------------------[ moffe at amagerkollegiet dot dk ] --
| |
Thomas D (09-10-2003)
| Kommentar Fra : Thomas D |
Dato : 09-10-03 14:52 |
|
Morten Trab wrote:
> Hvordan kan man ændre password på en bruger, uden at skulle indtaste
> det 2 gange...Altså ala med adduser hvor du kan sætte password med -p
> optionen...
>
Hmm... umiddelbart vil jeg tro at du kan skrive det til passwd og
shadowfilen manuelt.
Det kræver self. at du har krypteret passworded osv. inden, men det ville
vel være til at scripte sig til.
Men det er dog *ikke* noget jeg vil anbefale at gøre.
Mvh
Thomas Damgaard Nielsen
| |
Klaus Ellegaard (09-10-2003)
| Kommentar Fra : Klaus Ellegaard |
Dato : 09-10-03 14:55 |
|
"Thomas D" <merlin@sprex.dk> writes:
>Hmm... umiddelbart vil jeg tro at du kan skrive det til passwd og
>shadowfilen manuelt.
Det er ikke portabelt, virker ikke nødvendigvis med PAM og skal
sikres med en passende, systemkompatibel locking-mekanisme.
Mvh.
Klaus.
| |
Torben Nielsen (09-10-2003)
| Kommentar Fra : Torben Nielsen |
Dato : 09-10-03 17:53 |
|
Den Thu, 09 Oct 2003 14:36:27 +0200. skrev Morten Trab:
> Hvordan kan man ændre password på en bruger, uden at skulle indtaste det 2
> gange...Altså ala med adduser hvor du kan sætte password med -p optionen...
>
> passwd user password
På min mdk91 box kan jeg gøre dette
echo nytpasswd | passwd --stdin bruger
mvh Torben
| |
Klaus Ellegaard (09-10-2003)
| Kommentar Fra : Klaus Ellegaard |
Dato : 09-10-03 18:04 |
|
Torben Nielsen <dsl86441@vip.cybercity.dk> writes:
>echo nytpasswd | passwd --stdin bruger
katie $ ps -ef|grep echo
root 24145 23416 0 19:02:27 pts/7 0:00 echo nytpasswd
Fornemt - så skal jeg bare finde ud af hvilken af de lokale
brugere, det nye password tilhører. Så har jeg kontrol over
deres konto.
Mvh.
Klaus.
(Hvis echo er en intern kommando i shellen, virker det ikke.
Men hvem siger, echo er det i alle relevante tilfælde?)
| |
Kent Friis (09-10-2003)
| Kommentar Fra : Kent Friis |
Dato : 09-10-03 18:48 |
|
Den Thu, 9 Oct 2003 17:04:26 +0000 (UTC) skrev Klaus Ellegaard:
>Torben Nielsen <dsl86441@vip.cybercity.dk> writes:
>
>>echo nytpasswd | passwd --stdin bruger
>
>katie $ ps -ef|grep echo
> root 24145 23416 0 19:02:27 pts/7 0:00 echo nytpasswd
>
>Fornemt - så skal jeg bare finde ud af hvilken af de lokale
>brugere, det nye password tilhører. Så har jeg kontrol over
>deres konto.
$ ps -ef > log
$ grep -E '(echo)|(passwd)' log
root 24145 23416 0 19:02:27 pts/7 0:00 echo nytpasswd
root 24146 23416 0 19:02:27 pts/7 0:00 passwd --stdin bruger
$
>(Hvis echo er en intern kommando i shellen, virker det ikke.
>Men hvem siger, echo er det i alle relevante tilfælde?)
builtin echo nytpasswd | passwd --stdin bruger
Så melder shell'en fejl, hvis ikke echo er en intern kommando (eller
hvis den ikke kender "builtin").
Ikke at jeg vil anbefale den metode, men den er da i det mindste lidt
mere sikker.
Mvh
Kent
--
"Intelligence is the ability to avoid doing work, yet get the work done"
- Linus Torvalds
| |
Klaus Ellegaard (09-10-2003)
| Kommentar Fra : Klaus Ellegaard |
Dato : 09-10-03 19:58 |
|
leeloo@phreaker.net (Kent Friis) writes:
>Ikke at jeg vil anbefale den metode, men den er da i det mindste lidt
>mere sikker.
Indeed, men hele konceptet er alvorligt skidt:
Man skal tage højde for fejlsituationer, hvor passwd-kommandoen
af en eller anden grund fejler - f.eks. med "Password file/table
busy. Try again later". Det er ikke altid trivielt at fange den
slags.
Man skal tage højde for situationer, hvor kommandoen slet ikke
bliver kørt. Det kan være, maskinen er løbet tør for RAM, så
shellen slet ikke exec'er kommandoen, en dependency er gået i
stykker, et shared library er gået i stykker, passwd er gået i
stykker og coredumper, ...
Man skal tage højde for kompromitterede shells, alt det, shellen
i øvrigt foretager sig udover at køre kommandoen, relativt
dynamiske ting som shellens environment, ...
Da programmet under alle omstændigheder skal køres som root for
at kunne ændre andre brugeres password, er det alt i alt meget
nemmere og sikrere at bruge de relevante systemkald. De sikrer
også en meget høj grad af portabilitet og kræver ikke mærkelige
undvigemanøvrer.
Mvh.
Klaus.
| |
|
|