Ny bruker
Først legg til en system bruker som vil bli brukt som eier av filene på filsystemet
useradd -M -s /usr/sbin/nologin smbuser
Sett passord på denne brukeren. Dette passordet er kun på systemet, og har ingenting med pålogging via samba å gjøre.
passwd smbuser
Legg brukeren til i relevant gruppe for filsystemet
usermod -aG smbgroup smbuser
Legg til brukeres i samba og sett et passord med smbpasswd. Dette passordet blir brukt til pålogging via samba.
smbpasswd -a smbuser
Lag en ny mappe og sett riktige tillatelser/eierskap på mappe for denne brukeren
mkdir /path/to/share
chown smbuser:smbgroup -R /path/to/share
Automatisk mount av samba share ved VPN tilkobling
Eksempel på å auto-mounte og demounte en sambashare når man kobler til/fra VPN via wiregard med NetworkManager.
Script for NetworkManager legges i mapppen /etc/NetworkManager/dispatcher.d
, med syntax 10-navn-på-script
. Scriptet med laveste tall kjører først.
Scriptet sjekker om man kobler til eller fra VPN. Deretter sjekker om porten er åpen, hvis den er, prøv å mounte sharen.
For feilsøking kan man se logg med journalctl -t SMB_Mount_Script -f
.
#!/bin/bash
INTERFACE="wg2"
SHARE="//i.p.addr"
HOST="i.p.addr"
MOUNT_POINT="/nas"
USERNAME_T="smbusername"
PASSWORD_T="smbpassword"
LOG_TAG="SMB_Mount_Script"
# sudo journalctl -t SMB_Mount_Script -f
log_message() {
logger -t "$LOG_TAG" "$1"
}
if [ "$1" == "$INTERFACE" ] && [ "$2" == "up" ]; then
log_message "Network interface $INTERFACE is up. Starting SMB mount process."
sleep 10
if nc -z -w 5 "$HOST" 445; then
log_message "SMB port 445 is open on host $HOST. Proceeding with mount operations."
if [ ! -d "$MOUNT_POINT" ]; then
log_message "Mount point $MOUNT_POINT does not exist. Creating mount directories."
mkdir -p "$MOUNT_POINT/Backup"
fi
mountpoint -q "${MOUNT_POINT}/Backup" || {
log_message "Attempting to mount Backup share."
mount -t cifs "${SHARE}/Backup" "${MOUNT_POINT}/Backup" -o username="$USERNAME_T",password="$PASSWORD_T",iocharset=utf8,uid=1000,gid=1000,vers=3.1.1
if [ $? -eq 0 ]; then
log_message "Backup share mounted successfully."
else
log_message "Error: Failed to mount Backup share."
fi
}
else
log_message "Error: SMB port 445 is not open on host $HOST. Aborting mount operation."
fi
fi
if [ "$1" == "$INTERFACE" ] && [ "$2" == "down" ]; then
log_message "Network interface $INTERFACE is down. Unmounting SMB shares."
# Close all dolphin windows and ensure all pending writes gets finished
pkill -f "dolphin .*${MOUNT_POINT}"
sync
umount -l "${MOUNT_POINT}/Backup" && log_message "Backup share unmounted successfully." || log_message "Error: Failed to unmount Backup share."
fi