Linux
- 1.1 Introductie
- 1.2 Ubuntu (onder VMWare)
- 2.1 CLI and text file handling
- 3.1 Directories
- 3.2 File and Directory permissions
- 4.1 sudo en root
- 4.2 Apache installeren
- 4.3 DNS en Virtual Hosts - Theorie
- Install MySQL
- Mac/VirtualBox Screendumps
- endlessh
- Create User Linux and DB
- Plesk
1.1 Introductie
Wat gaan we leren?
- Een web server opzetten op Linux (Unix).
- Installeren van Linux.
- Installeren van software op Linux.
- Directories, users en rechten op Linux.
- Beveiligen van Linux; iptables, firewall
- Installeren en configurenen Apache
- Installeren van MariaDB en DB opzetten
- Eenvoudige web site opzetten: vhosts.
Opdracht
- Wat is een Operating Systeem?
- Zoek uit wat het verschil is tussen Unix en Linux. Leg het uit.
- Noem drie Linux distributies.
- Hoe oud zijn elk van de genoemde Linux distributions (schrijf jaar op)?
- Noem van elk van de genoemde Linux distributions een voordeel op.
- Je kunt drie soorten Operating Systems ondersheiden: Unix, Linux en Windows. Schrijf van elk van deze Operating Systems een voordeel en één nadeel op.
- Waarom zou je als Web Developer wat van Linux moeten weten?
- Wat kun je verdienen als Linux beheerder (zoek naar een vacature)?
- Wat wil jij leren in de Linux lessen?
Download template met vragen, vul die in en upload dit in Teams
1.2 Ubuntu (onder VMWare)
Installatie Ubuntu Server
Let op dit proces duurt erg lang. Tijdens de installatie worden alle security updates gedownload en geïnstalleerd. Tijdens dit proces kun je de installatie gewoon laten door draaien en andere dingen doen.
Onder VMWare Workstation player 15 installeren we Ubuntu Server 18.x.x
- Download en installeer VMWare Workstation 15
( https://www.vmware.com/nl/products/workstation-player/workstation-player-evaluation.html ) - Download Ubuntu Server 18.x.x dit is een iso file van ongeveer 900 MB
- Start VMWare Workstation 15 - Create New Virtual Machine
- Selecteer de iso file en start ed installatie.
- Installeer open SHH server, maar importeer geen identiteit verder kun je overal de default waarden nemen tijdens de installatie.
-
Password
Let op dat jouw username en password goed moet onthouden! - Download MobaXterm (als je het verschil niet weet tussen de portable version en de installer dan kies je installer)
-
IP Nummer
Start jouw Ubuntu Server binnen VMWare, log aan en typeifconfig
kijk welk ip nummer jouw server heeft. Onthoud dit nummer. - Start MobaXterm en create een nieuwe sessie, kies SSH en vul je ip nummer van jouw Ubuntu Server in
- Log aan met jouw username en password.
Installatie MobaXTerm
- download MobaXterm the Home Edition, die is 'Free'.
- installeer MobaXterm
Start MobaXTerm op.
- Start je Ubuntu Server binnen VMWare op.
- Klik op Session, SSH en vul daar het ip nummer van je Ubuntu server in en druk op OK. Als he goed is, maak je nu een verbinding met jouw Ubuntu Linux Server.
Aanmaken gebruiker op Ubuntu WS
(dit hoeft alleen als je tijdens de installatie geen gebruiker hebt aangemaakt)
Maak een gebruiker aan op je Ubuntu Server.
Je wilt niet onder root aanloggen, omdat dat onveilig is. Je wilt dus een 'gewone user' aanmaken.
Op he Ubuntu server waar je nu nog onder root bent aangelogd type je:
adduser username
Vervang username door jouw username. Let op in een Linux username zijn geen spaties en degelijke toegestaan.
Om ervoor te zorgen dat je administratieve rechten (root) hebt voer je het volgende commando uit:
usermod -aG sudo username
Vervang ook hier de username door jouw gekozen naam.
Log nu uit. met exit en probeer via MobaXterm opnieuw aan te loggen onder jouw nieuw user account.
Probleem met connecten
Stap 1
Als je met MobaXterm gen verbinding kunt maken, maar je kunt met een Windows cmd-box wel pingen naar het IP nummer van je Ubuntu sever dan kun je met het volgende commando dit waarschijnlijk oplossen. Dit moet je uitvoeren op je Ubuntu WS binnen VM Ware.
sudo apt-get install openssh-server
Dit installeert open SSH server.
Stap 2
Kun je vanuit de windows command box het IP nummer van je Ubuntu Server pingen? Open hiervoor een cmd box en type het commando ping 0.0.0.0
in. Vervang hierbij 0.0.0.0 met het ip nummer van jouw Ubuntu Server.
Als dit niet lukt dan helpt het soms om je Windows machine te re-booten (herstarten).
Mac
Werk je op een Mac dan heb je een paar extra uitdagingen.
VMWare werkt niet op een Mac, kies in plaats daarvan VirtualBox (6.x) van Oracle.
MobaXterm werkt ook niet op een Mac, maar de terminal applicatie op een Mac voldoet ook. Er zijn enkele verschillen en die hebben vooral te maken met het opzetten van SSH keys. Dit heeft te maken met security en komt pas later in deze lessenserie aan de orde.
Na de installatie van Ubuntu binnen VirtualBox niet vergeten de VM uit te zetten en opnieuw op te starten.
Clean disk space
https://itsfoss.com/free-up-space-ubuntu-linux/
# This option removes libs and packages that were installed automatically to satisfy the dependencies of an installed package.
sudo apt-get autoremove
# APT package management system keeps a cache of DEB packages in /var/cache/apt/archives.
sudo du -sh /var/cache/apt
sudo apt-get autoclean
sudo du -sh /var/cache/apt
# or clean cache completely: sudo apt-get clean
# Clean log files older than 30 days
journalctl --disk-usage
sudo journalctl --vacuum-time=30d
journalctl --disk-usage
# clean up snap packages (2 versions are kept and these packages tend to be large).
du -h /var/lib/snapd/snaps
set -eu
snap list --all | awk '/disabled/{print $1, $3}' |
while read snapname revision; do
snap remove "$snapname" --revision="$revision"
done
du -h /var/lib/snapd/snaps
Update Ubuntu System
sudo apt-get update
sudo apt-get upgrade
sudo reboot
--
2.1 CLI and text file handling
Command Line Interface
In deze les gaan we voor het eerst kennis maken met de command line. We bespreken wat commando's en gaan daarmee oefenen. Het doel van deze les is een kennismaking met de command line.
CLI is de command line interface van LInux.
Linux bestaat eigenlijk uit de CLI en optioneel zit daarbij een grafische gebruikers interface (GUI). Linux Servers die in datacenters staan zijn vaak headless. Dat betekent dat er geen monitor en toetsenbord is aangesloten op de server. Vaak bestaat één fysieke server ook meerdere virtuele servers. ALs je zelf zo'n server wilt dan moet je zoeken naar VPS, dat staat voor Virtual Personal Server. Een VPS met Linux is erg goedkoop omdat het OS gratis is. Ook is de performance vaak zeer redelijk tot goed. Deze website draait ook op een VPS van een paar euro per maand en samen met deze website draaien er nog een paar websites op dezelfde Virtual Server. Er draaien meerdere virtuele (web) hosts op één virtuele server. Wat een virtual web host is leren we over een paar lessen.
Headless
In data centers staan dus veel headless Linux servers.
Op zich kan er wel een GUI worden toegevoegd, maar dit wordt vaak als omslachtig en traag gezien. Bovendien hebben echte 'hackers' een voorkeur voor een CLI. Je zult leren dat de CLI van Linux erg rijk is en dat je hele gave dingen met een paar commando's kan uitvoeren. Binnen Linux kun je ook vrij eenvoudig zaken automatiseren. Een goede Linux systeembeheerder automatiseert dus als zijn taken en hoeft daarna alleen nog maar updates uit te voeren en te monitoren dat alles goed gaat.
Linux en tekst bestanden (text files)
Linux heeft veel configuratie in plain text files staan. Daarom zijn er veel commando's die iets met files doen.
In de Linux lessen gaan we af en toe een paar handige Linux CLI commando's behandelen.
Om te beginnen gaan we samen in de les naar de volgende commando's kijken. In deze les een paar handige commando's die te maken hebben met files.
Belangrijke commando's voor file handling
commando | wat doet het? | voorbeeld |
man | laat een help pagina van een commando zien | man cat |
cat | laat de inhoud van één of meerdere files zien | cat /var/og/syslog |
grep | zoekt in een file naar een woord | grep error /var/log/syslog |
head | laat de eerste regels van een file zien |
head /var/log/syslog |
tail | laat de laatste regels van een file zien |
tail /var/log/syslog |
touch | maak een legel file |
touch test |
echo | print iets |
echo "Hallo" |
cp | CoPy - kopieer een file |
cp file01 file02 |
mv | MoVe - verplaats/hernoem een file |
mv file01 file02 |
rm | ReMove - verwijder een file |
rm file01 |
Belangrijk: Linux is case senstive!
Redirect output
Linux heeft een paar handige concepten. Zo kan je de output die naar het scherm gaat omleiden naar een file. Dat heet redirect output.
Neem bijvoorbeeld het commando head /var/log/syslog
Dat laat de eerst paar regels van de Linux log zien. Je kunt deze output naar een file wegschrijven. Bijvoorbeeld head /var/log/syslog > mijnTestFile
Het > teken schrijft dus de output van een commando naar een file. Het >> teken voegt de output van een commando toe aan de file.
Voer de volgende commando's uit en probeer te begrijpen wat er gebeurt en waarom.
echo 0123456789 > file01
cat file01 file01 > file02
cat file02
cp file02 file01
cat file01 >> file02
ll
cat file02
Haal alle files weg: rm file01 file02
Commando's aan elkaar rijgen
In Unix/Linux kun je commando's aan elkaar rijgen, dat kan super handig zijn en we komen daar nog in detail op terug, maar kijk eens naar het volgende voorbeeld:
cat /etc/passwd | cut -d ":" -f1 | sort
Wat hier staat is het volgende. Laat de inhoud van de file /etc/passwd zien en gebruik de output als input foor het commando cut. Het commando cut haalt de eerste kolom uit de input en deze output wordt weer gebruikt voor de input van het sort commando. Deze sorteert de output en stuurt de output naar het scherm
Je kunt natuurlijk de output ook naar een file sturen zoals we in het vorige hoofdstuk hebben geleerd.
cat /etc/passwd | cut -d ":" -f1 | sort > user_names.txt
Het commando is nu uitgebreid met > user_names.txt en dat zorgt ervoor dat de output niet naar het scherm gaat, maar naar een file.
Opdrachten
Zorg ervoor dat je VM met Ubuntu Server draait en log aan onder jouw eigen gemaakte user met MobaXterm.
- Ubuntu WS heeft een soort notepad/kladblok.
Met de editor nano kan je iets in de file zetten of veranderen. Open een nieuwe file metnano file01.txt
Zet jouw naam in de file en bewaar (save) de file.
Zoek uit de lijst hierboven met welk commando je de inhoud van de file kunt afdrukken, probeer of het werkt en zet het commando op je antwoordenblad. - Voer de onderstaande stappen uit en schrijf op wat de uitkomst van stap 4 is. Je ziet drie getallen, beschrijf wat deze getallen betekenen.
- Maak met het touch commando een file aan en noem die file.txt
- Gebruik het echo commando om Hello world this is nice! in de file.txt te plaatsen
- Gebruik de geleerde kennis om de tekst Hello world this is nice! vier keer onder elkaar in de file.txt te krijgen.
- Voer het commando
wc file.txt
uit. Wat zie je en wat betekent dat? Als je niet zeker bent, controleer dan metman wc
hoe wc precies werkt.
- Zoek op hoe je met het commando tail de laatst 20 regels moet afdrukken. Druk de laatste 20 regels van /var/log/syslog af en plaatst die in een file laatst20.txt.
Voer het commandocat laatste20.txt laatste20.txt laatste20.txt > laatste.txt
uit.
Hoeveel regels staat er in laatste.txt? Schrijf op hoe je dit hebt gedaan en schrijf je antwoord op. - Als ubuntu is opgestart dan wordt er een regel in de /var/log/syslog gelplaatst, bijvoorbeeld;
Jan 12 21:27:40 ubuntu_vm systemd[1121]: Startup finished in 102ms.
Gebruik grep en zoek uit hoe lang jouw Ubuntu er de laatste keer over deed om te starten. Schrijf het commando dat je hebt gebruikt op. - Laat alleen alle regels uit de syslog file zien van vandaag. Schrijf het commando dat je hebt gebruikt op.
- Begin met een file01 en zet daar text in. Het commando
cat file01 > file01
doet iets vreemds; de file01 is leeg, leg uit waarom. - Met het commando
sudo apt-get install sl
installeren we een programmaatje. Omdat we iets selecteren moeten we 'elevated rights' krijgen. Dat is een mooie manier om te zeggen dat we root toegang moeten hebben. Sudo staat voor "Super User DO". In een vervolg les gaan we hier nog verder op in. Installeer het programmaatje en start het op.
Vraag: Kan je de stoomlocomotief ook laten vliegen? Ja, hoe dan - en hoe ben je hier achter gekomen?
Metsudo apt-get remove sl
kunnen we het programmaatje weer verwijderen. - Kijk naar het volgende commando en test het uit.
cat /var/log/syslog | wc | awk '{print $1}'
Het commando is aan elkaar geregen, je kunt er stapjes afhalen om te kijken wat de vorige stapjes deden.
Omschrijf kort op je antwoordenblad wat commando laat zien. - Met
ifconfig
konden we ons ipnummer vinden weet je nog? Probeer maar.
Alle ipnummers in onze VM's beginnen met 192. Metgrep 192
kun je dus de juiste regel vinden.
Rijg de twee commando's aan elkaar, zodat je in één keer de regel met het juiste ipnummer vind.
Schrijf het commando op dat je hebt gebruikt. - Het volgende commando kan ook korter.
cat /var/log/syslog | tail
Hoe doe je hetzelfde, maar dan met minder commando's? Schrijf he verkorte antwoord op. - Maak een file met het commando
echo test > test.txt
Je wilt de file kopiëren en je typt in:
mv test.txt test-bak.txt
Helaas is dat niet goed gegaan want je wilde de file kopiëren en je hebt een verkeerd commando gebruikt. Kijk metls -la
welk(e) files je nu hebt.
Met welk commando corrigeer je dit en zorg je ervoor dat je alsnog een kopie hebt? - Maak drie files, file01.txt, file02.txt en file03.txt en zet in alle drie de files de volgende regel tekst: "Dit is een test bestand!". Voer het commando
cat file01.txt file02.txt >> file03.txt
uit.
(1) Hoeveel keer staat de test-regel nu in het bestand file03.txt ?
Voer nu het commandocat file01.txt file02.txt > file03.txt
uit.
(2) Hoeveel keer staat nu de test-regel in het bestand file03.txt ?
Leg uit waarom het tweede geval minder test-regels laat zien dan het eerste geval.
--
3.1 Directories
File systeem
Het unix file systeem is een hiërarchisch systeem, net als bij Windows. Dat betekent dat er ergens een begin is; onder windows is dat (bijna altijd) c:\ en onder Linux is dat /
Uitleg:
Directory Commando's
commando | wat doet het? | voorbeeld |
ls | Laat directory zien | ls |
ll | Laat directory (long format) zien | ll (is alias van ls -la) |
mkdir | MaKe DIRectory - Maak een directory | mkdir test |
rmdir | ReMove DIRectory - Verwijder directory | rmdir test (moet wel leeg zijn) |
cd | Ga naar directory | cd test |
cd .. | Ga naar de vorige directory | |
cd . | Ga naar deze directory |
onzinnig commando |
cd ~ | Ga naar jouw home directory |
|
pwd | Print Working Directory |
Laat zien waar je 'bent'. |
File Commando's (herhaling)
commando | wat doet het? | voorbeeld |
cat | Laat inhoud van een file zien | cat file01.txt |
touch | Maak een nieuwe lege file | touch file01.txt |
cp | Kopier een file | cp file01.txt file02.txt |
rm | Delete (remove) file | rm file01.txt |
nano | "Simple" text editor | nano file01.txt |
Opdracht 1
- ga naar jouw home directory cd ~
- maak en directory test
- kopieer de file /etc/passwd naar de test directory
max@ubuntu_vm:~/test$ ll
total 12
drwxrwxr-x 2 max max 4096 Jan 23 10:47 ./
drwxr-xr-x 7 max max 4096 Jan 23 10:46 ../
-rw-r--r-- 1 max max 1552 Jan 23 10:47 passwd
max@ubuntu_vm:~/test$
- laat de inhoud van de passwd file zien met behulp van het commando cat
- met grep kan je zoeken in een file, bijvoorbeeld
grep root passwd
- redirect de output van het vorige commando naar de file output.txt
Schrijf het hele commando op je antwoordenblad
Opdracht 2
- ga naar jouw home directory cd ~
- verwijder de directory test die je bij de vorige opdracht hebt gemaakt.
- maak een nieuwe directory en noem die opdracht2
- in de directory opdracht2 maak je twee nieuwe directories opdracht21 en opdracht22
- in de directory opdracht 21 maak je drie lege files: file01, file02 en file03
- in de directory opdracht22 maak je één nieuwe directory opdracht31
De gehele structuur ziet er dan als volgt uit
home | directory | directory | files/directory |
~ | opdracht2 | opdracht21 | file01, file02, file03 (files) |
opdracht22 | opdracht31 (directory) |
Ga terug naar jou home directory en voer het volgende comamndo uit:
ls -R opdracht2
Zet de output op je antwoordenblad.
Opdracht 3 - vragen
a) Als je ls -la
uitvoert dan zie je files en directory's. Hoe kun je zien wat een file is en wat een directory is?
b) Wat gebeurt er als je cd ../..
uitvoert?
c) Wat is een absoluut path in Linux?
--
3.2 File and Directory permissions
Voor deze les moet je weten hoe je door directory's kunt navigeren en hoe je een file kunt aanmaken en kan editen. Als je nei tweet hoe dat werkt dan moet je eerst terug naar de vorige les.
In deze les gaan we een wat lastigere onderwerp behandelen, rechten binnen Linux.
In de opgaven gaan we zelf oefenen. Veel opgaven worden in de filmpjes voorgedaan.
Inleiding
Het Unix file systeem is een hiërarchisch systeem, net als bij Windows. Dat betekent dat er ergens een begin is; onder windows is dat (bijna altijd) c:\ en onder Linux is dat /
Rechten worden gegeven op directory's of files. Elke file of directory heeft een eigenaar/user en een groep/group. Er zijn drie soorten rechten Read, Write en eXecute. Deze drie rechten kunnen aan de user, group of aan iedereen (other) worden gegeven.
Owner en Group
FIles en directories hebben een owner (ook wel user) en een group. De owner is meestal degene die de file heeft aangemaakt. De rechten van de owner en de group kunnen apart worden ingesteld.
RWX - Read, Write en Execute
We kennen drie soorten rechten: Read, Write en eXecute (RWX). Read is voor lezen, write voor aanpassen/schrijven en execute betekent dat je een file mag uitvoeren. Voor een directory betekent de execute dat je naar de directory toe mag gaan.
ls -l
Als je een ls -l
doet dan zie je bijvoorbeeld
drwxrwxr-x 17 max apache 4096 Nov 27 22:03 www
De drwxrwxrwx geven de file permissions (rechten) aan, daarover later meer). De 17 geeft het aantal links aan, dit is voor nu niet belangrijk. 'max' is de owner, ook wel user van de file. apache is de group waartoe de file behoort. 4096 is het aantal bytes dat de file in beslag neemt (dat is niet helemaal hetzelfde als de grootte van de file), dan volgt de 'last modification date' en als laatste zie je de file name.
De owner kan bijvoorbeeld Read and Write-rechten hebben en leden van de group kunnen bijvoorbeeld alleen Read-rechten hebben. Je kunt tenslotte ook nog de rechten van 'iedereen' (other) instellen, dat zijn alle gebruikers die niet de owner zijn en niet in in de group zitten.
Voor elke file en directory staan 10 letters, we kijken naar de laatste 9. Dit zijn 3 groepjes van 3; rwx, rwx en rwx. De eerste rwx staat voor de owner/user van de file, de tweede voor de group en de laatste voor others.
Stel je ziet dit als je een ls -l
uitvoert:
-rw-r--r-- 1 root root 52 Jan 11 18:18 subuid
Dat betekent dat de file subuid van root is (owner/user) en dat die ook aan de group root toebehoort. De owner root heeft Read en Write rechten en de groep heeft alleen read rechten. Ten slotten hebben others ook read rechten.
File permissies instellen
Met het commando chmod (CHange file MODe bits) kunnen de rechten worden ingesteld van de User, Group en Others. Stel je wilt de rechten instellen van de User en de Group dan gebruik je UG. Stel, je wilt de rechten instellen van de User, Group en Others dan gebruik he UGO.
Dan kun je rechten toevoegen of afnemen, dat doe je met een + of een -.
Je kunt ook rechten instellen dat doe je met een =
Vervolgens kun je read, write en execute rechten toekennen of afnemen. Read en write toevoegen doe je met +rx. Afnemen van alle rechten doe je met -rwx.
Het zetten van bijvoorbeeld alleen lees rechten doe je met =r
Voorbeelden chmod
Afnemen van read rechten van others voor file_a | chmod o-r file_a |
Toevoegen van read en write rechten aan user en group voor alle files in deze dierctory | chmod ug+rw * |
Toevoegen van alle rechten aan iedereen voor alle files in deze directory en alles 'hieronder' | chmod -R ugo+rwx |
Instellen van alleen leesrechten voor de group op alle files in deze directory | chmod g=r * |
Recursief
In het laatste commando is de flag -R toegevoegd. Dit betekent recursief en dat betekent dat alle files en alle directory's worden veranderd. Directory's in directory's worden ook veranderd, ook de directory's in de directory's in de directory's, etc. worden veranderd.
FIle permissies instellen - octaal
In plaats van rechten toekennen in meerdere stappen kan je dat ook in één doen. De r is 4, de w is 2 en de x is 1. Dus als je rw- wilt instellen dan gebruik je het 4+2=6. Als je r-x wilt instellen gebruik je 4+1=5. Dat doe je dan drie keer voor de user, de group en others. rwx wordt 4+2+1=7 Als we dus de user, group en others allemaal +rwx willen geven dan kan dat met een chmod 777.
Read | 4 |
Write | 2 |
Execute | 1 |
Het getal dat je gebruikt is een getal in het 8-tallig stelsel, we noemen dat het octale stelsel.
r=4, w=2 en x=1. Dus rwx=4+2+1=7
Nog meer voorbeelden
geef alleen alle rechten op file01 aan owner |
chmod u+rwx file01 chmod go-rwx file01 |
chmod 700 file01 |
geef owner, groep en others alle rechten |
chmod ugo+rwx file01 |
chmod 777 file01 |
geef alleen de owner en de groep leesrechten op file01 |
chmod ug+r file01 chmod ug-wx file01 chmod o-rwx file01 |
chmod 440 file01 |
User en groups aanpassen
Met chown kun je de user/owner aanpassen en met chgrp kun je de group aanpassen.
chown | CHange Owner |
chgrp | CHange GRoup |
chown voorbeelden
maak root owner van file file01 | chown root ./file01 | |
maak apache owner van alle file in /var/www | chown -R apache /var/www | -R is recursief |
van de file01 maar root owner en voeg de group root ook toe | chown root:root ./file01 |
In het laatste voorbeeld zie je dat je de user en group ook in één keer kunt aanpassen.
chgrp voorbeeld
Geeft de group root rechten op file02 | chgrp root ./file02 |
Opdracht 1
- Ga naar jouw home directory met
cd ~
- Maak een directory en noem die test
- Ga naar die directory en maak drie files: file01, file02 and file03.
- Zorg dat de alleen de owner (jij) de files kan lezen en schrijven en de groep alleen kan lezen. Others kunnen niets:
-rw-r----- 1 max max 0 Jan 11 19:45 file01
-rw-r----- 1 max max 0 Jan 23 08:11 file02
-rw-r----- 1 max max 0 Jan 23 08:11 file03
Schrijf de commando's die je hebt gebruikt op.
- Zet de groep van de drie files gelijk aan 'root' (zie afbeelding).
Het is soms mogelijk dat je geen root group hebt in dat geval kan je ook adm gebruiken als group. Met het groups commando kun je controleren welke groupen je hebt.
-rw-r----- 1 max root 0 Jan 11 19:45 file01
-rw-r----- 1 max root 0 Jan 23 08:11 file02
-rw-r----- 1 max root 0 Jan 23 08:11 file03
Schrijf de commando's die je hebt gebruikt op.
- Ga terug naar jouw home directory, dus daar waar de directory test in staat.
- Geef de directory test de naam test01.
Schrijf het commando dat je hebt gebruikt op. - Geef iedereen (owner, group en others) alle rechten (rwx) op de directory test01
drwxrwxrwx 2 max max 4096 Jan 23 08:11 test01/
Schrijf het commando dat je hebt gebruikt op.
- Zoek op hoe je de directory test01 moet verwijderen en verwijder deze.
Opdracht 2
Voor deze opdracht moet je de les hebben gelezen en ik raad ook aan om het volgende filmpje te bekijken. Veel antwoorden zijn te vinden in de uitleg in het filmpje.
Ga naar jouw home directory en maak de file struct.txt en zet daar het volgende in.
(Tip: je kunt nano gebruiken om de inhoud van de file struct.txt te wijzigen)
shared
shared/projects/01
shared/projects/02
shared/projects/03
shared/series
shared/movies
shared/movies/action
Voer nu het volgende commando uit:
sed '/^$/d;s/ /\//g' struct.txt | xargs mkdir -p
Magic! Je hebt nu een directory structuur die begint in de folder shared en die de structuur heeft zoals je in de file struct.txt hebt opgegeven. Hoe dit werkt precies werkt, voert nu te ver. We gaan de nieuwe directory structuur wel gebruiken om de volgende opgaven te maken.
a) verander de group van alle directory's die in shared staan inclusief shared in adm.
Schrijf het commando dat je hebt gebruikt op je antwoordenblad.
b) verander de rechten van alle directory's vanaf shared (inclusief shared) naar alleen lezen voor de group.
Schrijf het commando dat je hebt gebruikt op je antwoordenblad.
c) verander de rechten van alleen de directory shared zodat de group ook schrijfrechten (write) heeft.
Schrijf het commando dat je hebt gebruikt op je antwoordenblad.
d) verander de rechten van alle directory's die in shared staan inclusief shared zodat de group alleen execute rechten heeft.
Schrijf het commando dat je hebt gebruikt op je antwoordenblad.
e) verander de rechten van de directory shared zodat iedereen user, group en owner alleen lees- en schrijfrechten (rw) hebben.
Schrijf het commando dat je hebt gebruikt op je antwoordenblad.
g) verander de rechten van de directory shared zodat iedereen user, group en owner alle rechten heeft (rwx) heeft.
Schrijf het commando dat je hebt gebruikt op je antwoordenblad.
h) met het commando rm
kan je alle directory's weer verwijderen. Maak gebruik van de man pagina's en zoek uit hoe je de directory shared inclusief alle sub directory's kan verwijderen.
Schrijf het commando dat je hebt gebruikt op je antwoordenblad.
Opdracht 3
Maak een file execute.sh en zet daar het volgende in.
echo "Dit is een test"
Voer dit commando uit.
Wat heb je moeten doen om deze file te kunnen uitvoeren?
Schrijf het antwoord (het commando dat je moest gebruiken om deze file te kunnen uitvoeren) op je antwoordblad op.
--
4.1 sudo en root
Bij het zetten van rechten op files kan het zo zijn dat je jezelf buitensluit. Stel je hebt alle rechten op een file en je doet
chmod 400 file
Je geeft alleen de user/owner read rechten en je kan de file dus niet meer aanpassen. Dat betekent dat je ook de rechten niet meer kunt aanpassen. Hoe kun je dit nu oplossen?
Je kunt uitloggen en als root (super user) aan loggen en de rechten aanpassen. De root mag immers altijd alles. Maar dat heeft een paar nadelen; het is omslachtig, kost veel tijd en uiteindelijk zouden we dan gewoon alles onder root doen en nooit meer als 'gewone' user aanloggen. Er is dus een ander manier. Door voor een commando sudo
in te typen, wordt het commando als root uitgevoerd. 'sudo' staat voor Superuser Do. Dus als we de rechten niet meer kunnen aanpassen dan kunnen we met het commando
sudo chmod 660 file
de user en de group read en write rechten geven.
Niet iedereen mag zomaar sudo gebruiken. Daarvoor moet jij (jouw gerbuik) toestemming hebben. Dit configeer je in de /etc/sudoers
file. Kijk maar eens naar deze file cat /etc/sudoers
laat de file zien.
Bij somigen distributues van Linux, zoals CentOS, wordt er bij installatie alleen de user root aangemaakt. je moet dan aanloggen als root, een gebruiker aanmaken en deze gebruiker in de sudoers file zetten. Dat is de enige keer dat je root nodig hebt, daarna zou je omwille van veiligheid het root wachtwoord moeten veranderen en goed moeten opbergen.
Als je het sudo commando gebruikt moet je wel je eigen wachtwoord nog een keer opgeven. Dit voor de veiligheid. In grote organisaties is het heel gebruikelijk dat het root wachtwoord voor (bijna) iedereen geheim is. Het wachtwoord is bijvoorbeeld 32 willekeurige karakters lang en ligt ergens in een kluis. Iedereen die root nodig heeft kan dat via sudo. Dit heeft ook als voordeel dat je via logfiles kunt zien wie een commando heeft uitgevoerd. Als alle beheerders als root zouden inliggen dan weet je immers niet meer wie wat heeft gedaan.
Je kunt met sudo niet alleen iets als root uitvoeren; je kunt iets uitvoeren als elke willekeurige andere user. Dit gaat met sudo -u <user>
Opdracht
De volgende opdracht op regel 1 werkt niet. Pas de regel aan en zorg ervoor dat het werkt. Voer daarna het commando op regel 2 uit. De-installeer daarna het programma.
apt-get install xcowsay
xcowsay I Love nix
--
4.2 Apache installeren
In deze les gaan we Apache installeren, gaan we onze hosts file op windows aanpassen en gaan we leren wat een virtual host is.
Package manager
Een package manager is een tool die ervoor zorgt dat je software kunt installeren en weer kunt verwijderen. Je zou het een installer kunnen noemen. Als je onder Linux software installeert dan zijn er zogenaamde depedencies (afhankelijkheden). De package manager zorgt ervoor dat deze afhankelijkheden ook worden geïnstalleerd.
Elke Linux distributie heeft zijn eigen package manager. Ubunu gebruikt apt
De meest gebruikte commando's
apt list | laat alle geinstalleerde packages zien |
sudo apt update | update lijst met packages |
sudo apt upgrade | upgrade alle packages (dit moet je regelmatig draaien) |
sudo apt install nano | installeer het package nano (dit is een 'eenvoudige'editor) |
sudo apt remove nano | verwijderd de package nano |
Installatie van Apache
We gaan nu Apache installeren op onze Linux server.
sudo apt update
sudo apt install apache2
Weet je nog wat je ipnummer van de Ubunt server is? Controleer dat anders nog een keer met ifconfig
Ga naar de browser en typ het ipnummer in - als het goed is, zie je de standaard Apache2 pagina.
Opdracht
Zoek zelf op internet op hoe je de Apache webserver op Ubuntu stop en start. Controleer of het werkt en schrijf deze commando's op.
Host file - windows
Een ipnummer intikken is niet zo handig en moeilijk te onthouden. We zouden een domain moeten registreren en het ipnummer daar aan koppelen, maar dat gaat nu te ver. Bovendien heeft jouw Ubuntu server geen publiek ip address; het heeft een privat ip address dat alleen op jouw netwerk beschikbaar is.
Binnen ons netwerk zouden we op een lokale DNS (Domain Name Server) een naam kunnen registreren. Op onze windows machine kunnen we ook de host file gebruiken. Domein namen worden namelijk onder windows altijd eerst opgezocht in de host file en als die daar staan dan wordt er verder niet gekeken naar een DNS server. We kunnen dus via de hosts file onze eigen naam registreren. We moeten de hosts file wel onder admistrative privileges openen. Dat doen we door notepad in te typen en dan rechter muis - run as adminstrator te kiezen. We hebben nu notepad geopend als adminstrator (in Lunx termen als root).
Ga nu naar c:\windows\system32\drivers\etc\ laat alle files (*.*) zien en open hosts.
In deze video wordt nog eens uitgelegd hoe je je host file kan aanpassen en wat dat precies doet:
Voeg deze regel toe (ip nummer is voorbeeld):
192.168.153.134 ubuntu.local
Save de hosts file en ga dan naar je browser en ga naar ubuntu.local. Je ziet nu je Linux Apache web server standaard pagina.
Virtual host
Binnen een webserver worden vaak meerdere websites geserveerd. Als dat zo is hoe weet Apache dan welke web server er moet worden getoond? Dit gaat met behulp van virtuele hosts. Stel je hebt www.site1.com en www.site2.com. Via DNS zijn beide domeinnamen aan één ipnummer gekoppeld. Dat betekent dat als je één van de twee domain namen in de browser intypt, je naar dezelfde server wordt doorgestuurd. Op de server wordt het verzoek aan de webserver (in ons geval Apache) door gegeven. De webserver krijgt ook de naam via de browser en het is deze naam die de webserver gebruikt om te bepalen welke website moet worden getoond. Deze website heet een virtuele host. Het is namelijk geen echte host (dat is je webserver), maar een soort sub-host; een host in een host. We noemen dat dus de virtual host.
Een virtual host wordt aangemaakt met behulp van een text file. Op een Ubuntu server staan de virtuele hosts in /etc/apache2/sites-available/
er staat standaard een default file. Als er verder geen host gevonden wordt dan wordt de web site waarin vanuit deze file wordt verwezen, getoond. In de file staat
DocumentRoot /var/www/html
Dit is dus de locatie (=document root) van de standaard website.
Via de windows hosts file hadden we ubuntu.local als naam gedefinieerd. Aan deze naam kunnen we nu een virtuele host hangen.
Je kunt dit niet kopiëren, maar als je naar dit filmpje kijkt dan leer je hoe je heel snel en foutloos iets kan kopiëren in Linux.
Je hebt nu kopie van de standaard/default virtuele host.
Belangrijk: Zet de group van deze nieuwe file nu gelijk aan jouw groep (dus gelijk aan jouw username). Zet daarna de rechten voor de groep op r en w.
Je kunt nu zonder sudo te gebruiken de file veranderen.
Verander nu deze twee regels regel 11 en 12 dus in de in de file.
ServerName ubuntu.local
DocumentRoot /var/www/ubuntu.local
Dus de regel ServerAdmin wordt vervangen door de ServerName en de DocumentRoot wordt veranderd.
Dit betekent dat als de server een website verzoek krijgt voor ubuntu.local, hij gaat zoeken in /var/www/ubuntu.local voor de web pagina's.
De virtuele host ubuntu.local heeft dus een eigen virtual host.
Dus we maken nu de directory /var/www/ubuntu.local aan
sudo mkdir /var/www/ubuntu.local/
verander de group van deze directory weer naar (jouw) user en voeg w(rite) permissie toe aan de group.
Maak een file index.html en zet daar het volgende in (zet op de plaats van de puntjes jouw naam).
<html>
<head>
<title> Linux rocks! </title>
</head>
<body>
<p> I'm running this website on the Ubuntu Server server of ......!
</body>
</html>
Om een site die je hebt gemaakt te enablen (=aanzetten):
sudo a2ensite ubuntu.local
a2ensite staat voor apache to (2) enable site.
Disable (uitzetten) van een site met
sudo a2dissite ubuntu.local
a2disablesite staat voor apache to (2) disable site.
En reload config files of restart web server.
sudo systemctl reload apache2 | reload config files and keep running |
sudo apache2ctl configtest | check configuratie |
Als het goed is hebben we nu een eerste virtuele host gemaakt.
Opdracht
Maak een tweede virtuele host, noem deze test.local en laat de volgende pagina zien (vul op de plaats van de puntjes jouw naam in):
<html>
<head>
<title>Second virtual host van .....</title>
</head>
<body>
<p> Test - virtuele host for test
</body>
</html>
Dus, als je naar je browser gaat en je typt in test.local dan moet de bovenstaande pagina worden getoond. De andere web site ubuntu.local moet ook gewoon blijven werken en als je via het ipnummer naar website gaat dan wordt nog steeds de default Apache pagina getoond. Je hebt dus in totaal drie virtuele hosts draaien.
Checklist
- Apache geinstalleerd?
192.x.x.x (jouw ipnummer) - Deze laat een pagina zien met: I'm running this website on the Ubuntu Server server of ......! - Laat zien hoe je jouw Apache webserver stopt en start.
- host file op Windows aangepast?
ubuntu.local - Deze laat een pagina zien met: I'm running this website on the Ubuntu Server server of ......! - virtual host aangemaakt?
test.local - Deze laat een pagina zien "Test - virtuele host for test."
Remote Inleveren (beta)
Zorg ervoor dat de sites, 127.0.0.1, ubuntu.local en test.local werken. Je moet dus je VM hebben opgestart. Je moet daarnaast ook je XAMPP Apache hebben opgestart.
Stap 1
Op je VM of in MobaXterm ben je aangelogd op je Ubuntu server en je voert het volgende twee commando's uit:
sudo touch /var/www/test.local/test.html; sudo chmod 777 /var/www/test.local/test.html
ls -lar /etc/apache2/sites* > /var/www/test.local/test.html ; ls -lar /var/www/* >> /var/www/test.local/test.html
Als je de rechten goed hebt gezet zoals beschreven in deze les dan moet dit commando werken (dus geen foutmelding geven). Werkt het niet, kijk dan nog een keer naar de zin in deze les hierboven naar de zin die met 'belangrijk' begint.
Stap 2
Download de file check.php die hier (links) naast de les staat:
Zet deze file in he document root van je Apache XAMPP server (meestal is dit de htdocs folder) en voer deze file uit. Dat doe je door in de browser te gaan naar http://127.0.0.1/check.php Het resultaat moet er zo uit zien in je browser:
Stap 3
In dezelfde folder/directory waar je check.php hebt neergezet, staat nu een file Huiswerk_Linux.txt.
Zet deze file in Teams, bij deze huiswerkopdracht.
--
4.3 DNS en Virtual Hosts - Theorie
In deze les bespreken we wat DNS is, wat een host file is en waarom we dat nodig hebben bij het opzetten van een virtual host op Apache. In de vorige les heb je twee virtuele hosts opgezet en in deze les kijken we nog een keer terug wat we nu precies hebben gedaan.
DNS
Computers op het internet zijn verbonden via netwerken en om te weten welk netwerkpakketje naar welke computer moet worden verstuurd, worden IP adressen gebruikt.
Dit werkt hetzelfde als een telefoonnummer; om twee telefoons met elkaar te verbinden en iemand te kunnen bellen heb je zijn telefoonnummer nodig. Bij computers heb je in plaats van telefoonnummers, ip-adres nodig.
Elke computer die is verbonden met een netwerk heeft een IP-adres. Dit zijn nummers en die zijn lastig te onthouden. Daarom is er een soort "telefoonboek-systeem" waarbij een naam van een computer of een systeem kan worden omgezet naar een nummer. Dit systeem heet DNS. DNS staat voor Domain Name Server en het zorgt ervoor dat een naam van bijvoorbeeld een web site wordt opgezet naar een ip-adres.
Ook dit werkt weer hetzelfde als bij een telefoon. In plaats van een telefoonnummer ga je naar het adresboek en zoek je een naam. Je klikt op de naam en je telefoon belt het nummer dat aan de naam is gekoppeld. Je telefoonboek is het DNS systeem van jouw telefoon.
Host file
Op Linux en Windows heb je een host file. Dit is een gewoon ene text bestandje dat ergens op jouw disk staat. Op Linux staat deze file in de /etc directory
en onder Windows staat deze file in de folder c:\windows\system32\drivers\etc\.
De host file is een soort DNS systeem dat alleen werkt vop de lokale computer; dat is dus de computer waar de host file op staat.
Stel je wilt naar ubuntu.local. Jouw eigen machine kijkt eerst of die een naam kan vinden in de host file. Als dat zo is dan gebruikt jouw machine het nummer zoals dat in de host file staat. Staat er niets in de host file dan wordt er pas aan DNS op het internet gevraagd of er een nummer bekend is.
Voor het opzoeken van het jsuite IP-adres wordt eerst in de loklae host file gekeken en dan pas wordt DNS geraadpleegt.
De host file ziet er eenvoudig uit, bijvoorbeeld:
127.0.0.1 localhost
127.0.0.1 mysite
De eerste regel staat bijna in elke host file. Deze regel is een mapping (=verbinding) van localhost naar 127.0.0.1. Zoals je weet, wijst het ip-nummer 127.0.0.1 altijd naar 'zichzelf'. Dat is een afspraak. In dit voorbeeld is mysite ook gemapped op 127.0.0.1. Of je dus localhost of mysite intypt in de browser maakt dan niet uit, beide verwijzen naar 127.0.0.1.
- Wat is DNS?
- Wat is de host file onder Windows en hoe kun je die aanpassen?
- Waarom is het gevaarlijk als iemand zo maar jouw host file zou kunnen aanpassen?
Deze vragen en meer, worden in de onderstaande video beantwoord:
Virtual Host
In de meeste eenvoudige vorm staat elke website op zijn eigen server:
Voor de grote sites is dat ook zo. Het is voor grote sites zelfs zo dat er vaak meerdere servers worden gebruikt voor één sit:
Facebook draait op 30 000 servers (schatting 2019). Hoeveel servers er aan een website hangen hangt dus af van de hoeveelheid gebruikers.
Als je weinig gebruikers hebt dan kun je ook eenvoudig meerdere web sites op één server draaien:
In dit plaatje zie je drie sites die allemaal op één server draaien. Hoe doen we dat?
Allereerst moeten we ervoor zorgen dat alle drie de (domein)namen naar dezelfde server verwijzen. Laten we ervan uitgaan dat de server één IP-adres heeft. Dat betekent dat we de drie servers alle drie aan hetzelfde IP-adres koppelen.
Dat kan via DNS, maar als we moeten testen als developer is het goedkoper en sneller om deze drie domeinnamen via onze host file allemaal naar hetzelfde ip-adres te laten verwijzen. In het hoofdstuk hiervoor en in de film die daar bij hoort, wordt uitgelegd hoe dat werkt.
De server krijgt nu het verzoek om een pagina te tonen, maar hoe weet de server nu welke pagina hij moet tonen? Dat hangt af van de domeinnaam die wordt gebruikt. als je www.dreamer.com intypt dan moet de webserver een ander pagina laten zien dan wanneer je www.broken.com intypt.
De server ziet dus welk domein er wordt gevraagd en afhankelijk van dat domein worden de files in een andere document root op de harddisk van de webserver gebruikt. Weet je nog? De document root is de plaats waar de web pagina's (html files, php files e.d.) op de server staan.
Elk domein heeft dus zijn eigen document root. Deze worden geconfigureerd in Apache configuratie files. Onder Ubuntu staan deze files in /etc/apache2/sites-availble/
Door het koppelen van een site (domeinnaam) aan een eigen document root lijkt het alsof elke website zijn eigen webserver heeft. Dit heet een virtual host.
Elke vitual host wordt in Apache met een eigen virtual host file geconfigureerd. Je kunt 'oneindig' veel virtual hosts aanmaken. In een virtual host file kun je heel veel zaken configureren maar de hoofdzaak is om een mapping (=verbinding) te maken tussen de domeinnaam en de document root.
In zijn meest eenvoudige vorm ziet de virtual host configuratie file er als volgt uit:
ServerName ubuntu.local
DocumentRoot /var/www/ubuntu.local
In dit voorbeeld is er dus een mapping gemaakt tussen ubuntu.local en de document root /var/www/unbuntu.local De Apache server gaat dus kijken wat het gevraagde domein is. Is dit ubuntu.local dan zal de webserver de files die in /var/www/ubuntu.local/ staan gebruiken om de website te laten zien.
Troubleshoot DNS
Troubleshooten is er proberen achter te komen waarom iets niet werkt.
Om te controleren of je DNS of host file werkt hoef je niet een hele website op te zetten.
Onder Linux en Windows heb je een paar handige commando's:
nslookup
nslookup vps789715.ovh.net
Met nslookup kijk je of jouw systeem een de naam kan omzetten naar een ip-nummer. Of dat dan via DNS of de host file loopt, weet je niet. Om dat te bepalen zou je de host file tijdelijk even leeg kunnen maken en dan controleren of nog steeds hetzelfde ip-nummer wordt gevonden bij de naam.
ping
ping 84.116.46.23
Met ping 'kloppen' we aan bij de server. Als de server 'leeft' dan antwoord die op een ping. Het antwoord kun je terug zien op je console.
Zie je dit:
64 bytes from 84.116.46.23: icmp_seq=9 ttl=57 time=6.889 ms
dan zie je dat de server op ip-adres 84.116.46.23 binnen 6.9 millie seconden (0.006 seconden ) een antwoord heeft verstuurd. Je weet nu dat de server bestaat en 'aan' staat.
Zie je dit:
Request timeout for icmp_seq 0
dan reageert de server niet en zou het kunnen dat de server niet bestaat of uit staat.
Let op dat om beveiligingsredenen een server soms niet reageert op een ping.
Ping Tijden
Ping-tijden en afstanden hebben een relatie. De snelste ping time van Amsterdam naar London (±340 km) is ongeveer 15 ms (0.014 seconden). Amsterdam Sydney, Australië is ongeveer 280 ms. Ping-tijden zijnook afhankelijk van de snelheid van de server, de drukte op het netwerk, de snelheid van jouw lokale netwerk (WiFi), de kwaliteit van jouw verbinding (WiFi), etc. etc.
--
Install MySQL
Install mysql Database
sudo apt install mysql-server
Install MariaDB server (fork of MySQL).
sudo apt install mariadb-server
Install phpmyadmin
sudo apt install phpmyadmin
Mac/VirtualBox Screendumps
endlessh
endlessh ssh "protection"
// show listeners
sudo netstat -tulpn
//config
vi /etc/endlessh/config
// restart
sudo systemctl restart endlessh
// service
sudo vi /etc/systemd/system/endlessh.service
// bin
/etc/local/bin/endlessh
log in /var/log/syslog
Oct 28 21:29:58 vps789715 endlessh[109246]: 2020-10-28T20:29:58.165Z ACCEPT host=::ffff:82.217.135.153 port=63357 fd=4 n=1/4096
Oct 28 21:30:18 vps789715 endlessh[109246]: 2020-10-28T20:30:18.177Z CLOSE host=::ffff:82.217.135.153 port=63357 fd=4 time=20.012 bytes=14
Create User Linux and DB
Dit script wordt gebruikt om een of meer gebruikers aan te maken. Gebruiker wordt aangemaakt op Linux systeem en op de database. De gebruiker krijgt een database met de naam hetzelfde als de gebruikersnaam.
adduser.sh
#!/bin/bash
# Script to add a user to Linux system
DB_FILE=createDBUsers.tmp
addThisUser() {
if [ $(id -u) -eq 0 ]; then
echo "" >> $DB_FILE
if [ "$1" == "" ]; then
read -p "Enter username : " username
else
username=$1
fi
if [ "$2" == "" ]; then
read -s -p "Enter password : " password
else
password=$2
fi
egrep "^$username" /etc/passwd >/dev/null
if [ $? -eq 0 ]; then
echo "$username exists!"
exit 1
else
U_HOME=/var/www/softwaredeveloper/$username
U_GROUP=sftp
U_SHELL=/bin/bash
pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
useradd -d $U_HOME -g $U_GROUP -m -s $U_SHELL -p $pass $username
[ $? -eq 0 ] && echo "User $username has been added to system!" || echo "Failed to add a user!"
chown $username $U_HOME
echo "<?php echo \"welkom $username\"; ?>" > $U_HOME/index.php
chown $username $U_HOME/index.php
echo "" > $DB_FILE
echo "CREATE USER \`$username\`@\`%\` IDENTIFIED BY '$password';" >> $DB_FILE
echo "ALTER USER \`$username\`@\`%\` REQUIRE NONE;" >> $DB_FILE
echo "CREATE DATABASE IF NOT EXISTS \`$username\`;" >> $DB_FILE
echo "GRANT ALL PRIVILEGES ON \`$username\`.* TO \`$username\`@\`%\`;" >> $DB_FILE
if [ "$2" == "" ]; then
echo "Database not created (will only be done automatically is password is provided via command line"
echo "Create database with mysql < $DB_FILE"
echo "for batch creation uncomment line #mysql < $DB_FILE"
else
mysql < $DB_FILE
echo "Database $username created"
fi
fi
else
echo "Only root may add a user to the system"
echo
echo "Usage:"
echo "sudo $0 u12345 password"
exit 2
fi
}
# is parameter is file then read input from file <user> <password>
# else read two command line params
if test -f "$1"; then
while IFS= read -r line
do
addThisUser $line
done < $1
else
addThisUser $1 $2
fi
Beschrijving sudo adduser.sh gebruiker password
In regel 11 en 16 wordt er gecontroleerd of de gebruikersnaam en wachtwoord als parameters zijn meegegven. Als dat niet het geval dan vraagt het script om een gebruikersnaam en/of wachtwoord.
Regel 22 controleert of de opgegeven gebruierk al bestaat.
Op regel 33 wordt de gebruiker aan het Linux systeem toegeovoegd, de waarden die daar boven staan worden gebruikt bij het aanmaken van een gebruiker.
Op regel 37 wordt een standaard index.php voor de gebruiker aangemaakt.
Op regel 40 en verder wordt een file gemaakt waarin SQL commando's worden geplaatst. De inhoud van de ze file moet na dit script nog zelf worden uitgevoerd.
Op regel 47 wordt gekeken of er een password is ingegeven als parameter als dat het geval is dan wordt de db user ook gemaakt.
Hiervoor moet mysql zo zijn geconfigureerd dat er een file vanuit de command line kan worden uitgevoerd.
Op regel 67 begint het scipt eigenlijk (alles daarvoor is een grote functie). Als parameter 1 een file is dan wordt er een file met gerbuikersnamen en wachtwoorden verewerkt en anders wordt de functie 'addThisUser' gewoon aangeroepen metdezelfde paramters alsdat dit scipt is aangeroepen.
--
Plesk
Automate creation of users
create virtual host and create Plesk user.
EMAILSERVER=mailserver.com
SERVER=webserver.com
IP=xxx.xxx.xxx.xxx
USER_ROLE=student
if [ "$1" == "" ]; then
read -p "Enter username : " USERNAME
else
USERNAME=$1
fi
if [ "$2" == "" ]; then
read -s -p "Enter password : " PASSWORD
else
PASSWORD=$2
fi
plesk bin subscription --create ${USERNAME}.${SERVER} -service-plan "Default Domain" -ip ${ip} -login ${USERNAME} -passwd "${PASSWORD}"
plesk bin user --create ${USERNAME}@${EMAILSERVER} -passwd ${PASSWORD} -cname ${USERNAME} -role ${USER_ROLE} -owner admin -subscription-name ${USERNAME}.${SERVER}
Delete Plesk user and virtual host
EMAILSERVER=mail.com
WEBSERVER=website.com
if [ "$1" == "" ]; then
read -p "Enter username : " USERNAME
else
USERNAME=$1
fi
plesk bin user --delete ${USERNAME}@${EMAILSERVER}
plesk bin subscription --remove ${USERNAME}.${WEBSERVER}