Linux.htm
- Introductie
- Help informatie
- Navigatie
- Environment variables
- Commandoregel (command line)
- Commando's
- Programma's en packages
- Zoeken
- Bestanden
- Shell
- Standard I/O
- Text editors
- Gebruikers
- Belangrijke files en locaties
- Services
- Apparaatbeheer
- USB-apparaten
- Netwerken
- Background jobs
- Problemen
- Links
Introductie
Help informatie
Het belangrijkste commando om uit te vissen hoe andere commando's werken is
man
(van manual = handleiding).
Dus met man passwd
vanaf de
commandoregel
zie je hoe het passwd
-commando werkt.
De commando's zijn onderverdeeld in 5 groepen:
- Commands and applications;
- System calls;
- Library calls;
- Drivers;
- Files.
In de uitvoer van man
zie je achter het commando
tussen haakjes een getal, en dat refereert naar 1 van bovenstaande groepen.
passwd
is een commando en zit in groep 1.
Maar je kan ook intikken: man 5 passwd
.
Dan krijg je de configuratie-file van het commando te zien.
Met man -k keyword
kan je zoeken naar
manual pages over commando's met dat keyword erin.
Met man -a keyword
kan je zoeken naar
manual pages met dat keyword in de titel.
Soms worden man-pagina's bijgewerkt, en om te zorgen dat je een actuele
versie hebt moet je onder sommige Linux-versies (Ubuntu, SUSE) het
commando mandb
uitvoeren, in andere (Redhat)
makewhatis
Heel veel commando's laten ook help-informatie zien als je geen opties
meegeeft, en zeker als je als optie -h
of
--help
meegeeft.
Websites
Goede websites met informatie:
- linux.com
Bevat o.a. veel tutorials, nieuws, etc.; - kernel.org
Gaat vooral over kernel sources, versies, etc.; - serverfault.com
Een goede site om vragen te stellen, vooral over Linux en Unix.
Navigatie
In verschillende commando's, zoals more
,
less
en man
werkt
navigatie hetzelfde.
Met spatie
ga je steeds 1 pagina vooruit (verder) in
het bestand, met Ctrl+B
ga je achteruit, en
met q
(uit) verlaat je de uitvoer.
Met /zoek_term
kan je in de uitvoer van
man
zoeken.
Met cd -
ga je terug naar de vorige directory
waar je was.
Environment variables
- $PATH
- $OLDPWD: de vorige directory waar je was, m.a.w. de directory waar je belandt als je cd - doet.
Commandoregel (command line)
Op de commandoregel kan je ook help
intikken.
Hou daarbij in de gaten dat er (net als in Windows) een verschil is tussen
commando's die onderdeel uitmaken van bash en van losse programma's.
ls
is een voorbeeld van het laatste.
Je kan dus bv. wel help pwd
intikken, maar
help ls
werkt niet.
man ls
werkt dan weer wel.
Met pijltje omhoog kan 1 van je eerdere commando's makkelijk opnieuw uitvoeren (evt. met aanpassingen).
Met history
kan je zien welke commando's je
al eerder uitgevoerd hebt.
(Die commando's zitten in de
hidden file .bash_history
in je home directory.
Er is ook een environment variable HISTFILE
).
Elke shell die je start heeft zijn eigen history.
Als je ook een timestamp voor elk commando wil, voer je dit uit:
export HISTTIMEFORMAT="%d/%m/%y %T "
Met whatis commando
kan je zien of
dat commando bestaat.
Met which commando
kan je zien of
waar het commando zich bevindt in de directorystructuur.
Met cd -
ga je terug naar de laatste directory.
Commando's
- adduser
- awk
- cal
- cat
- chgrp
- chmod
- chown
- copy
- cron
- cut
- df
- dig
- dmesg
- dmidecode
- dpkg
- echo
- fdisk
- file
- find
- free
- gdisk
- grep
- gunzip
- host
- hostname
- iostat
- ifconfig
- ip
- less
- logger
- logrotate
- ls
- locate
- lsmod
- lsusb
- man
- mkdir
- mv
- netstat
- parted
- ping
- pwd
- rfkill
- rm
- rmdir
- rpm
- sed
- sleep
- su
- systemctl
- tailf
- tcpdump
- telinit
- top
- touch
- tr
- tracepath
- traceroute
- tree
- uname
- uptime
- whatis
- whereis
- who
- wc
adduser
Toevoegen van nieuwe gebruiker:
adduser gebruikersnaam
Als je wilt dat een gebruiker ook sudo (extra privileges) kan gebruiken
doe je adduser gebruikersnaam sudo
awk
Met awk '{print $1}'
print je de 1e kolom
van wat er binnenkomt.
cal
Geeft zonder argumenten de kalender van de huidige maand.
cat
cat textfile
geeft de inhoud
van de file op het scherm weer.
chgrp
Met chgrp group file
maak
je groep group eigenaar van file.
chmod
Bestand uitvoerbaar maken:
chmod +x filename
(filenaam moet extensie .sh
hebben?!).
Aangezien elke set permissies bestaat uit read, write en execute (111),
kan je ook willekeurige combinaties toekennen met een getal, bv.
chmod 517 filename
.
De owner krijgt read en execute, de groep alleen execute, en iedereen
read, write en execute.
chown
Met chown user file
maak
je gebruiker user eigenaar van file.
cp (copy)
Hiermee kopiëer je een bestand:
cp source destination
cron (scheduling)
Met dit commando kan je taken op een vooraf vastgestelde tijd uitvoeren.
De bestanden die bij dit commando horen zitten in de directory
/etc
, zoals cron.daily
Je kan ook zelf de file crontab
bewerken.
cut
Met dit commando kan je delen uit regels weghalen (extract columns from input).
Stel dat je alleen het 1e veld wilt van regels waarin de onderdelen door
spaties gescheiden zijn, kan je
cut -d " " -f 1
gebruiken, waarbij 'd' staat voor delimiter en 'f' voor field.
Met $ cut -d: -f1 < /etc/passwd
krijg je
een lijst van de waardes in de 1e kolom van de password file.
Vaak wordt dit commando voorafgegaan door een grep-commando, om eerst bepaalde regels te vinden, en dan bepaalde velden er uit te halen.
dmesg
Display kernel-related messages on Unix-like systems. It used to control the kernel ring buffer. The output contains messages produced by the device drivers.
df
Geeft informatie over het file system.
dig (Domain Internet Groper
The dig command-line tool is mainly used for querying DNS servers for hostnames. A simple command such as dig google.com reveals the IP address of the domain and the name of the DNS server that hosts the DNS zone for it (also known as the name server).
In addition to the usual DNS tasks, the dig command can also be used to perform
a DNS zone transfer.
Let's request a zone transfer to zonetransfer.me, a vulnerable domain made for
educational purposes by Robin Wood (DigiNinja).
The request is made using the dig command, for the AXFR (zone transfer) register
of the zonetransfer.me domain to the nsztm1.digi.ninja server:
$ dig axfr zonetransfer.me @nsztm1.digi.ninja
You will often find that even though the primary DNS server blocks the
zone transfer, a secondary server for that domain might allow it.
The dig google.com NS +noall +answer
command will display all of the name servers for that domain.
Performing a DNS lookup to search for an IP address is passive reconnaissance. However, the moment you do a zone transfer using a tool such as dig or nslookup, it turns into active reconnaissance.
dmidecode
??
dpkg (package manager)
Low level command voor Debian-varianten (zoals Ubuntu) (high level is apt-get of yum).
Heeft veel opties, maar de belangrijkste zijn
--install
voor install, --remove
voor verwijderen
en -l
om een lijst van installed packages
te maken.
echo
Dit commando "echoot" de tekst die je intikt, in principe naar de terminal.
Dus: echo regel tekst
heeft tot
gevolg dat er regel tekst
verschijnt.
Om de uitvoer naar een bestand te krijgen plaats je er
> filename
achter.
Kan ook gebruikt worden om een bestand leeg te maken (i.p.v. weg te gooien):
echo > filename
fdisk
Bewerken van partition table. Oudere versies van fdisk kunnen de GPT niet aan, nieuwere wel.
file
Hiermee krijg je informatie over het type van een bestand:
file filename
free
Produceert gegevens over de vrije ruimte in het geheugen.
gdisk
Werken met partities. De 'g' staat voor GPT.
grep
Met grep Henk myfile
zoek je naar alle
regels in myfile
waar Henk
in voorkomt.
Optie -i
: Case insensitive
gunzip
Als je een .gz
-bestand wilt decomprimeren,
doe je gunzip naam.gz
host
Om een hostname naar een IP-adres om te zetten of omgekeerd doe je
host IP_address
of
host hostname
hostname
Met hostname
kan je de hostname bepalen.
Als je de FQDN wilt bepalen doe je hostname -f
.
iostat
The iostat command in Linux is used for monitoring system input/output statistics for devices and partitions.
last
List of last logged in users.
less
logger
Je kan het logger
commando gebruiken om zelf
messages te loggen:
logger options message
Optie -p
: -p facility.severity
Optie -t
: -t tag
Voorbeeld:
logger -p mail.info -t mailtest "Test"
logrotate
Je kan het logrotate
commando gebruiken voor
compressie, rotate, remove en zelfs het mailen van log files.
De configuratie zit in /etc/logrotate.conf
.
Je kan ook een regel opnemen om extra configuratiefiles mee te nemen:
include /etc/logrotate.d
Als je veranderingen in de configuratie aanbrengt, en je wilt testen, doe dan:
logrotate -fv /etc/logrotate.conf
ls (list files)
Dit commando is niet supernuttig zonder opties.
De optie -l
staat voor een lange listing.
Als je alleen directories wilt zien gebruik je -d
.
Met --color
worden er kleurtjes gebruikt.
Met de optie -a
zie je ook hidden files.
In Linux zie je met het normale ls
-commando geen
bestanden waarvan de naam begint met '.' (hidden files, dus).
Met de optie -F
zie je ook file types.
Als de naam eindigt op '/' is het een directory, '@' staat voor een link,
en '*' voor een executable.
Met de combi -lF
zie je ook waar evt. links
naartoe wijzen.
Files worden default gesorteerd op naam weergegeven.
Optie -t
sorteert de files op tijd, en met
-r
wordt de volgorde omgekeerd (van tijd of naam).
Optie -R
zorgt er voor dat files recursief worden
weergeven.
In een regel als
-rw-r--r-- 3 root root 47 Apr 27 23:15 testfile
zie je van links naar rechts de permissies, het aantal links naar de file (3),
de gebruiker en groep die eigenaar zijn van het bestand, de grootte van het
bestand (47 bytes), de datum waarop het bestand voor het laatst bewerkt is en
de bestandsnaam.
De permissies zijn, startend bij het 2e teken ('r' hierboven) verdeeld in 3 groepjes van 3, resp. voor de eigenaar, voor de groep en voor alle gebruikers. 'r' staat voor read, 'w' voor write en 'x' voor execute.
Het 1e teken op de regel is om aan te geven of het gaat om een directory ('d') of niet ('-').
ls -l [abc]*
laat alle bestanden zien die beginnen
met 'a', 'b' of 'c'.
ls -l [a-c]*
heeft hetzelfde effect.
Je kan het voorgaande commando ook negatief maken, dus alle bestanden
die niet met 'a', 'b' of 'c' beginnen:
ls -l [!a-c]*
.
Het escapen van characters gebeurt zoals normaal met '\', dus alle bestanden
die met '!', 'a', 'b' of 'c' beginnen:
ls -l [\!a-c]*
.
lsmod
Lijst van modules.
lsusb
Lijst van aangesloten en herkende USB-apparaten.
man (manual pages)
Toetsen | Betekenis |
---|---|
Spatie | Ga pagina naar beneden |
Ctrl+B | Ga pagina naar boven |
g | Ga helemaal naar boven |
G | Ga helemaal naar beneden |
Enter | Ga 1 regel naar beneden |
q | Verlaat man |
mkdir (make directory)
Je maakt een nieuwe subdirectory van de working directory met
mkdir subdirname
Met de -p optie kan je meteen een hierarchie maken, bv. mkdir -p 1/2/3
mv (move)
Hiermee verhuis je een bestand:
mv source destination
parted
Partition editor.
pwd (print working directory)
Drukt de huidige working directory af.
rfkill
Tool for enabling and disabling wireless devices.
Zonder parameters laat de tool zien welke devices al dan niet geblocked zijn.
remove
Verwijder een bestand: rm filename
Met rm -rf dir
verwijder je
een dir en alles wat er in zit.
rmdir (remove directory)
Je verwijdert een subdirectory van de working directory met
rmdir subdirname
.
Maar: alleen lege directories worden verwijderd.
Anders moet je rm gebruiken.
Met de -p optie kan je meteen een hierarchie verwijderen, bv. rmdir -p 1/2/3
rpm (package manager)
Low level command voor Redhat-varianten (high level is apt-get of yum).
Heeft veel opties, maar de belangrijkste zijn -i
,
voor install, -U
voor update,
-e
voor erase (uninstall), en
-q
voor query.
Query kan je alleen doen i.c.m. andere opties, bv.
-qa
laat alle geïnstalleerde packages zien.
rpm
handelt dependencies niet automatisch af.
sed
Perform editing operations on input.
sleep
Met sleep 1
wacht het script 1 seconde.
su (switch user)
Hiermee schakel je over naar een andere gebruiker:
su gebruikersnaam
systemctl
tailf
Laat het eind van een bestand zien??
tcpdump
Dit is een packet sniffing tool.
Opties:
- -n: Numerical addresses and ports;
- -A: Ascii output;
- -v: Verbose output;
- -vvv: More verbose.
In de uitvoer staat links de timestamp, dan de source, dan de destination. Aan het eind staat info over het packet.
telinit
Dit programma stuurt control commands naar de init daemon. Je kan er bv. het run level mee veranderen.
top
List of processes.
touch
Met touch filename
maak je een
bestand met de naam filename aan.
tr
Translate characters in the input to other characters.
tree
Dit commando is vergelijkbaar met ls -R
, maar het
geeft de info visueel weer.
Met tree -d
zie je alleen directories, en met
tree -C
krijg je er kleur bij.
uname
Prints system information.
uname -n
levert je de hostname.
uptime
wc (word count)
Met dit commando kan je het aantal woorden in een bestand tellen, of
(wc -l
) het aantal regels.
whatis
Geeft een 1 regelige beschrijving van een commando.
whereis
Vertelt waar je de source, binaries and man pages van een commando kan vinden.
who
Laat de ingelogde gebruikers zien, plus de terminals waarop zij zijn ingelogd.
Programma's en packages
Starten van programma's
Je kan o.a. als volgt programma's starten:
- Via de icoontjes aan de linkerrand van het scherm;
- Via het panel (de icoontjes rechtsboven);
- Via shortcuts op het bureaublad (als je die eerder gemaakt hebt);
- Door de naam van het programma op de commandoregel in te tikken;
- Door te zoeken naar de naam van een programma.
Als je bv. zoekt op word vindt je waarschijnlijk zelfs
Libre Office
, hoewel het woord 'word' niet eens in de naam voorkomt.
Package management
Vroeger
Oorspronkelijk gingen installatie met
packages in de vorm van .tar.gz
-files.
Je moet dat bestand dan in een specifieke directory decompressen, of
de sources met ./configure
en
make install
zelf compileren.
Dat heeft o.a. de volgende nadelen:
- Er kunnen bestaande configuratiebestanden (met allerlei eigen settings) overschreven worden;
- Er wordt geen rekening gehouden met afhankelijkheden tussen dit en andere packages;
- Het is lastiger om te deïnstalleren, zeker als het gecompileerd is.
Uncompressen: tar -xvf filenaam.tar.gz
Om problemen met configuraties te vermijden wordt bij het installeren van
packages de oude config bewaard.
Stel dat je bv. httpd
wilt updaten, dan wordt
httpd.conf
niet overschreven, maar er een nieuw
bestand httpd.conf.rpmnew
gemaakt (dit is voor
Red Hat varianten, in Ubuntu-varianten is het iets anders).
Ook kan je pre- en post-scripts voor en na de installatie laten uitvoeren.
Er wordt rekening gehouden met afhankelijkheden, en je kan meerdere packages bundelen in een nieuw package (denk bv. aan een Office-pakket, met daarin een spreadsheetprogramma en een databaseprogramma).
Packages kunnen gemakkelijk gedeïnstalleerd worden.
Packages van Red Hat, Suse, Fedora, CentOS e.d.,
eindigen in .rpm
.
Die van Debian, Ubuntu e.d., eindigen in .deb
Een .rpm
-package wordt geïnstalleerd met het
commando rpm
, een Debian package met het commando
dpkg
,
bv. dpkg -i package_name.deb
Deze commando's hebben echter beperkingen: ze houden geen rekening met afhankelijkheden, kunnen niet zoeken naar packages, en geven geen metadata over een package. Daarom zijn er een aantal nieuwe package managers ontwikkeld:
- Yellow dog Updater;
- Modifed (yum);
- Advanced Package Tool (apt);
- ZYpper.
Deze nieuwe managers maken gebruik van een repo(sitory), en gebruik van die van Redhat kost geld.
Als de repository geen gegevens over een package bevat moet je ze alsnog met de hand installeren.
Ubuntu apt-get
Voor het installeren of updaten van een nieuw package kan je het beste
apt-get update
doen, om de repositories bij te
werken.
Het bestand /etc/apt/sources.list
bevat de source URL's voor de packages.
Je hoeft de file niet zelf bij te werken, tenzij je je eigen repository
wilt hebben.
In de file kunnen verschillende types packages zitten:
- main: volledig ondersteund door Ubuntu;
- universe: niet ondersteunde open source packages;
- multiverse: niet ondersteunde packages waarvoor betaald is.
In elke categorie is een updates of bug-fixes component.
Installeren
In Debian (ook Kali) kan je de
Advanced Packaging Tool
(apt) gebruiken om
packages te managen.
Als je bv. Lynx
wilt installeren doe je
apt-get install lynx
Updates
2 commando's die je geregeld moet doen zijn
apt-get update
en
apt-get upgrade
De repository voor packages in Kali zit in
/etc/apt/sources.list
Commandoregel
De commandoregel kan je starten door rechts te klikken op het bureaublad.
1 van de opties is dan het starten van de command line
(Open Terminal
).
Veel simpeler is Ctrl+Alt+T
Zoeken
Net als in Windows kan je via de grafische interface naar bestanden zoeken, maar daarbij moet je (ook net als in Windows) wel rekening houden met waar je je bevindt.
Er zijn ook 3 commmando's om te zoeken vanaf de commandoregel, locate, which en find.
Locate
Voor je gaat zoeken moet je er met het commando
updatedb
eerst voor zorgen dat de zoekdatabase
up-to-date is.
Daarna zou je bv. het commando locate sbd.exe
kunnen intikken.
Als het goed is krijg je dan de paden naar de file, als hij bestaat.
Het maakt voor dit commando niet uit waar je je bevindt. De hele computer wordt doorzocht.
Which
Het commando which
werkt met executables.
In dit geval zou je het commando which sbd
kunnen proberen.
Find
find
is een meer agressief zoekcommando.
find [path...] [expression]
vindt recursief
alle bestanden in path... die aan de expression voldoen.
Opties:
- -name pattern: Vind files en folders die aan het patroon voldoen;
- -iname pattern: Zelfde als vorige, maar nu case insensitive;
- -ls: Doet een
ls
voor alle gevonden items; - -mtime days: Vind files die days oud zijn (mtime staat
voor modification time)
Je kan meerdere mtime's opgeven, met + en - tekens; - -size num: Vind files met grootte num
Metfind . -size +1M
vind je files in de current directory die minimaal 1M groot zijn (je kan ook 1G of 1K gebruiken); - -newer file: Vind files die nieuwer zijn dan file;
- -exec command {} \;: Voer op alle gevonden files het commando uit
Vbd.:find . -exec file {} \;
Als je bv. alle bestanden startend met 'sbd' op het systeem wil vinden, doe je
find / -name sbd*
Of bv.: find /etc -name passwd
Je kan ook extra operatie opgeven die op de gevonden files moeten worden
toegespast.
Met find / -name sbd* -exec file {} \
zie je het format van de files.
Bestanden
De meest gebruikte file manager (vergelijkbaar met
Verkenner (Explorer)
in Windows) heet
Nautilus
.
De map die standaard door Nautilus
wordt geopend
is de Home
folder.
Net als in Windows is dat de map waarin submappen zitten voor je documenten,
plaatjes, muziek, etc.
Als je links klikt op Computer
, krijg je
je iets vergelijkbaars als de C
-schijf in Windows.
Om te zien hoeveel ruimte bestanden en directories in beslag nemen tik je:
du
(de getallen aan het begin zijn in K bytes).
Met du -h
('h' = human-readable) worden de aantallen
bytes wat duidelijker weergegeven.
Met de optie --max-depth=getal
zie je
dat ('getal') aantal niveau's in de directorystructuur.
Directoryhierarchie
De top is root. De meest belangrijke daaronder zijn:
- /bin: binaries, executables;
- /etc: configuratiefiles;
- /home: bevat directories voor gebruikers;
- /opt: 3rd party software (bv. Virtualbox guest additions);
- /tmp: wordt soms leeggegooid bij reboot;
- /usr: programma's van gebruikers (er is bv. een /usr/bin, of een /usr/local, locally installed software die niet bij het basis-OS hoort);
- /var: variabele data, bv. log files;
- /boot: files die nodig zijn bij boot;
- /cdrom: mount point voor CD-ROMs;
- /dev: device files;
- /lib(64): (64 bit) libraries;
- /media: mount removable media;
- /export: shared file systems;
- /mnt: mount external file systems;
- /proc: geeft informatie over lopende processen;
- /sbin: system binaries;
- /root: home directory voor gebruiker root;
- /srv: data that are served by the system (/srv/www web server files);
- /sys: tonen en configureren van devices van de Linux kernel.
Als bv. AVG antivirus in /opt geinstalleerd wordt, heb je ook een /opt/avg/bin, /opt/avg/etc, /opt/avg/lib, /opt/avg/log. Je zou ook zoiets kunnen zien: /opt/myapp/bin en /opt/myapp/lib, maar... /etc/opt/myapp en /var/opt/myapp. En een programma zou ook van gesharede directories gebruik kunnen maken, zoals /usr/local/bin/myapp, /usr/local/etc/myapp.conf en /usr/local/lib/... Structuren als /opt/company_name of /opt/product_name komen ook voor.
Bestandsstructuren (command line)
De working directory is de map waarin je je bevindt, en je kan hem zien
met pwd
De home directory is de map waarin je belandt als je inlogt.
Je kan er heel makkelijk naar toe navigeren met het commando
cd
Het teken ~
staat ook voor home directory.
Het vreemde is wel dat ~/pictures/selfie
refereert aan /home/henk/pictures/selfie
als ik
henk
ben, maar dat
~henk
refereert aan
/home/henk
als ik niet henk
ben.
~jason staat voor /home/jason, ~root staat voor /root, en ~ftp staat voor /svr/ftp
Shell
Zo kan je zien wat je shell is:
echo $SHELL
Mogelijkheden zijn sh
(een hele oude),
csh
(lijkt op programmeertaal C),
ksh
(Korn) en
bash
(nieuwste en meest uitgebreide).
Als je wilt weten of bash
op je systeem aanwezig
is, tik je gewoon bash
Als je wilt weten in welke directory bash
geïnstalleerd is, kan je 1 van de volgende 3 commando's proberen:
whereis bash, whence bash, which bash
Als dat niet werkt kan je ook nog dit commando proberen:
grep bash /etc/passwd | awk -F: '{print $7}' | sort -u
Om de shell in bash te veranderen moet je het pad uit de vorige alinea
gebruiken in dit commando:
chsh path_to_bash
Je krijgt nu *of* een foutmelding, of je moet je wachtwoord intikken.
In het laatste geval moet je daarna uit- en inloggen om daadwerkelijk
bash te gebruiken.
Standard I/O
Elk programma dat in de shell wordt aangeroepen heeft 3 zogenaamde pipes, standard input (waar de invoer vandaan komt), standard output (waar de uitvoer naar toe gaat) en standard error (waar foutmeldingen naar toe gaan). Hun file descriptors zijn resp. 0, 1 en 2. Standard input is het toetsenbord, standard output en error zijn het scherm.
Elk van de 3 kanalen kan je naar een file "redirecten".
sort
haalt bv. zijn invoer als redirection vanuit
een bestand: sort < invoer.txt
.
Overigens werkt sort invoer.txt
net zo goed.
'>' redirects standard output naar een file.
Bestaande inhoud wordt overschreven.
'>>' redirects standard output naar een file.
Het wordt toegevoegd aan het eind van bestaande inhoud.
'<' redirects input van een file naar een commando.
Aangezien 1 staat voor standard output, is
ls -l > files.txt
hetzelfde als
ls -l 1> files.txt
(geen spatie na de 1).
Stel dat je 2 files list, waarvan de 2e niet bestaat.
De uitvoer van ls gaat dan naar st.out, de foutmelding naar st.error.
Met ls file niet-bestaand 2> log
gaat de foutmelding naar log
.
Je kan ze ook beide redirecten met
ls file niet-bestaand 1> log 2>err.log
.
En je kan beide naar dezelfde file redirecten, bv. met
ls file niet-bestaand > out.log 2>&1
Als je '&' gebruikt in combinatie met redirection, dan betekent dat dat het
om een file descriptor gaat.
Vb.: 2>&1
combineert standard output en standard
error.
2>file
redirects standard error naar een file.
Als je uitvoer in een zwart gat wil laten verdwijnen gebruik je het null
device: >/dev/null
De standard output van het ene commando kan via een filter als standard
input van het andere dienen, zoals bv.
ls -l | sort
of
ps -ef | grep httpd
(daarmee list je
alle processen, maar alleen de regels die 'httpd' bevatten worden getoond).
Text editors
nano
Een eenvoudige, simpele editor is nano
.
Onderaan het scherm staan een aantal commando's die je kan gebruiken,
bv. Ctrl+X
om eruit te gaan (er wordt gevraagd
of je het bestand wilt opslaan).
Gebruikers
Je kan een nieuwe gebruiker toevoegen met adduser
,
bv. adduser henk
Password kwijt
Dat kan je (in Ubuntu) als volgt resetten:
- Herstart de PC, en houdt
Shift
ingedrukt. - Je krijgt dan een menuutje met ca. 3 keuzes te zien, en selecteer
daaruit
Advanced options for Ubuntu
. - Je krijgt weer een menu (2 keuzes), en selecteer de optie met recovery mode.
- Tik in:
mount -n -o remount,rw /
, en geefEnter
. - Tik in:
passwd gebruikersnaam
(dus de naam van de gebruiker waarvan je het wachtwoord kwijt bent). - Herstart de PC.
Ik heb deze procedure uit deze YouTube video.
Belangrijke files en locaties
File or folder | General | Specific |
---|---|---|
/etc/services | Services | Lijst van poorten die bij services horen. |
/etc/sysconfig/network-scripts/ | Networking | RedHat: Configureer DHCP client. |
/etc/network/interfaces | Networking | Ubuntu: Configureer DHCP client. |
Services
Services zijn o.a. SSH
, HTTP
en SQL
Je kan services starten met
service servicenaam start
Een andere veel gebruikte manier is
/etc/init.d/servicenaam start
Andere opties zijn stop
en
restart
SSH
Werkt op poort 22, en wordt gestart met
service ssh start
Je kan de status van SSH
bekijken met
netstat -antp | grep sshd
HTTP
Deze wordt gestart met
service apache2 start
Als hij draait, en er is een web server op de PC, dan
moet je met de webbrowser naar
localhost
kunnen, of naar
127.0.0.1
, en de default page
van de web server te zien krijgen.
Een andere manier om te zien of deze service draait is m.b.v. het
netstat
-commando:
netstat -antp | grep apache
Boot persistence van services
update-rc.d servicenaam enable
Apparaatbeheer
Disks
Apparaten worden aangeduid met /dev/sdletter
,
bv. /dev/sda
'sd' staat voor SCSI disk.
/dev
is de directory voor apparaten.
Als een disk meerdere partitions heeft wordt dat aangeduid met
/dev/sda1
, /dev/sda2
, etc.
Het meest gebruikte diskformaat in Linux is ext4
,
vergelijkbaar met NTFS
in Windows.
USB-apparaten
Met lsusb
kan je zien welke apparaten er aan
je Linux hangen.
Netwerken
smbclient
smbclient is a client that is part of the Samba software suite. It communicates with a LAN Manager server, offering an interface similar to that of the ftp program. Operations include things like getting files from the server to the local machine, putting files from the local machine to the server, retrieving directory information from the server and so on.
Syntax:
smbclient servicename [ password ] [ -A ] [ -E ] [ -L host ] [ -M host ]
[ -I IP number ] [ -N ] [ -P ] [ -U username ] [ -d debuglevel ]
[ -l log basename ] [ -n netbios name ] [ -W workgroup ]
[ -O socket options ] [ -p port number ] [ -c command string ]
[ -T tar options ] [ -D initial directory ]
servicename is the name of the service you want to use on the server. A service name takes the form \\server\service where server is the netbios name of the LAN Manager server offering the desired service and service is the name of the service offered. So to connect to the service "printer" on the LAN Manager server "lanman", you would use the servicename \\lanman\printer.
Note that the server name required isn't necessarily the hostname of the server. The name required is a LAN Manager server name, which may or may not be the same as the hostname of the machine running the server.
Zie dit stuk op computerhope.com
iptables
# reset all counters and iptables rules
iptables -Z && iptables -F
# measure incoming traffic to IP_address
iptables -I INPUT 1 -s IP_address -j ACCEPT
# measure outgoing traffic to IP_address
iptables -I OUTPUT 1 -d IP_address -j ACCEPT
Telnet
Dit commando is min of meer obsolete. Het werd vroeger gebruikt om in te loggen in remote systems. SSH heeft die rol overgenomen.
telnet IP_address
Je kan Telnet ook gebruiken voor troubleshooten.
Stel dat je geen verbinding kan maken met Google, dan kan je
telnet google.com 80
proberen.
Als je verbinding krijgt kan je GET /
proberen.
Als je 'operation timed out' of 'connection refused' krijgt. In het 1e geval kon er geen verbinding gemaakt worden.
SSH
ssh username@IP_address
rdesktop
Als je ziet dat poort 3389 open staat, kan je met remote desktop (ook vanuit
Linux) verbinding maken:
rdesktop -u user_name IP_address
Netwerk commando's
service httpd status
tailf /var/log/httpd/acces_log
netdiscover
netdiscover -r 192.168.56.0/24
betekent
dat je alleen dat subnet gaat controleren.
Je kan ook netdiscover -i eth1
doen.
ifconfig
Dit commando wordt uitgefaseerd, maar is vaak nog beschikbaar.
ifconfig [-a]
doet een beetje hetzelfde als
ipconfig /all
in Windows.
Je krijgt een overzicht van interfaces, zoals eth0
(bedrade netwerkverbinding), l0
(loopback) en
wlan0
(wireless verbinding).
Het laat ook allerlei info over de interfaces zien,
zoals MAC-adres (Hwaddr), IP-adres, etc.
Als ifconfig
beschikbaar is kan je zo een
adres aan je network device geven:
ifconfig network_device IP_addr netmask
netmask
, bv.
ifconfig eth0 10.11.12.13 netmask 255.255.255.0
, en
dan ifconfig eth0 up
ip
Je kan je IP-adres bepalen met ip address
.
Je mag address ook afkorten tot 'addr' of zelfs 'a'.
Je ziet vaak minimaal 2 adressen, nl. van het loopback device
(lo
), en van de andere netwerkkaarten
(bv. eth0
).
Om een lijst van network devices op je systeem te krijgen doe je
ip link
.
Je kan zo een adres aan je netwerk device geven:
ip address add IP_addr[/netmask] dev
network_device
, bv.
ip address add 10.11.12.13/255.255.255.0 dev eth0
.
Om de interface up te zetten doe je
ip link set eth0 up
Voor sommige operaties moet je een interface even down en later weer up
zetten, bv.
ifconfig wlan0 down
Met ifconfig eth0 | grep ether
krijg je de regel waarop het MAC-adres staat.
Op macvendors.com
kan je de fabrikant van je netwerkkaart te weten komen door het
MAC-adres in te vullen.
Je kan het MAC-adres veranderen met
ifconfig wlan0 hw ether new_MAC_addr
ping
ping -c cnt host
stuurt
cnt ICMP packets naar de host.
In de laatste regel van de uitvoer staat rtt voor round trip time.
Als je wel kan pingen op het IP-adres maar niet op de naam, dan is er iets mis met DNS name resolution.
Als je Destination Host Unreachable
krijgt,
kan je het beste een lokaal adres proberen te pingen.
Als dat ook niet lukt kan er iets mis zijn met de kabel, de network driver,
de networking services (bv. niet gestart).
Als je wel een host op het lokale netwerk kunt pingen, dan ligt het probleem buiten je systeem. Probeer dan andere externe sites te pingen. Het zou kunnen zijn dat de specifieke site nooit reageert op ping messages.
Je kan een netwerk interface in promiscuous mode zetten met
ifconfig eth0 promisc
.
Dat werkt echter alleen in netwerken met hub technologie, niet met switches.
route
route -n
is vergelijkbaar met het
gelijknamige commando in Windows.
traceroute
IP-adressen worden standaard naar namen omgezet, tenzij je
traceroute -n
doet.
Als je in de uitvoer een asterisk ziet waar je normaal een tijd zou verwachten, betekent dat dat er geen antwoord is ontvangen.
tracepath
Produceert 1 regel voor elk ontvangen antwoord, i.t.t. traceroute, dat 1 regel per hop laat zien.
iwconfig (draadloze netwerken)
Met iwconfig
('w' staat voor wireless)
krijg je info over de toestand van draadloze netwerken.
Met airmon-ng start wlan0
kan je de wireless adapter in monitoring mode zetten.
Daarbij moet je wlan0
vervangen door de naam
van je eigen wireless adapter.
Het kan trouwens ook met
iwconfig wlan0 mode monitor
, en met
iwconfig wlan0 mode managed
ga je weer terug.
Als je weer iwconfig
doet zou de mode veranderd
moeten zijn in Monitor
Met airodump-ng wlan0
host
Met host
kan je het IP-adres van een site te zien krijgen, bv.
host www.cisco.com
Je kan er ook de name servers van een domein mee zien:
host -t ns megacorpone.com
, of
host -t mx megacorpone.com
de mail servers.
Om te zien of dit domein ook een webserver is, doe je:
host www.megacorpone.com
Je kan als volgt een zone transfer proberen:
host -l megacorpone.com ns2.megacorpone.com
(ns1 lukt niet).
netstat
Ook ongeveer gelijk aan Windows.
Doe bv. netstat -antp
Opties:
- -n: Numerical addresses and ports;
- -i: List of network interfaces;
- -r: Route table (netstat -rn);
- -p: PID and program used;
- -l: Listening sockets (netstat -nlp);
- -t: Limit output to TCP (netstat -tnlp);
- -u: Limit output to UDP (netstat -nulp);
arp-scan
arp-scan sends ARP packets to hosts on the local network and displays any responses that are received. The network interface to use can be specified with the --interface option.
Opties:
- -l: Lokaal netwerk;
- -I interface: Scan deze interface;
Bluetooth
Vergelijkbaar met het commando ifconfig gebruik je hier
hciconfig
hciconfig
is vergelijkbaar met
ifconfig
, maar gericht op Bluetooth.
Om te kunnen scannen doe je
hciconfig hci0 up
, en dan
hcitool scan
Je hebt ook een MAC-adres nodig, en daarvoor doe je
hcitool inq
(van inquire)
Met dit commando krijg je ook de class en de clock offset.
Channel surfing
Met hcitool con
krijg je een lijst met details voor de connecties die je kan zien.
Daarna doe je
rfcomm connect MAC_address 9
Je PC een static IP-adres geven
Je moet daarvoor de file /etc/network/interfaces
bewerken.
Je moet een entry van een aantal regels aan deze file toevoegen, bv. iets als:
auto eth0
iface eth0 inet static
address 192.168.2.23
netmask 255.255.255.0
gateway 192.168.2.1
Na zo'n wijziging moet je wel de networking service herstarten
(service networking restart
).
Background jobs
Als je een script start kan je geen andere commando's meer geven aan de shell.
Maar je kan een programma ook op de achtergrond laten draaien, door
achter het commando een '&' te zetten.
Dus zo: bgjob.sh &
De standaard uitvoer blijft echter nog wel steeds naar de terminal komen. Maar dat kan je natuurlijk oplossen door '> uitvoerbestand' toe te voegen.
Er zijn een aantal speciale tekens in Linux, zoals <, >, |, #, ?, *.
Wat als je zo'n teken toch perse in een file- of directory-naam wilt gebruiken
(hoewel het wordt afgeraden)?
Gewoon tussen quotes zetten, dus bv.:
mkdir '#trending'
.
Het betekent alleen een hoop extra werk, want in alle andere commando's met
deze map moet je ook quotes gebruiken.
En je loopt kans dat bepaalde third party software er niet mee overweg kan.
I.p.v. quotes te gebruiken kan je ook backslash voor het speciale teken zetten.
Als je backslash aan het eind van de regel zet en Enter
geeft, escape je de Enter
, en kan je op de volgende
regel doorgaan met intikken van je commando.
Toetsencombinaties
Toetsen | Betekenis |
---|---|
Ctrl+C | Beëindig het huidige lopende commando. |
Ctrl+D | Eind van de invoer. Wordt bv. gebruikt met commando's als sort ,
als je het commando aanroept zonder het een invoerbestand te geven.
|
Ctrl+U | Veegt de huidige regel schoon. |
Ctrl+Z | Zet het huidig lopende commando op 'suspend'. |
Problemen
command not found
Je krijgt bij allerlei commando's (maar niet bij allemaal) de melding:
bash: iwconfig: command not found
Oplossing: je hebt onvoldoende privileges.
Doe sudo su
, en je switcht naar superuser
(als je het goede password weet).
Links
Reageer via E-mail (dalmolen@xs4all.nl)
Deze pagina is voor het laatst gewijzigd op: 15-02-23 14:03:59