Aufsetzen eines Fileservers als Mietglied einer Domäne auf Samba Basis
Die Installation und Konfiguration des Fileservers auf einem Linux Server in unserem Fall auf Debian 12 ist einfacher, als man denkt. Nach der Konfiguration werden die benötigte Berechtigungen auf dem Fileserver mit Windows Tools auf von einem Windows Rechner vergeben. Der Verwaltungsrechner muss sich selbstverständlich in der Domäne befinden.
Die Konfigurationsdaten des Fileserver fs1 (Mitglied der Domäne)
Betriebssystem: Debian 12
Servername: fs1
Domäne: schule.lan
IP-Adresse: 172.16.0.5
Netmask: 255.255.252.0
Gateway: 172.16.0.1
DNS: 172.16.0.10
Der zu installierende Dienst: Samba als ADS (Mitglied der Domäne)
Es wird davon ausgegangen, dass
- eine VM mit der richtigen Netzwerkkarte erstellt wurde
- debian 11 Standard Installation durchgeführt ist, am besten ohne grafische Oberfläche und mit ssh Server.
Einstellungen zu ssh-Server und update finden die hier Punkt 2 und 3 - die VM Firewall-pfSense läuft und entsprechend konfiguriert ist.
Die zweite Festplatte für Daten wird partitioniert, formatiert und anschließend in System eingebunden, in der Datei /etc/fstab. Der Ordner /data muss existieren, wenn nicht, dann bitte erstellen.
root@fs1:~# cfdisk /dev/sdb
root@fs1:~# mkfs.ext4 /dev/sdb1
root@fs1:~# mkfs.ext4 /dev/sdb1
/dev/sdb1 /data ext4 defaults 0 0
Die Samba-Pakete und die Ldap-Tools, die möglicherweise später gebraucht werden, werden jetzt installiert.
root@fs1:~# apt-get install krb5-user libpam-krb5 winbind samba smbclient libnss-winbind libpam-winbind
Die Samba wird zu einem Mitglied der Domäne konfiguriert. Als erstes leeren wir die schon vorhandene /etc/samba/smb.conf Datei und fügen wir den folgenden Inhalt ein. Danach wird die Datei gespeichert.
[global]
workgroup = SCHULE
realm = SCHULE.LAN
netbios name = FS1
server string = Fileserver
security = ADS
idmap config * : backend = tdb
idmap config * : range = 3000-7999
idmap config SCHULE : backend = rid
idmap config SCHULE : range = 10000-999999
idmap config SCHULE : schema_mode = rfc2307
idmap config SCHULE : unix_nss_info = yes
template shell = /bin/bash
# template homedir = /home/%U
domain master = no
winbind nss info = rfc2307
winbind use default domain = Yes
# oplocks auf no, sonnst bei Profilen nach dem Abmelden kann passieren, dass
# die Datei ntusers.dat und ntusers.ini auf dem Server in Benutzung bleibt.
# Bei nächsten Anmeldung kommen dann Probleme mit den Profilen.
oplocks = no
vfs objects = acl_xattr
map acl inherit = yes
store dos attributes = yes
# admin users = Administrator
# [home] wird nicht die Standard-Freigabe genommen wie [homes]
[home]
comment = Home Ordner
path = /data/home
read only = no
browseable = No
[Profiles]
path = /data/profiles
read only = no
browseable = No
[Marktplatz]
path = /data/marktplatz
comment = Schuldaten
read only = no
browseable = yes
workgroup = SCHULE
realm = SCHULE.LAN
netbios name = FS1
server string = Fileserver
security = ADS
idmap config * : backend = tdb
idmap config * : range = 3000-7999
idmap config SCHULE : backend = rid
idmap config SCHULE : range = 10000-999999
idmap config SCHULE : schema_mode = rfc2307
idmap config SCHULE : unix_nss_info = yes
template shell = /bin/bash
# template homedir = /home/%U
domain master = no
winbind nss info = rfc2307
winbind use default domain = Yes
# oplocks auf no, sonnst bei Profilen nach dem Abmelden kann passieren, dass
# die Datei ntusers.dat und ntusers.ini auf dem Server in Benutzung bleibt.
# Bei nächsten Anmeldung kommen dann Probleme mit den Profilen.
oplocks = no
vfs objects = acl_xattr
map acl inherit = yes
store dos attributes = yes
# admin users = Administrator
# [home] wird nicht die Standard-Freigabe genommen wie [homes]
[home]
comment = Home Ordner
path = /data/home
read only = no
browseable = No
[Profiles]
path = /data/profiles
read only = no
browseable = No
[Marktplatz]
path = /data/marktplatz
comment = Schuldaten
read only = no
browseable = yes
Es wird die Datei /etc/krb5.conf zu unseren Bedürfnissen angepasst. Den vorhandenen Inhalt löschen wir und ersetzten mit unserem.
[libdefaults]
default_realm = SCHULE.LAN
dns_lookup_realm = false
dns_lookup_kdc = true
[realms]
SCHULE.LAN = {
kdc = dc1.schule.lan
master_kdc = dc1.schule.lan
admin_server = dc1.schule.lan
}
[domain_realm]
.dc1.schule.lan = SCHULE.LAN
dc1.schule.lan = SCHULE.LAN
[logging]
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
default = SYSLOG:NOTICE:DAEMON
default_realm = SCHULE.LAN
dns_lookup_realm = false
dns_lookup_kdc = true
[realms]
SCHULE.LAN = {
kdc = dc1.schule.lan
master_kdc = dc1.schule.lan
admin_server = dc1.schule.lan
}
[domain_realm]
.dc1.schule.lan = SCHULE.LAN
dc1.schule.lan = SCHULE.LAN
[logging]
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
default = SYSLOG:NOTICE:DAEMON
Wir müssen noch die Einträge in der Datei /etc/nsswitch.conf anpassen. Die Einträge bei paswd und group werden von files auf compat winbind geändert.
passwd: compat winbind
group: compat winbind
shadow: files
gshadow: files
group: compat winbind
shadow: files
gshadow: files
Als Nächstes testen wir, ob Kerberos funktioniert, indem wir uns als Administrator authentifizieren.
root@fs1:~# kinit Administrator
Domäne beitreten
root@fs1:~# net ads join -U Administrator
Mit den folgenden Befehlen kann man, die Freigaben auflisten, Benutzer und Gruppen in der Domäne auflisten und den Status der Dienste anzeigen lassen.
root@fs1:~# smbclient -L localhost -U%
root@fs1:~# wbinfo -u
root@fs1:~# wbinfo -g
root@fs1:~# systemctl status smbd
root@fs1:~# systemctl status smbd
root@fs1:~# systemctl status winbind
root@fs1:~# wbinfo --online-status
root@fs1:~# wbinfo -u
root@fs1:~# wbinfo -g
root@fs1:~# systemctl status smbd
root@fs1:~# systemctl status smbd
root@fs1:~# systemctl status winbind
root@fs1:~# wbinfo --online-status
Die Ordner für die Daten werden erstellt.
root@fs1:~# mkdir -p /data/home
root@fs1:~# mkdir -p /data/marktplatz
root@fs1:~# mkdir -p /data/profiles
root@fs1:~# mkdir -p /data/marktplatz
root@fs1:~# mkdir -p /data/profiles
Jetzt können wir die Samba-Dienste neu starten.
root@fs1:~# systemctl restart smbd.service
root@fs1:~# systemctl restart nmbd.service
root@fs1:~# systemctl restart winbind.service
root@fs1:~# systemctl restart nmbd.service
root@fs1:~# systemctl restart winbind.service