Ubuntu-Linux-kommandoer jeg ofte bruker (Note to self)

OBS! Informasjonen her kan være utdatert!

Denne artikkelen er mange år gammel, og mye kan ha endret seg siden den ble skrevet. Vær kritisk, og sjekk også andre kilder.

Innhold

    Å jobbe i Terminal, eller via SSH hvis man fjernstyrer maskiner, er som regel langt mer effektivt enn å jobbe med mus og vanlig grafisk grensesnitt. Utfordringen er å huske kommandoene. Her er min huskeliste, med eksempler.

    Før jeg presenterer listen vil jeg bare nevne litt om teksten man ser først på hver linje i skallet (terminalen). Dette:

    bruker@maskin:~$

    betyr følgende:

    • bruker -Den brukeren i Linux som utfører kommandoene man skriver inn
    • @maskin: -Maskinen kommandoene man skriver inn gjelder for.
    • ~$ -Tilde indikerer at du er i hjemmemappen din. Det kunne i stedet stått /home/bruker/. $-tegnet indikerer at det er herfra man skriver inn kommandoene. (Iallefall er det slik jeg tolker det...)

    Jeg må også nevne at det kreves at man trykker Enter for å få utført kommandoene man har skrevet inn...

    Brukere og skallbrukere

    Endre skallbruker(s rettigheter)

    su og sudo

    Mange kommandoer krever at man er rotbruker. I Ubuntu håndteres det slik:

    eier@maskin:~$ sudo enellerannenkommando
    [sudo] password for eier:

    Kommandoen sudo gjør at du midlertidig gir din egen bruker opphøyde rettigheter, hvilket igjen gir deg mulighet til å administrere systemfiler og lignende.

    Ønsker man å ha rottilgang gjennom hele sesjonen (så lenge terminalvinduet er åpent), skriver du inn følgende kommando:

    eier@maskin:~$ sudo su
    [sudo] password for eier:
    root@maskin:/home/eier#

    Man kan også bytte til andre brukere, ved å benytte følgende kommando:

    eier@maskin:~$ sudo su
    [sudo] password for eier:
    root@maskin:/home/eier# su annenbruker

    For å bytte tilbake til forrige bruker skriver man exit:

    root@maskin:~$ exit
    eier@maskin:~$

    Brukeradministrasjon

    useradd

    Legge til en bruker, tildele hjemmemappe og spesifisere skallet:

    sudo useradd brukernavn -m -G brukergruppe -s /bin/bash

    passwd

    Sette eller endre passord til bruker:

    sudo passwd username

    adduser

    Legge en person til i en gruppe:

    sudo adduser brukernavn felles

    Legge til en bruker i Samba:

    sudo smbpasswd -a brukernavn

    Tips

    Se brukere på maskinen:

    cat /etc/passwd

    Gruppeadministrasjon

    addgroup

    Opprette en gruppe:

    sudo addgroup gruppenavn

    Tips

    Se grupper på maskinen:

    cat /etc/group

    Filbehandling og navigasjon

    Navigering

    cd

    Gå til en bestemt mappe:

    cd /home/brukernavn/musikk

    Gå en mappe opp i hierarkiet:

    cd ../

    Gå to mapper opp i hierarkiet:

    cd ../../

    osv...

    Gå til hjemmemappen:

    cd

    pwd

    Se hvilken mappe du befinner deg i:

    pwd

    Se innhold i mapper

    ls

    List opp innhold i mappen du er i:

    ls

    List opp innhold i en gitt mappe:

    ls /home/brukernavn/Musikk

    List opp innhold i en gitt mappe, og vis også skjulte filer (som starter med .):

    ls -a /home/brukernavn/Musikk

    Tips

    Hvis listen over filer og mapper går over flere sider kan du bla med Page-Up og Page-Down!

    Lage en ny fil

    touch

    Opprette en ny fil uten innhold:

    touch /home/brukernavn/nyfil.txt

    Tips

    Du kan også bruke vi, hvor du blir tatt direkte til redigering av den nye filen!

    vi /home/brukernavn/nyfil.txt

    Slette filer og mapper

    rm

    Slette en fil:

    rm /home/brukernavn/nyfil.txt

    Slette en mappe med underliggende mapper og filer:

    rm -r /home/brukernavn/mappeMedInnholdSomSkalSlettes

    rmdir

    Slette en tom mappe:

    rmdir /home/brukernavn/tomMappe

    Flytte filer og mapper (eller gi nytt navn)

    mv

    flytte en fil:

    mv /home/brukernavn/gammeltSted/fil.txt /home/brukernavn/nyttSted/fil.txt

    Dette flytter filen fil.txt fra mappen gammeltSted til mappen nyttSted. Merk: Kommandoen over er på én linje!

    flytte en fil og gi den ett nytt navn samtidig:

    mv /home/brukernavn/gammeltSted/fil.txt /home/brukernavn/nyttSted/filNyttNavn.txt

    Dette flytter filen fil.txt fra mappen gammeltSted til mappen nyttSted, samtidig som den døper den om til FilNyttNavn.txt. Merk: Kommandoen over er på én linje!

    Gi filen et nytt navn:

    mv fil.txt filNyttNavn.txt

    flytte en mappe:

    mv /home/brukernavn/Golf /home/brukernavn/nyttSted/Golf

    Dette flytter mappen Golf fra /home/brukernavn/ til /home/brukernavn/nyttSted/. Hvis det allerede finnes en mappe med navn Golf under /home/brukernavn/nyttSted/, vil mappen som flyttes bli plassert under denne igjen og få nytt navn: /home/brukernavn/nyttSted/Golf/Golf1

    Kopiere filer og mapper

    cp

    kopiere en fil:

    cp /home/brukernavn/mappe1/fil.txt /home/brukernavn/mappe2/fil.txt

    kopiere en mappe:

    cp -r /home/brukernavn/mappeA /home/brukernavn/nyttSted/mappeA

    Hvis det allerede finnes en mappe med navn mappe1 under /home/brukernavn/nyttSted/, vil mappen som flyttes bli plassert under denne igjen og få nytt navn: /home/brukernavn/nyttSted/mappeA/mappeA1

    rsync

    kopiere en mappe ved hjelp av rsync:

    rsync -ah -r --progress "/home/brukernavn/Mappe A" "/home/brukernavn/nyttSted/mappe A"

    Fordelen med denne metoden er ikke minst at du ser hva som kopieres!

    Opprette en mappe

    mkdir

    opprette en mappe:

    mkdir /home/brukernavn/mappe1

    Dette oppretter mappen mappe1.

    Eierskap til filer og mapper

    chmod

    Brukes for å endre rettigheter til filer og mapper

    sudo chmod 777 /home/bruker/fil.txt

    Dette er tilsynelatende veldig komplisert, men tallverdien regnes ut på følgende måte:

    • r = readable = 4
    • w = writable = 2
    • x = executable = 1

    Kombinasjonen av overnevnte blir enten 1, 2, 3, 4, 5, 6 eller 7.

    Hver av disse kodene tildeles så de tre rollene User, Group og World (forkortet U, G og W i tabellen under).

    Dermed kan man produsere kommandoer etter følgende mønster:

    TillatelserKommandoer
    UGW
    rwxrwxrwxchmod 777 filnavn
    rwxrwxr-xchmod 775 filnavn
    rwxr-xr-xchmod 755 filnavn
    rw-rw-r--chmod 664 filnavn
    rw-r--r--chmod 644 filnavn

    Denne tabellen har jeg lånt herfra.(draac.com)

    chown

    Endre eierskap til fil:

    sudo chown steinar /home/bruker/delt/filnavn.txt

    Endre både eier og gruppe på alle filer og undermapper i en mappe:

    sudo chown -R steinar:superbrukere /Users/Delt/

    chgrp

    Endre gruppetilhørighet til fil:

    sudo chgrp felles /home/bruker/delt/filnavn.txt
    sudo chgrp felles -R /home/bruker/delt/

    Nettverk

    Fjerninnlogging (SSH)

    ssh

    logge seg inn på en annen maskin:

    eier@maskin:~$ ssh administrator@192.168.1.50
    administrator@192.168.1.50's password:
    administrator@annenmaskin:~$

    Brukernavn og passord er brukernavnet og passordet på den eksterne maskinen

    logge seg inn på en annen maskin når den ikke kjører ssh på standard port 22:

    ssh -p 2222 brukernavn@192.168.1.50

    Avslutte ssh-tilkoblingen:

    exit

    Overføring av filer (SCP)

    scp

    Flytte filen fil.txt fra lokal maskin til ekstern maskin:

    eier@maskin:~$ scp fil.txt administrator@192.168.1.50:/home/administrator/filmappe/
    administrator@192.168.1.50's password:

    Merk: Kommandoen over er på én linje!

    Flytte mappen mappeX fra lokal maskin til ekstern maskin:

    eier@maskin:~$ scp -r /home/brukernavn/mappeX administrator@192.168.1.50:/home/administrator/filmappe/
    administrator@192.168.1.50's password:

    Merk: Kommandoen over er på én linje!

    Flytte mappen mappeX fra lokal maskin til ekstern maskin når ekstern maskin kjører på en annen port enn 22:

    eier@maskin:~$ scp -P 2222 -r /home/brukernavn/mappeX administrator@192.168.1.50:/home/administrator/filmappe/
    administrator@192.168.1.50's password:

    Merk: Kommandoen over er på én linje!

    Flytte mappen mappeX fra ekstern maskin til lokal maskin når ekstern maskin kjører på en annen port enn 22:

    eier@maskin:~$ scp -P 2222 -r administrator@192.168.1.50:/home/administrator/mappeX /home/brukernavn/
    administrator@192.168.1.50's password:

    Merk: Kommandoen over er på én linje!

    Brannmur

    ufw

    Dette har jeg i sin helhet lånt herfra (Ubuntu Documentation). Alt er også mer detaljert forklart der.

    Standard-regler

    Standard er å nekte alt:

    sudo ufw default deny

    Standard er å tillate alt:

    sudo ufw default allow

    Aktivere og deaktivere brannmuren

    Aktivere:

    sudo ufw enable

    Deaktivere:

    sudo ufw disable

    Tillate

    Slippe igjennom innkommende tcp- og udp-pakker på port 53:

    sudo ufw allow 53

    Slippe igjennom innkommende tcp-pakker på port 53:

    sudo ufw allow 53/tcp

    Slippe igjennom innkommende udp-pakker på port 53:

    sudo ufw allow 53/udp

    Slippe igjennom fra en bestemt ip-adresse:

    sudo ufw allow from 207.46.232.182

    Slippe igjennom fra et subnet:

    sudo ufw allow from 192.168.1.0/24

    Slippe igjennom en bestemt port fra en bestemt ip-adresse:

    sudo ufw allow from 192.168.0.4 to any port 22

    Sperre

    Sperre for innkommende tcp- og udp-pakker på port 53:

    sudo ufw deny 53

    Sperre for innkommende tcp-pakker på port 53:

    sudo ufw deny 53/tcp

    Sperre for innkommende udp-pakker på port 53:

    sudo ufw deny 53/udp

    Slette regel

    Slette regelen deny 80/tcp:

    sudo ufw delete deny 80/tcp

    Tillate/sperre for tjenester

    Se en oversikt over tjenester:

    less /etc/services

    Tillate en tjeneste (f.eks ssh):

    sudo ufw allow ssh

    Sperre for en tjeneste (f.eks ssh):

    sudo ufw deny ssh

    Se status på ufw

    sudo ufw status

    Logging

    Aktivere logging:

    sudo ufw logging on

    Deaktivere logging:

    sudo ufw logging off

    Avanserte regler

    Å blokkere ip-adresser er ikke nødvendigvis enkelt, hvis du allerede har et sett med regler. Dette fori reglene i IPTABLES matches fortløpende. Et eksempel:

    Du startet med default deny, og la deretter inn port 80 for en offentlig server:

    sudo ufw allow 80

    Men oppdager så at de hacker deg fra 111.222.3.44, og legger derfor til:

    sudo ufw deny 111.222.3.44

    Hvilket ikke vil ha noen effekt, ettersom du allerede har tillatt tilgang med den første regelen.

    Det du må gjøre i dette tilfellet er å redigere /etc/ufw/before.rules og legge til seksjonen "Block IP" etter "Drop INVALID packets:

    -A ufw-before-input -s 111.222.3.44 -j DROP #Assuming no logging is desired of course)
    # drop INVALID packets
    # uncomment to log INVALID packets
    #-A ufw-before-input -m conntrack --ctstate INVALID -j LOG --log-prefix "[UFW B$
    -A ufw-before-input -m conntrack --ctstate INVALID -j DROP
    
    # Block IP
    # This is effective:
    -A ufw-before-input -s 111.222.3.44 -j DROP

    Et avansert eksempel:

    Scenario:Du vil blokkere tilgang til port 22 fra 192.168.0.1 og 192.168.0.7, men tillate alle andre på 192.168.0.x tilgang til port 22:

    sudo ufw deny from 192.168.0.1 to any port 22
    sudo ufw deny from 192.168.0.7 to any port 22
    sudo ufw allow from 192.168.0.0/24 to any port 22

    Det som er viktig å forstå her er at så snart en regel matcher, så vil ikke de senere regler bli evaluert. Ergo må du alltid plassere de mest spesifikke reglene først, og deretter de mer generiske. Når regler endres over tid kan det fort tenkes at du må slette noen av de eldre reglene, slik at de fortsetter å være i riktig rekkefølge!

    Hvis dette er status nå:

    sudo ufw status
    Firewall loaded
    
    To                         Action  From
    --                         ------  ----
    22:tcp                     DENY    192.168.0.1
    22:udp                     DENY    192.168.0.1
    22:tcp                     DENY    192.168.0.7
    22:udp                     DENY    192.168.0.7
    22:tcp                     ALLOW   192.168.0.0/24
    22:udp                     ALLOW   192.168.0.0/24

    Og du må gjøre en endring: Du vil blokkere tilgang til port 22 fra 192.168.0.3 i tillegg til 192.168.0.1 og 192.168.0.7:

    sudo ufw status
    Firewall loaded
    
    To                         Action  From
    --                         ------  ----
    22:tcp                     DENY    192.168.0.1
    22:udp                     DENY    192.168.0.1
    22:tcp                     DENY    192.168.0.7
    22:udp                     DENY    192.168.0.7
    
    sudo ufw deny 192.168.0.3 to any port 22
    sudo ufw allow 192.168.0.0/24 to any port 22
    sudo ufw status
    
    Firewall loaded
    
    To                         Action  From
    --                         ------  ----
    22:tcp                     DENY    192.168.0.1
    22:udp                     DENY    192.168.0.1
    22:tcp                     DENY    192.168.0.7
    22:udp                     DENY    192.168.0.7
    22:tcp                     DENY    192.168.0.3
    22:udp                     DENY    192.168.0.3
    22:tcp                     ALLOW   192.168.0.0/24
    22:udp                     ALLOW   192.168.0.0/24

    Hvis du bare hadde lagt til den nye deny-regelen ville tillat-regelen vært over. Tillat-regelen ville blitt effektuert, og den nye deny-regelen ville blitt ignorert.

    Annet

    ifconfig

    Se status på nettverkstilkoblingen din

    ifconfig

    netstat

    Se alle porter maskinen lytter på:

    netstat -l

    Se rutingtabellen:

    netstat -nr

    nmap

    Se maskiner i lokalnettverket:

    nmap -sP 192.168.1.0/24

    Se åpne porter på egen maskin:

    nmap 127.0.0.1

    Se åpne porter på annen maskin:

    nmap host.target.com

    dig

    Den eminente kilden til dette er thegeekstuff.com. Der ser du også flere måter å bruke dig på.

    Se alle DNS-oppføringer for et domene:

    dig vg.no ANY +noall +answer

    Se ip-adressen til et domene:

    dig vg.no +short

    Reverse look-up (Se hvilket domene som er på en gitt ip-adresse):

    dig -x 195.188.55.16 +short

    System

    Tjenester

    Restart/Stop/Start

    Restarte en tjeneste (foretrukket metode):

    sudo service networking restart

    Restarte en tjeneste (alternativ metode):

    sudo /etc/init.d/networking restart

    Starte en tjeneste (foretrukket metode):

    sudo service networking start

    Starte en tjeneste (alternativ metode):

    sudo /etc/init.d/networking start

    Stoppe en tjeneste (foretrukket metode):

    sudo service networking stop

    Stoppe en tjeneste (alternativ metode):

    sudo /etc/init.d/networking stop

    Installasjon og avinstallasjon

    apt

    Oppdatere pakkelistene:

    sudo apt update

    Installere oppdateringer:

    sudo apt upgrade

    Installere oppdateringer med endring av avhengigheter til nye versjoner av pakker:

    sudo apt dist-upgrade

    Installere et nytt program:

    sudo apt install nmap

    Avinstallere et program:

    sudo apt remove nmap

    Avinstallere et program og slette konfigurasjonsfiler:

    sudo apt --purge remove nmap

    Avinstallere pakker det ikke lenger er avhengighet til på systemet:

    sudo apt autoremove

    Tømme cache i /var/cache/apt/archives:

    sudo apt clean

    Annet

    reboot

    Restarte maskinen:

    sudo reboot

    shutwown

    Skru av maskinen:

    sudo shutdown -h now

    top

    Se en oversikt over kjørende prosesser, sortert etter cpu-forbruk:

    top

    Fileditering

    Vi

    Åpne en fil

    Åpne filen du skal editere (Bruk sudo på systemfiler.):

    sudo vi /etc/network/interfaces

    Editere en fil du har åpnet

    Bytte fra visningsmodus til editeringsmodus:

    a (eller i)

    Lagre en editert fil

    Lagre (og lukke) filen etter at du har editert den:

    [esc] :wq [Enter]

    Lukke en uendret fil

    [esc] :q [Enter]

    Lukke uten å lagre filen

    Lukke en fil du har gjort endringer i, uten å lagre endringene:

    [esc] :q! [Enter]

    Diverse

    cat

    Brukes bl. annet til å se innhold i tekstfiler:

    cat /home/brukernavn/tekstfil.txt

    Kjøre et gui-program som rot

    I Gnome bruker du gksudo (eller gksu), alternativt bruker du sudo:

    gksudo nautilus
    sudo pcmanfm

    symlink (snarvei)

    Oppretter snarveien viktig.txt på skrivebordet. Snarveien peker til /home/brukernavn/dokumenter/viktig.txt:

    ln -s /home/brukernavn/dokumenter/viktig.txt /home/brukernavn/Skrivebord/viktig.txt

    Oppretter snarveien Bilder på skrivebordet. Snarveien peker til /home/brukernavn/Bilder:

    ln -s /home/brukernavn/Bilder /home/brukernavn/Skrivebord/Bilder

    tar (pakke ut)

    Tilsvarer zip. Attributtene er som følger:

    • -x Pakker ut en tarball (en zippet fil/mappe)
    • -v Vis fremdriften av utpakkingen i terminalvinduet
    • -f Spesifiser filnavnet på tarballen
    • -j Dekomprimerer og pakker ut en tarball laget med bzip2 (tar.bz2)
    • -z Dekomprimerer og pakker ut en tarball laget med gzip (tar.gz)

    Med andre ord blir syntaksen for å pakke ut som følger:

    tar -xvf arkiv.tar
    tar -xzvf arkiv.tar.gz
    tar -xjvf arkiv.tar.bz2

    tar (pakke inn)

    Tilsvarer zip. Attributtene er som følger:

    • -c Oppretter en tarball
    • -v Vis fremdriften av opprettingen i terminalvinduet
    • -f Spesifiser filnavnet på tarballen
    • -z Komprimerer og pakker en tarball laget med gzip (tar.gz)

    Med andre ord blir syntaksen for å lage en tarball som følger:

    tar -czvf arkiv.tar.gz /home/brukernavn/MappeSomSkalZippes

    zip

    Pakke ut en zip-fil til en valgt mappe:

    unzip arkiv.zip -d /home/brukernavn/valgtmappe

    pdftk

    Splitte mangesidig pdf. Lage ny pdf av sidene 1, 2, 4 og 5:

    pdftk gammel.pdf cat 1 2 4 5 output ny.pdf

    Splitte mangesidig pdf. Bruke serier av sider:

    pdftk gammel.pdf cat 1-2 4-5 output ny.pdf

    Splitte mangesidig pdf. Lage ny pdf av hver enkeltside i den originale pdf'en:

    pdftk gammel.pdf burst

    De nye pdf'ene blir hetende pg_0001.pdf, pg_0002.pdf osv.

    Slå sammen flere pdf'er til én:

    pdftk pg_0001.pdf pg_0002.pdf pg_0004.pdf pg_0005.pdf output ny.pdf

    (Kilde til pdf-kommandoer)

    Let's Encrypt

    Fornye sertifikatet (gjøres som root):

    ufw disable
    certbot renew --dry-run --agree-tos
    certbot renew
    ufw enable
    reboot now

    Legg igjen en kommentar