Samba erweitern
Immer manuell die Shares eintragen, nervt auf Dauer. Ein weiteres Problem stellt die Sichtbarkeit der einzelnen Shares dar. Jetzt Sambaconfig erweitern!
Standardkonfiguration von Samba einrichten, siehe hier: Samba einrichten
Immer manuell die Shares eintragen, nervt auf Dauer. Ein weiteres Problem stellt die Sichtbarkeit der einzelnen Shares dar. Ein Benutzer soll nicht alle Freigaben sehen, welche existieren. Er soll nur die Freigaben zu Gesicht bekommen, auf der er auch Zugriff hat.
Hier nun die Lösung für das Problem:
Es werden erst einmal Gruppenordner erstellt, welches später die Daten enthalten (oder Links, bzw. Mounts):
# Gruppen erstellen
groupadd zeugs
groupadd krams
# Ordner erstellen (müssen den selben Namen wie die Gruppen besitzen)
mkdir /home/groups/zeugs
mkdir /home/groups/krams
# Rechte setzen
chgrp zeugs /home/groups/zeugs
chgrp krams /home/groups/krams
chmod 750 /home/groups/zeugs
chmod 750 /home/groups/krams
Nun kommen die Benutzer dran:
# -m Erstellt das Homeverzeichnis
# --home gibt den direkten Pfad an
# -g zur bestimmten Gruppe hinzufügen (-G für mehrere gruppen)
# --shell /bin/false für keinen ssh Zugang
useradd -m --home /home/users -g --shell /bin/false
Beispiel:
useradd -m --home /home/users/benutzer1 -g krams --shell /bin/false benutzer1
# Gruppe vergessen? (wir hätten natürlich mit -G auch mehrere anlegen können :P )
# fügen wir einfach den "benutzer1" der Gruppe "zeugs" hinzu:
usermod -aG zeugs benutzer1
Der Vollständigkeit nochmal mit mehreren Gruppen
useradd -m --home /home/users/benutzer1 -G zeugs,krams --shell /bin/false benutzer1
Passwörter für den Nutzer anlegen:
passwd
smbpasswd -a
Alles fertig? NEIN! Der größte Spaß kommt noch.
Schritt 1: smb.conf anpassen und folgende Freigabe hinzufügen:
[gruppen]
path = /home/users/%U
root preexec = /usr/local/bin/mklinks %U
writeable = yes
browsable = no
Schritt 2: Script anlegen ( Rechteverwaltung fehlerhaft! ):
vi /usr/local/bin/mklinks
Schritt 3: Script einfügen:
#!/bin/bash
umask 022
cd /home/users
# erstma wieder läsen
# gibts eine bessere loesung?
umount $1
for folder in $(ls "/home/users/")
do
umount "$1/$folder"
done
rm -rf "$1"
mkdir "$1"
cd "$1"
for i in $(groups $1)
do
if [ -d "/home/groups/$i" ]
then
mkdir $i
mount --bind "home/groups/$i" $i
fi
done
Schritt 4: Das Script ausführbar machen (das wird sehr oft vergessen):
chmod +x /usr/local/bin/mklinks
Schritt 5: Samba neustarten und dann müsste es funktionieren:
sh /etc/init.d/samba restart
neuen User anlegen und der Gruppe smbuser hinzufügen:
useradd -g smbuser
oder:
User zu Gruppe smbuser hinzufügen:
usermod -aG smbuser
Passwort vergeben:
passwd
Samba-Passwort für User festlegen (muss das selbe sein!!!):
smbpasswd -a
Samba testen:
```bash
testparm /etc/samba/smb.conf