/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Æ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.

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408952
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste