Home » Linux – @Storage, Fileserver (Part 2)

Linux – @Storage, Fileserver (Part 2)

SSH ind til din jump og opret et script i bash, kan gøres ved at bruge følgende kommando:

$ touch init-storage.sh

######### SCRIPT ###########

#!/bin/bash
# Opdatere serveren.
RED=”\033[1;31m”
GREEN=”\033[1;32m”
NOCOLOR=”\033[0m”

echo

echo -e “step 1: ${GREEN}update apt cache${NOCOLOR}”
sudo dnf update -y

echo

echo -e “step 2: ${GREEN}upgrade packages${NOCOLOR}”
sudo dnf upgrade -y

echo

# Sætte hostname på maskine (FQDN).

echo -e “step 1: ${GREEN}setting up new hostname${NOCOLOR}”
sudo hostnamectl set-hostname storage.ton.local

echo

echo -e “step 2: ${GREEN}the new hostname${NOCOLOR}”
sudo hostname

echo

#Oprette brugeren pingu
echo -e “step 1: ${GREEN}adding a new user and setting a new password${NOCOLOR}”
sudo useradd pingu; echo ‘Pa$$w0rd’ | passwd –stdin pingu

echo

#Giv brugeren pingu sudo rettigheder
echo -e “step 3: ${GREEN}adding user to sudo group${NOCOLOR}”
sudo usermod -aG wheel pingu

echo

#Ændre SELinux til permissive (brug sed med følgende kommando).
dnf install nano -y
sed -i ‘s/SELINUX=enforcing/SELINUX=permissive/g’ /etc/selinux/config

#Fjerne muligheden for root at logge ind via ssh (brug sed ).
sed -i ‘s/#PermitRootLogin prohibit-password/PermitRootLogin no/g’ /etc/ssh/sshd_config

#Tillade brugeren pingu at logge ind via ssh.
echo ‘AllowUsers pingu’ >> /etc/ssh/sshd_config

firewall-cmd –new-zone=secure –permanent

firewall-cmd –add-service=ssh –zone=secure –permanent

firewall-cmd –add-source=10.10.100.19 –zone=secure –permanent

firewall-cmd –remove-service=ssh –zone=internal –permanent

firewall-cmd –reload

#Genstart – som det sidste.
sudo reboot

########## SCRIPT SLUT ##############

Nu eksekver scriptet fra din jump over til din storage på 10.10.100.2
Skriv nedenstående:

# ssh root@10.10.100.2 ‘bash-s’ < init-storage.sh

Nu er indstillingerne lavet på storage som skal bruges senere i vejledningen.
Brugeren pingu er nu brugeren som skal bruges til at logge ind på storage.

I din Storage VM lav 3 diske på 2 GB hver. Se nedenstående:

Åben 2 konsoler (Terminaler) og login på din storage

Den ene terminal skriv følgende:

$ watch cat /proc/mdstat

 

Dette vindue gøre, så vi kan følge med processen, når vi opretter raid 5 på det andet vindue.
Til slut skulle det gerne se ud, som i nedenstående:

Lad terminalen stå og tag nu den anden terminal og skriv følgende:

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

lsblk er Linux måde, hvor vi Windows, benytter os af diskpart list disk.

 

Du kan se at dine diske, som du fornyeligt har tilføjet, som har fået navne, vdb, vdc og vdd.
OBS: vdb, vdc og vdd hedder formentlig noget andet på din maskine, så de skal erstattes dette finder du i ovenstående billede.
Dem skal vi lave partitioner med, skriv derfor følgende:

$ cfdisk /dev/vdb
$ cfdisk /dev/vdc
$ cfdisk /dev/vdd

Skal vi have forhåbninger om at lave raid, skal mdadm installeres, skriv derfor følgende:

$ sudo dnf install mdadm

Her laves der raid ud af de 3 devices (enheder), læs gerne kommandoen. md0 er raid navnet, level 5 er raid, hvor vi bruger 3 devices (dev), som er vdb, vdc og vdd.

$ sudo mdadm –create –verbose /dev/md0 –level=5 –raid-devices=3 /dev/vdb /dev/vdc /dev/vdd

Husk og brug denne kommando i din anden terminal:

$ cat /proc/mdstat

Du skulle gerne se nu, at raid 5 oprettes.

ext4 er et linux format

$ sudo mkfs.ext4 -F /dev/md0

Her oprettes en mappe kaldt srv

$ sudo mkdir -p /srv/

Vi mounter vores raid 5, som har navnet md0 i srv

$ sudo mount /dev/md0 /srv/

$ df -h -x devtmpfs -x tmpfs

fstab gøre så md0 automatisk mountes i srv ved genstart af vores storage VM

$ echo ‘/dev/md0 /srv/md0 ext4 defaults,nofail,discard 0 0’ | sudo tee -a /etc/fstab

$ sudo mdadm –detail –scan | sudo tee -a /etc/mdadm/mdadm.conf

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Køre denne kommando, så skulle listen gerne se sådan her ud:

Her omoprettes brugere på vores Storage VM og tilhørende adgangskoder:

$ sudo useradd britta; echo ‘Pa$$w0rd’ | passwd –stdin britta
$ sudo useradd bo; echo ‘Pa$$w0rd’ | passwd –stdin bo
$ sudo useradd birger; echo ‘Pa$$w0rd’ | passwd –stdin birger

I nedenstående oprettes der grupper, som vi bruge til at opsætte rettigheder:

$ sudo groupadd medarbejdere
$ sudo groupadd salg

Følgende kommandoer, tilføjer vi de nyoprettede bruger til følgende grupper:

$ sudo usermod -aG medarbejdere britta
$ sudo usermod -aG medarbejdere bo
$ sudo usermod -aG medarbejdere birger

$ sudo usermod -aG salg britta
$ sudo usermod -aG salg bo
$ sudo usermod -aG salg birger

Der installeres nu smb i følgende kommando:

$ sudo dnf install samba samba-client samba-common

$ smbpasswd -a britta
$ smbpasswd -a bo
$ smbpasswd -a birger

I ovenstående oprettes smbpassword til følgende bruger

I smb.conf redigeres homes til at være browseable, som vi bruge for at teste der er hul til vores shares.

$ sudo nano /etc/samba/smb.conf

Ændre ”browseable = no” til ”yes”.

 

I ovenstående burde “homes” se sådan ud.

I nedenstående laves der firewall regler, hvis vi skal have forhåbninger om, at kunne tilgå vores shares på vores storage VM.
Tilføj service samba, fjern service som du mener du ikke skal bruge. Derefter tilføj dit interface ellers virker det ikke.

$ firewall-cmd –add-service=samba –zone=internal –permanent
$ firewall-cmd –remove-service=dhcpv6-client –zone=internal –permanent
$ firewall-cmd –change-interface=enp1s0 –zone=internal –permanent
$ firewall-cmd –reload

Husk firewall reload og — permanent (-perm), det er utrolig vigtig.

I nedenstående ser du, status, start, enable, restart.
Det giver forhåbentlig mening, hvorfor disse kommandoer skal køres?
Servicen samba er tilføjet, men intet er startet endnu, derfor bruger vi status for at tjekke om den køre.
Herefter starter vi den og enabler og derefter genstarter vi.

$ sudo systemctl status smb.service
$ sudo systemctl start smb.service
$ sudo systemctl enable smb.service
$ sudo systemctl restart smb.service

smb skulle gerne være aktiv og kørende nu.

Start din Gui VM og login. Her benytter jeg mig af Files som stifinder og er logget ind med brugeren bo.

 

Vi skal lave flere shares, srv skulle gerne være oprettet, da vi oprettede raid 5 med navnet md0.
I tilfælde du ikke gjor, skriv følgende :

$ sudo mkdir -p /srv/

cd ind i srv og opret nu faelles og salg :

$ sudo mkdir -p /srv/faelles
$ sudo mkdir -p /srv/salg

Herefter ind i smb.conf lav følgende opsætning :

$ sudo nano /etc/samba/smb.conf

[faelles], [salg] er dit sharenavn som ses i dolpfin eller Files alt efter hvilken stifinder du benytter.
comment er blot din kommentar (mest brugbar til dig selv)
Path er vigtig i forhold til hvilken mappe filerne skal gemmes i. I vores tilfælde /srv/salg, som vi lige har oprettet.
create mask og directory mask er rettighedsniveau i mapperne (Se gerne : https://ss64.com/bash/chmod.html)

$ sudo chmod 0777 /srv/faelles
$ sudo chmod 0777 /srv/salg

Ovenstående kommendoer er rettighed på selve mappen.
– R 0777 angiv alt efter hvad de skal benyttes til (Se gerne : https://ss64.com/bash/chmod.html)
Husk altid og test rettighederne, du skal formentlig ikke benytte -R 0777.

$ sudo chown :medarbejdere /srv/faelles
$ sudo chown :salg /srv/salg

Herefter i ovenstående :medarbejder og :salg angiver hvilken gruppe, som må tilgå denne mappe.
Som ses i vores smb.conf opsætning, så havde vi i valid users = @medarbejder og @salg.
Hvilket betyder, de brugere som er i disse grupper kan tilgå disse shares.
Ellers kan brugerne angives manuelt under valid users.
Husk altid og test rettighederne, du skal formentlig ikke benytte -R eller @medarbejder og @salg.

Nedenstående er i forhold til SELinux og skal ikke bruges (Se gerne : https://www.thegeekdiary.com/chcon-command-examples-in-linux/)

$ sudo chcon -t samba_share_t /srv/faelles
$ sudo chcon -t samba_share_t /srv/salg

Start din Gui VM og test smb://10.10.100.2/ se om dine shares er synlige og om din bruger kan logge ind.
Hermed test rettighederne er i orden, husk at Bo er i gruppen salg og skal ikke kunne tilgå faelles.

I nedenstående billede er jeg logget ind med Bo på smb og bruger Dolpfin som min stifinder.

Bo kommer ikke ind på faelles.

Bo kommer ind i salg og kan oprette mapper og filer :

Opsætning af FTP

Opret nu ftp-share i brugernes home mappe.

$ sudo mkdir -p /home/britta/ftp-share
$ sudo mkdir -p /home/birger/ftp-share
$ sudo mkdir -p /home/bo/ftp-share

Du skal formentlig ikke bruge -p, derfor undlad og angiv dette.

Herefter installere ftp service ved følgende kommando:

$ sudo dnf install -y vsftpd

Husk og tillad ftp service i firewall. 
$ sudo firewall-cmd –add-service=ftp –permanent

Dette skulle formentlig se sådan her ud i nedenstående.
Dit interface er formentlig ikke enp1s0 og services skal formentlig angives alt efter hvad “du” bruger storage til.

$ sudo firewall-cmd –reload
$ sudo systemctl enable vsftpd
$ sudo systemctl restart vsftpd

Husk reload og –permanent.
Derefter enable vsftpd service og restart.

 

$ getfacl /srv/salg
$ getfacl /srv/medarbejdere

 

Note:

Setup af vores system:
Download Excel fil her -> IP Plan for Linux
10.10.100.0/24, 255.255.255.0
router.ton.local = 10.10.100.1
storage.ton.local = 10.10.100.2
jump.ton.local = 10.10.100.19

Fysisk Maskine : Fedora 37 KDE Plasma
VM 1 : Router = CentOS 9 Stream
VM 2 : Storage = CentOS 9 Stream
VM 3 : Jump = CentOS 9 Stream
VM 4 : Gui = Fedora 37 Workstation

Se Part 1 her : https://tobiasnawaphol.dk/linux-router-jump-part-1/
Se Part 2 her : https://tobiasnawaphol.dk/linux-storage-fileserver-part-2/
Se Part 3 her : https://tobiasnawaphol.dk/linux-dns-opsaetning-part-3/
Se Part 4 her : https://tobiasnawaphol.dk/linux-database-webserver-part-4/

Links og kilder:

https://getfedora.org/
https://www.centos.org/download/
https://www.digitalocean.com/community/tutorials/how-to-create-raid-arrays-with-mdadm-on-ubuntu-16-04
https://www.thegeekdiary.com/chcon-command-examples-in-linux/
https://ss64.com/bash/chmod.html

Hent dette indlæg i en PDF fil:

Download her -> LINUX – @STORAGE, FILESERVER (PART 2)

Share:

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

This site uses Akismet to reduce spam. Learn how your comment data is processed.