Linux.samba: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
 
(41 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 3: Zeile 3:
== Aktivierung ==
== Aktivierung ==


<code>
=== openSUSE ===
 
* 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 smb
  chkconfig --add nmb
  chkconfig --add nmb
  rcnmb start
  rcnmb start
  rcsmb start
  rcsmb start
</code>
 
=== Raspberry Pi ===
 
apt-get install samba
systemctl start smbd
systemctl enable smbd


== Konfiguration ==
== Konfiguration ==
=== best practice ===
[global]
        workgroup = LUMMERLAND
        server string =
        map to guest = Bad User
        guest account = nobody
        security = user
        include = /etc/samba/dhcp.conf
        null passwords = yes
        server role = standalone
        unix extensions = no
        client min protocol = SMB2
        server min protocol = SMB2
        bind interfaces only = yes
        interfaces = lo br0
        local master = yes
        preferred master = yes
        time server = yes
        disable spoolss = yes
[firebird]
      comment = Firebird
      path = /srv/firebird
      guest ok = yes
      writeable = yes
      create mode = 0777
      directory mode = 0777
      force create mode = 0777
      force directory mode = 0777


=== Beispiel 1 ===
=== Beispiel 1 ===
Zeile 25: Zeile 77:
   
   
       # Sicherheit
       # Sicherheit
       security = share
       map to guest = Bad User
      guest ok = yes
       guest account = nobody
       guest account = nobody
       encrypt passwords = yes
       encrypt passwords = yes
Zeile 198: Zeile 249:
         directory mode = 777
         directory mode = 777
</code>
</code>
=== 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 ==
== Verzeichnisrechte ==
Zeile 248: Zeile 329:
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.<br>
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.<br>
Hier gibt es mehr Info zu cifs: http://pserver.samba.org/samba/ftp/cifs-cvs/linux-cifs-client-guide.pdf
Hier gibt es mehr Info zu cifs: http://pserver.samba.org/samba/ftp/cifs-cvs/linux-cifs-client-guide.pdf
* Manchmal kommt Error 95, dann stimmt ev. die ausgehandelte Version nicht man muss nachhelfen
mount -t cifs //server/i /mnt -o vers=3.0
=== 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 ==
== SMB Diagnose ==
=== auf dem Server ===


Hochsetzen des Log Levels im /etc/samba/smb.conf:
Hochsetzen des Log Levels im /etc/samba/smb.conf:
Zeile 260: Zeile 362:
    
    
     smbclient -L localhost -U%
     smbclient -L localhost -U%
* Wer nutzt welche Protokoll-Version?
smbstatus -p
=== auf dem Client ===
* Wer ist Server?
* Wie heisst hier die "ARBEITSGRUPPE" / "WORKGROUP"?
* Welche Shares werden angeboten?
#
# 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
#
# Oder wenn man nur die IP Adresse kennt
#
nmblookup -S -A 192.168.1.2
* Welche Shares werden angeboten?
#
# auf dem Raspberry Pi muss der Befehl nachinstalliert
# werden
apt-get install smbclient
smbclient -m SMB3 -N -L //server
== Labor ==
* im Moment laufen Tests mit
server multi channel support = yes
aio read size = 1
aio write size = 1
* scheinbar gibt es (erwartungsgemäß) Probleme mit 2 Netzwerkkarten im gleichen Subnetz also
* 192.168.1.1 und 192.168.1.2 im Server, das muss man gewisse Routen setzen dass dies funktioniert
== Links ==
https://administrator.de/wissen/samba-unix-cifs-extensions-232171.html


== Sicherheit ==
== Sicherheit ==
Zeile 267: Zeile 426:
# 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.
# 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 XP ==  
== 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 ===
=== Port 80/445 Problem ===
Zeile 291: Zeile 453:
                                                   # nur bei XP Clients notwendig
                                                   # nur bei XP Clients notwendig
</code>
</code>
=== Nach Neustart : Unverbundene Netzwerk Shares ===
[[Datei:Unconnected-Share.png]]
* 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 server -n 5
start J:\
start I:\
ping server -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
[[Datei:Autostart-Win7.png]]
==== Windows 10 - Autostart ====
==== Lösungsansatz ====
https://support.dise.com/support/solutions/articles/9000086107-automatically-connect-network-drives

Aktuelle Version vom 23. August 2022, 16:59 Uhr

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

openSUSE

  • 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

Raspberry Pi

apt-get install samba
systemctl start smbd
systemctl enable smbd

Konfiguration

best practice

[global]
       workgroup = LUMMERLAND
       server string =
       map to guest = Bad User
       guest account = nobody
       security = user
       include = /etc/samba/dhcp.conf
       null passwords = yes

       server role = standalone
       unix extensions = no

       client min protocol = SMB2
       server min protocol = SMB2

       bind interfaces only = yes
       interfaces = lo br0

       local master = yes
       preferred master = yes
       time server = yes

       disable spoolss = yes

[firebird]
      comment = Firebird
      path = /srv/firebird
      guest ok = yes
      writeable = yes
      create mode = 0777
      directory mode = 0777
      force create mode = 0777
      force directory mode = 0777

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


Linux benutzt ein Samba Share

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

  • Manchmal kommt Error 95, dann stimmt ev. die ausgehandelte Version nicht man muss nachhelfen
mount -t cifs //server/i /mnt -o vers=3.0

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 -p

auf dem Client

  • Wer ist Server?
  • Wie heisst hier die "ARBEITSGRUPPE" / "WORKGROUP"?
  • Welche Shares werden angeboten?
#
# 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

#
# Oder wenn man nur die IP Adresse kennt
#
nmblookup -S -A 192.168.1.2


  • Welche Shares werden angeboten?
#
# auf dem Raspberry Pi muss der Befehl nachinstalliert
# werden
apt-get install smbclient

smbclient -m SMB3 -N -L //server

Labor

  • im Moment laufen Tests mit
server multi channel support = yes
aio read size = 1
aio write size = 1
  • scheinbar gibt es (erwartungsgemäß) Probleme mit 2 Netzwerkkarten im gleichen Subnetz also
  • 192.168.1.1 und 192.168.1.2 im Server, das muss man gewisse Routen setzen dass dies funktioniert

Links

https://administrator.de/wissen/samba-unix-cifs-extensions-232171.html

Sicherheit

  1. durch Interfaces= nur die absolut notwendigen Netze zulassen und sich selbst.
  2. browseable auf false setzen, damit nicht grad jeder das Share sehen kann.
  3. 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

Nach Neustart : Unverbundene Netzwerk Shares

  • 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 server -n 5
start J:\
start I:\
ping server -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