Gå til innhold

Den frie kafeen


Anbefalte innlegg

Videoannonse
Annonse

Det er en kommando som skal være veldig farlig å kjøre, sletter sikkert hele home mappen. Men jeg forstår ikke hva den gjør og lurte på om noen kunne forklare det for meg. Siden den begynner med "man" så hadde ikke jeg forstått at den var farlig, man bruker man jo normalt for å få en forklaring på en kommando?

 

Her er den i tre deler:

Del 1: man

Del 2: --attempt-explain

Del3: || rm -rf /

 

(Delte den opp for å hindre copy/paste, vet ikke om det er nødvendig?)

Lenke til kommentar

Er det dumt å bruke kolon i filnavn? Jeg lager filnavn vha. $ date +"%F %T", og da kommer det kolon i klokkeslettet. Når jeg kikker på disse filene over SMB, så blir navnet omgjort til en slags DOS-form (den gamle sammentrekte formen). Men hvis jeg kikker på dem lokalt (eller over NFS), så er de helt normale.

 

Edit: Det går visst ikke an å bruke kolon i filnavn i windows. Kanskje best at jeg holder meg unna den da.

Endret av endrebjorsvik
Lenke til kommentar

man <kommando/fil> gir deg en forklaring på programmet/fila. (slik ser gjerne outputen fra en slik kommando ut)

 

--attempt-explain vet jeg ingenting om, men det er vel en option (et bedre ord, anyone?) til en annen kommando

 

rm -rf /: Det er kommandoen rm, som står for remove. Altså fjerner den noe. -r står for recursive, og betyr at den tar alt under den stien du gir etter kommandoen. .f står for force, og betyr at den ikke stopper for noe. Altså vil rm .rf / slette absolutt alt som er på systemet ditt, gitt at du er root.

Lenke til kommentar

Den farlige kommandoen her er rm -rf / som rett og slett betyr "slett mappen / rekursivt uten forespørsler" med andre ord, slett alt. Med mindre du kjører kommandoen som root vil kun dine egne filer bli slettet, men det er jo ille nok likevel.

 

Den første delen er vel bare et forsøk på å skjule den siste delen.

 

|| gjør at bash tolker det som kommer etterpå som en kommando og ikke en parameter til man.

 

Edit: -attempt-explain er såvidt jeg kan se ikke en gyldig option til man.

Endret av anders iver
Lenke til kommentar
man <kommando/fil> gir deg en forklaring på programmet/fila. (slik ser gjerne outputen fra en slik kommando ut)

 

--attempt-explain vet jeg ingenting om, men det er vel en option (et bedre ord, anyone?) til en annen kommando

 

rm -rf /: Det er kommandoen rm, som står for remove. Altså fjerner den noe. -r står for recursive, og betyr at den tar alt under den stien du gir etter kommandoen. .f står for force, og betyr at den ikke stopper for noe. Altså vil rm .rf / slette absolutt alt som er på systemet ditt, gitt at du er root.

Jeg er med på "rm", men trodde at dersom jeg skrev "man" først så ville jeg bare få en forklaring på den etter på følgende kommando. Hvordan kan den da være farlig?

Så den på digg(Link), og vedkommende som skrev den blir "digget" ned og rapportert - og andre skriver "Comment posted by Philluminati is a malicious command -- DO NOT TYPE THAT!".

 

Den farlige kommandoen her er rm -rf / som rett og slett betyr "slett mappen / rekursivt uten forespørsler" med andre ord, slett alt. Med mindre du kjører kommandoen som root vil kun dine egne filer bli slettet, men det er jo ille nok likevel.

 

Den første delen er vel bare et forsøk på å skjule den siste delen.

 

|| gjør at bash tolker det som kommer etterpå som en kommando og ikke en parameter til man.

Ok, da er jeg med. Takk for svar til begge to.

 

Tror jeg skal begynne å bli litt mer skeptisk før jeg copy/paster!

Lenke til kommentar

Grunnen til at du ikke vet noe om --attempt-explain er jo at argumentet ikke finnes for man:P

 

Så når du kjører "man --attempt-explain || <kommando>" -så kjøres siste kommandoen og det er jo litt trist hvis du er root og kommandoen = rm / -rf :p

 

For de som ikke visste det så funker || som man gjerne forventer av diverse dataspråk - som "or".

 

EDIT: Jaada - for sein igjen:|

Endret av luser32
Lenke til kommentar

For å forklare nærmere:

Når et program kjøres, og terminerer, gir det en såkalt "exit code".

 

Vanligvis er denne null, når alt går bra. Skjer det en feilmelding i programmet, vil det ofte gi en annen exit code, så andre programmer som "samarbeider" med det skal kunne se hva som gikk galt.

 

Det som skjer er at når exit code er noe annet enn null, så regner ikke shellet det som en vellykket kjøring av programmet, så det som sto bak || blir kjørt isteden.

 

Hadde exit code vært null, hadde denne delen aldri blitt kjørt.

 

Men siden "--attemt-explain" ikke er en gyldig parameter til man, får man en exit code annen enn null, og rm -rf / blir kjørt isteden.

 

Edit:

|| er altså for å gi alternativer i scripts o.l, om en av kommandoene som kalles feiler.

Endret av Sokkalf^
Lenke til kommentar
Grunnen til at du ikke vet noe om --attempt-explain er jo at argumentet ikke finnes for man:P

 

Så når du kjører "man --attempt-explain || <kommando>" -så kjøres siste kommandoen og det er jo litt trist hvis du er root og kommandoen = rm / -rf :p

 

For de som ikke visste det så funker || som man gjerne forventer av diverse dataspråk - som "or".

 

EDIT: Jaada - for sein igjen:|

Uansett takk for svar:-)

så kjøres siste kommandoen og det er jo litt trist hvis du er root og kommandoen = rm / -rf :p
Jeg antar du mener at dette er verre ettersom man da sletter data til alle brukere og ikke bare en bruker.
Lenke til kommentar
så kjøres siste kommandoen og det er jo litt trist hvis du er root og kommandoen = rm / -rf :p
Jeg antar du mener at dette er verre ettersom man da sletter data til alle brukere og ikke bare en bruker.

 

Det er trist fordi ikke bare brukerdata slettes, men absolutt alle data på hele systemet. Brukerdata ligger i /home/brukernavn, men resten av systemet slettes også.

Lenke til kommentar
For å forklare nærmere:

Når et program kjøres, og terminerer, gir det en såkalt "exit code".

 

Vanligvis er denne null, når alt går bra. Skjer det en feilmelding i programmet, vil det ofte gi en annen exit code, så andre programmer som "samarbeider" med det skal kunne se hva som gikk galt.

 

Det som skjer er at når exit code er noe annet enn null, så regner ikke shellet det som en vellykket kjøring av programmet, så det som sto bak || blir kjørt isteden.

 

Hadde exit code vært null, hadde denne delen aldri blitt kjørt.

 

Men siden "--attemt-explain" ikke er en gyldig parameter til man, får man en exit code annen enn null, og rm -rf / blir kjørt isteden.

 

Edit:

|| er altså for å gi alternativer i scripts o.l, om en av kommandoene som kalles feiler.

Takker for forklaringen. Så da vil kommandoen

man --attempt-explain || sudo aptitude update

bare oppdatere systemet. Da er jeg med.

 

Men hvordan noen kan forsøke å lure andre til å kjøre den farlige versjonen er noe jeg aldri vil kunne forstå(!).

Lenke til kommentar
så kjøres siste kommandoen og det er jo litt trist hvis du er root og kommandoen = rm / -rf :p
Jeg antar du mener at dette er verre ettersom man da sletter data til alle brukere og ikke bare en bruker.

 

Det er trist fordi ikke bare brukerdata slettes, men absolutt alle data på hele systemet. Brukerdata ligger i /home/brukernavn, men resten av systemet slettes også.

Men systemet vil i en slik sammenheng være helt irrelevant, det kan enkelt fikses med en reinstallasjon(dog irriterende nok). Verre er det med en bruker som har flerfoldige giga med familiebilder, brev osv. uten backup(så kan man diskutere hvorvidt en uten backup for slike viktige ting "fortjener" sympati).

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...