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.
Å 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
Se brukere på maskinen:
cat /etc/passwd
Gruppeadministrasjon
addgroup
Opprette en gruppe:
sudo addgroup gruppenavn
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
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
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:
Tillatelser | Kommandoer | ||
---|---|---|---|
U | G | W | |
rwx | rwx | rwx | chmod 777 filnavn |
rwx | rwx | r-x | chmod 775 filnavn |
rwx | r-x | r-x | chmod 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
Let's Encrypt
Fornye sertifikatet (gjøres som root):
ufw disable certbot renew --dry-run --agree-tos certbot renew ufw enable reboot now