Linux.samba
samba benutzen wir zur Freigabe von Festplatten-Kapazität für das ganze Netzwerk. Samba nimmt jedoch auch an der Windows-Speziefischen Namensauflösung teil.
Aktivierung
- Zuerst muss AppArmor im Yast deaktiviert werden.
yast
Security and Users
AppArmor Confuguration
Settings
[ ] Enable AppArmor (Haken rausmachen!)
- Nun den Samba Server für spätere Neustarts im Autostart eintragen und den Server jetzt starten
chkconfig --add smb
chkconfig --add nmb
rcnmb start
rcsmb start
Konfiguration
Beispiel 1
[global] # System time server = yes # Identifikation workgroup = LUMMERLAND server string = netbios name = RAIB91 # Sicherheit map to guest = Bad User guest account = nobody encrypt passwords = yes null passwords = yes wide links = no # Netzwerk bind interfaces only = yes interfaces = 192.168.115.91 hosts allow = 192.168.115.0/255.255.255.0 # Namensaufloesung # os level = 99 wins support = yes # local master = yes # domain master = yes # preferred master = yes [share$] comment = Windows SMB Freigabe path = /srv/smb browseable = yes read only = no writeable = yes writable = yes guest ok = yes locking = no public = yes create mode = 777 directory mode = 777 [web$] comment = Windows SMB Freigabe path = /srv/www/htdocs browseable = yes read only = no writeable = yes writable = yes guest ok = yes locking = no public = yes create mode = 777 directory mode = 777
Beispiel 2
[global]
# System
log level = 1
time server = yes
unix extensions = yes
character set = ISO8859-15
client code page = 850
veto files = /*.eml/*.nws/riched20.dll/*.{*}/
# Identifikation
workgroup = LUMMERLAND
server string =
netbios name = RAIB64
# Sicherheit
security = share
guest ok = yes
guest account = nobody
encrypt passwords = yes
null passwords = yes
wide links = no
# Netzwerk
bind interfaces only = yes
interfaces = 192.168.115.183
hosts allow = 192.168.115.0/255.255.255.0
socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192
keepalive = 0
# Namensaufloesung
os level = 99
wins support = yes
local master = yes
domain master = yes
preferred master = yes
[web$]
comment = Apache Home
path = /srv/www/htdocs
browseable = yes
read only = no
writeable = yes
writable = yes
guest ok = yes
locking = no
public = yes
create mode = 777
directory mode = 777
Beispiel 3
#
# /etc/samba/smb.conf: (ersetzen bzw. aktivieren, ex sind globale einstellungen!)
[global]
log level = 1
workgroup = Lummerland
server string = Samba
netbios name = LINUX
security = share
# ACHTUNG: Bei >1 Netzwerkkarte ist interfaces zwingend!
interfaces = 192.168.115.92
hosts allow = 192.168.115.0/255.255.255.0
os level = 99
time server = yes
unix extensions = yes
encrypt passwords = yes
null passwords = yes
printing = CUPS
printcap name = CUPS
socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192
keepalive = 0
wins support = yes
local master = yes
domain master = yes
preferred master = yes
guest account = nobody
character set = ISO8859-15
client code page = 850
veto files = /*.eml/*.nws/riched20.dll/*.{*}/
bind interfaces only = yes
guest ok = yes
wide links = no
[homes]
comment = Home Directories
valid users = %S
browseable = no
writeable = yes
create mask = 0640
directory mask = 0750
[printers]
comment = All Printers
path = /var/tmp
printable = yes
create mask = 0600
browseable = no
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @ntadmin root
force group = ntadmin
create mask = 0664
directory mask = 0775
[user]
comment = Benutzer Freigabe
path = /freigabe
browseable = yes
read only = no
writeable = yes
writable = yes
guest ok = yes
locking = no
public = yes
create mode = 777
directory mode = 777
Beispiel 4
[global]
workgroup = LUMMERLAND
server string =
map to guest = Bad User
guest account = nobody
include = /etc/samba/dhcp.conf
null passwords = yes
create mode = 777
directory mode = 777
[share$]
comment = Backup
path = /srv/smb/ra6
browseable = yes
guest ok = yes
writeable = yes
# read only = yes
[wiki$]
path = /srv/www/vhosts/wiki
guest ok = yes
Writeable = yes
[test]
comment = Test
path = /srv/smb/ra6/test
browseable = yes
guest ok = yes
writeable = yes
Verzeichnisrechte
nun eine Terminal-Session starten (Symbol mit der Muschel in der Startleiste)
cd / * wechselt ins hauptverzeichnis
mkdir /freigabe * erstellt den Pfad, der freigegeben wird
chmod 0777 -R /freigabe * alle Rechte f?e
rcsmb start * samba nun starten
Wenn später weitere Verzeichnisse freigegeben werden sollen: in einer Terminal Session , samba stoppen:
rcsmb stop
mkdir /<Ihr neues Verzeichnis>
chmod 0777 -R /<Ihr neues Verzeichnis>
nun wieder /etc/smb.conf editieren
neu eingeben (ganz unten)
[NeuerFreigabeName]
comment = "ihr kommentar"
path = /<Ihr neues Verzeichnis>
... Rest wie oben ...
Windows XP
Einbinden (Mappen / Netzlaufwerk verbinden) eines Samba- Shares: Windows Explorer start: Extras, Netzlaufwerk verbinden, Einen freien Laufwerksbuchstaben suchen. Eingeben
\\<smb-Hostname oder smb-IP-Adresse>\<Share oder Freigabename, das ist das Wort in den eckigen Klammern der smb.conf>
Beispiel:
\\raib726\user
Wenn man auf Linux eine samba-Freigabe (einer Linux Maschine) nutzen will
mount -t cifs -o username=fred,password=fred //brutus/User /g
alternativ, wenn Gastzugriffe möglich sind
mount -t cifs //brutus/User /g
wobei "/g" ist das Unterverzeichnis in welches die Freigabe eingehängt wird (muss existieren) fred,fred ist username/pwd die Zugriff zu dieser Freigabe ermöglich, ist die Freigabe public werden die Angaben ignoriert. //brutus der w2k-Server (oder auch ein Linux-Server) /User der Freigabename des Share.
Hier gibt es mehr Info zu cifs: http://pserver.samba.org/samba/ftp/cifs-cvs/linux-cifs-client-guide.pdf
dauerhafte Nutzung
- sicherstellen dass cifs beim nächsten boot im Autostart läuft
chkconfig --add cifs rccifs start
in /etc/samba/cifstab eintragen
//server/share["/" Path] /srv/lokalerPfad
- sicherstellen dass die Konfiguration neu gelesen wird
rccifs restart
SMB Diagnose
auf dem Server
Hochsetzen des Log Levels im /etc/samba/smb.conf:
log level =
Probleme bei der Namensauflösung einkreisen:
nmblookup <ArbeitsgruppenName> smbclient -L localhost -U%
- Wer nutzt welche Protokoll-Version?
smbstatus
auf dem Client
- Wer ist Server, wie heisst hier die "ARBEITSGRUPPE" / "WORKGROUP"
# # Nur auf dem raspi muss man "nmblookup" nachinstallieren # apt-get install samba-common-bin # # Wenn man nicht mal den Server kennt # auf diese Art kann man Server UND Arbeitsgruppe erfahren # nmblookup -S __SAMBA__ # # Oder direkt mal den //server fragen # wenn man den Namen des Servers schon kennt # nmblookup -S server
- Welche Shares werden angeboten?
smbclient -m SMB3 -N -L //server
Sicherheit
- durch Interfaces= nur die absolut notwendigen Netze zulassen und sich selbst.
- browseable auf false setzen, damit nicht grad jeder das Share sehen kann.
- Verzeichnisse nur für bestimmte User sichtbar machen. Das Verzeichnis einer Benutzergruppe zuordnen (z.B. mp3users), die Du vorher anlegst und der Du Deine Berechtigten hinzufügen aber nicht den Chef. Die Berechtigungen entsprechend setzen (kein r-x f?ot;nobody") und dazu "hide unreadable = yes" in die Share-Definition.
Details Windows
Misslungene Namensauflösung
Funktionieren Namensauflösungen von Netzinternen Hosts, aber eine Namensauflösung nicht mehr kann es sein, dass kurzfristig mal ein Rechner mit diesem Namen als Arbeitsgruppe im Netz war. Dies hält sich hartnäckig und verhindert eine ordentliche Auflösung auf diesen Namen.
Port 80/445 Problem
Windows XP Professional zeigt nach eigenem Neustart den samba-share als "gestört an (rotes kleines "X" im Symbol). Der erste Zugriff erfolgt im Windows Explorer dann auch nach eine langen Denkpause. Pflichtbewust wurden jedoch die smb Ports 136,137,138,445 geöffnetet, damit gings aber auch nicht.
2. Formulierung des Problems: Alles ging -- ausser bei Windows XP Prof Clients, diese hatten beim ersten Zugriff auf ein smb-Share z.B. im Explorer doppelklick auf den Laufwerksbuchstaben eine "Wartezeit" von ca. 8 Sekunden (hey, das ist verdammt lange). Danach war alles in Butter. Bis zu dem Moment, wo etwa 15 Minuten kein Zugriff auf diesen Share auf diesem Client erfolgte (oder sofort nach einem Neustart des Clients). Danach wieder diese Denkpause.
Die Lösung war: XP Prof SP1 versucht eine Kontaktaufnahme mit dem Samba-Server auf Port 80 (in Worten !achtzig!). Wir hatten das als "Angriff" aus dem internen Netz gewertet und geDROPed. (Auf port 80 haben wir keinen dienst auf unserem Server!). Bis XP gemerkt hatte, dass auf port 80 nix geht, machte es einen Kurzschlaf (eben diese 8 Sekunden).
- Lösung 1: Einen REJECT in der Firewall machen, keinen DROP. Hintergrund: DROP: Paket vernichten, keine Benachrichtigung des Absenders. REJECT: Das Paket wird aktiv abgewiesen, der Absender erhält eine negative Kurzantwort auf das Paket.
- Lösung 2: Den Port 80 öffnen z.B. durch einen Webserver.
Die passenden Ports in der Zusammenfassung
netbios-ns 137/udp # NETBIOS Name Service
netbios-dgm 138/udp # NETBIOS Datagram Service
netbios-ssn 139/tcp # NETBIOS Session Service
microsoft-ds 445/udp # Direct-Hosted Service
microsoft-ds 445/tcp # Direct-Hosted Service
http 80/tcp www www-http # World Wide Web
# nur bei XP Clients notwendig
- Stichworte: unconnected network share unverbunden after reboot after start red cross X unverbundenes Netzwerk Freigabe Laufwerk nach Neustart nach start rotes Kreuz X
- Alle Windows-Versionen starten übereilt in den Desktop durch, und ohne Berücksichtigung von Abhängigkeiten zur Bereitschaft des Netzwerkes.
- Hat man also Netzwerk-Shares von NAS-Systemem oder SMB-Shares die "public" sind, findet man nach dem Start eine rotes Kreuz oder rotes X auf dem Laufwerksbuchstaben (siehe Bild, Laufwerk F: und X:)
- Hat man den Login in eine Domäne spielt das keine Rolle, da für den Login ja Netzwerkabhängigkeiten bestehen, diese sind berücksichtigt.
- Dieses Batch-File (.bat Datei) stellt erst den Netzwerkweg zum Server sicher, danach verwandelt es ein "rotes" X in ein grünes
- OrgaMon.bat
TIMEOUT /T 10 ping raib42 -n 5 start J:\ start I:\ ping raib42 -n 5 start J:\ start I:\ start "OrgaMon" "C:\Program Files (x86)\OrgaMon\OrgaMon.exe"
Windows 7 - Autostart
- Legen Sie einen Funktions-User (in meinem Beispiel "OrgaMon-FU") an, der sich automatisch beim Start am System anmeldet
- Legen Sie die "OrgaMon.bat" in den Autostart-Ordner des Benutzers
Windows 10 - Autostart
Lösungsansatz
https://support.dise.com/support/solutions/articles/9000086107-automatically-connect-network-drives