Inhaltsverzeichnis
Samba
Client
Kommandozeile
aptitude -y install smbclient
Alle Samba-Server im Netz zeigen.
mit den Rechten eines bestimmten Benutzers:
# smbtree -U fritz
anonym (klappt aber nicht immer bzw. überall):
# smbtree -N
WORKGROUP
\\VENUS Samba 3.0.23c
\\VENUS\IPC$ IPC Service (Samba 3.0.23c)
\\VENUS\HDD1
# smbtree -S -N
WORKGROUP
\\VENUS Samba 3.0.23c
Alle Freigaben auf dem Rechner venus zeigen:
# smbclient -L venus -N
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.23c]
Sharename Type Comment
--------- ---- -------
HDD1 Disk
IPC$ IPC IPC Service (Samba 3.0.23c)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.23c]
Server Comment
--------- -------
VENUS Samba 3.0.23c
Workgroup Master
--------- -------
WORKGROUP VENUS
Alle Freigaben auf dem Rechner mediabox zeigen:
# smbclient -L mediabox -N
WARNING: The "username" option is deprecated
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.23c]
Sharename Type Comment
--------- ---- -------
HDD1 Disk
IPC$ IPC IPC Service (Samba 3.0.23c)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.23c]
Server Comment
--------- -------
FANTEC Samba 3.0.23c
PSD28958
Workgroup Master
--------- -------
WORKGROUP FANTEC
Alle Freigaben auf dem Rechner venus zeigen, wenn der Netbios-Name und der DNS-Name nicht gleich sind:
# smbclient -L venus -I 192.168.1.1 -N # smbclient -A /root/.mount -L //venus/
Einloggen in die Freigabe HDD1:
# smbclient //venus/HDD1 -N Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.23c] Server not using user level security and no password supplied. smb: \> smb: \> exit
Als fritz in die Freigabe HDD1 einloggen:
# smbclient //venus/HDD1 -U fritz
Passwortlos in die Freigabe HDD1 einloggen:
# smbclient //venus/HDD1 -A identifikation.txt
# vi /root/identifikation.txt username = fritz password = geheim domain = WORKGROUP
Alles in einem Aufruf:
> smbclient //windowsrechner/Freigabe Passwort -I 10.11.12.13 -W Workgroup -U Benutzername smb: \> > smbclient //windowsrechner/Freigabe Passwort -I 10.11.12.13 -W Workgroup -U Benutzername -c "ls Verzeichnis01/Verzeichnis02/Verzeichnis03" . D 0 Fri Jul 16 03:17:52 2021 .. D 0 Fri Jul 16 03:17:52 2021 datei_01.ide A 23834 Sun May 30 17:52:29 2021 datei_02.ide A 22131 Thu Jun 10 22:32:14 2021 datei_03.ide A 24368 Mon Jul 5 20:12:13 2021
montieren
> aptitude -y install smbfs
> mount //192.168.1.1/HDD1 /mnt/ -t cifs -o guest
> mount //192.168.1.1/HDD1 /mnt/ -t cifs -o cred=/root/identifikation.txt
> mount //192.168.1.1/HDD1 /mnt/ -t cifs -o noperm,iocharset=utf8,rw,file_mode=0775,dir_mode=0775,cred=/root/identifikation.txt //192.168.1.1/HDD1 /mnt/
> mount //192.168.1.1/HDD1 /mnt/ -t cifs -o nobrl,sfu,serverino,noperm,intr,hard,directio,uid=1000,gid=1000,rw,user,cred=/root/identifikation.txt
> mount //venus/HDD1 /mnt/ -o fstype=cifs,ip=192.168.1.1,nobrl,sfu,serverino,noperm,intr,hard,directio,gid=1000,noacl,ro,user,cred=/root/identifikation.txt
Seit Ubuntu-Version 11.04 sollte man die Option "mapchars" entfernen.
> mount //windowsrechner/Freigabe/Verzeichnis01/Verzeichnis02/Verzeichnis03 /mnt -t cifs -o ip=10.11.12.13,vers=2.0,nobrl,sfu,serverino,noperm,intr,hard,gid=1000,noacl,ro,user,username=Benutzername,password=Passwort,domain=Workgroup
> apt install cifs-utils > mount //192.168.1.1/HDD1 /mnt/ -t cifs -o ro,ip=192.168.1.1,nobrl,sfu,serverino,noperm,intr,hard,noperm,cred=/root/identifikation.txt
FreeBSD
AutoFS / Automount (Linux)
Ubuntu 20.04
# apt install smbclient autofs cifs-utils
ältere Linux-Versionen
# aptitude -y install autofs smbfs smbclient # mkdir -p /etc/autofs/
# vi /etc/autofs/auto.server venus -fstype=cifs,ip=192.168.1.1,nobrl,sfu,serverino,noperm,intr,hard,directio,gid=1000,noacl,rw,user,cred=/root/identifikation.txt //venus/HDD1 multimedia -fstype=cifs,ip=192.168.1.2,nobrl,sfu,serverino,noperm,intr,hard,directio,gid=1000,noacl,rw,user,cred=/root/.mount.multimedia ://samba/multimedia tmp -fstype=cifs,vers=3.0,rw,noperm,nosetuids,ip=192.168.1.1,uid=1000,gid=1000,credentials=/root/identifikation.txt ://server.lan/tmp
# vi /etc/auto.master /cifs /etc/autofs/auto.server -t 6
# /etc/init.d/autofs restart
# ln -s /cifs/venus /home/ # ln -s /cifs/multimedia /home/
# ls -lha /home/venus/ # ls -lha /home/multimedia/
Jetzt wird /venus/HDD1 bzw. /samba/multimedia immer nur bei Bedarf gemountet und nach 6 Sekunden inaktivität, wieder ausgehängt.
Ubuntu 20.04 LTS:
> echo "/cifs /etc/auto.cifs -g -t 10" >> /etc/auto.master > touch /etc/auto.cifs.windowsrechner > chmod 0600 /etc/auto.cifs.windowsrechner > echo "username=Benutzername" >> /etc/auto.cifs.windowsrechner > echo "password=Passwort" >> /etc/auto.cifs.windowsrechner > echo "domain=Workgroup" >> /etc/auto.cifs.windowsrechner > echo "windowsrechner -fstype=cifs,vers=2.0,rw,user,noauto,exec,ip=10.11.12.13,uid=1000,gid=1000,credentials=/etc/auto.cifs.windowsrechner ://windowsrechner/Freigabe" >> /etc/auto.cifs > service autofs restart > ls -lha /cifs/windowsrechner
Samba-Server
installation von Samba 4.6
> smbd -b | grep "CONFIGFILE" CONFIGFILE: /usr/local/etc/smb4.conf
> mv /var/db/samba4/private /var/db/samba4/private_original > ln -s /home/etc/samba4/private /var/db/samba4/private
> testparm -v > echo "samba_server_enable=YES" >> /etc/rc.conf
die SHARE-Namen sollten nur max. 12 Zeichen lang sein
> service samba_server status nmbd is not running. smbd is not running.
> service samba_server start Performing sanity check on Samba configuration: OK Starting nmbd. Starting smbd.
> service samba_server status nmbd is running as pid 68580. smbd is running as pid 68584.
> ps ax | fgrep -v grep | egrep "samba|smbd|nmbd|winbindd" 68794 - Ss 0:00,00 /usr/local/sbin/nmbd --daemon --configfile=/usr/local/etc/smb4.conf 68798 - Ss 0:00,02 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf 68800 - S 0:00,00 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf 68801 - S 0:00,00 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf 68803 - S 0:00,00 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
> smbd -b | egrep "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR" LOCKDIR: /var/db/samba4 STATEDIR: /var/db/samba4 CACHEDIR: /var/db/samba4 PRIVATE_DIR: /var/db/samba4/private
- /usr/local/etc/smb4.conf
### Samba 4.0 - Binary: ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9.2-release/Latest/samba4.tbz # server role = active directory domain controller # server services = +smb # dcerpc endpoint servers = remote # start smbd/nmbd/winbindd instead for domain member and standalone file server tasks # https://wiki.samba.org/index.php/Samba4/s3fs # https://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html [global] unix charset = UTF8 workgroup = ENERGIE server string = ERDE interfaces = 192.168.2.1/24 bind interfaces only = Yes passdb backend = smbpasswd smb passwd file = /home/etc/samba4/private/smbpasswd log file = /var/log/samba.log max log size = 50 min protocol = NT1 disable netbios = Yes enable asu support = Yes socket options = TCP_NODELAY IPTOS_LOWDELAY #socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536 os level = 64 preferred master = Yes domain master = Yes dns proxy = No ##socket address = 192.168.2.1 usershare prefix allow list = /tmp, /Export usershare prefix deny list = /etc, /dev, /boot, /root idmap config * : backend = tdb invalid users = root, @wheel valid users = kontor, multimedia, kinder, fritz, fratz create mask = 0664 directory mask = 0775 hosts allow = 127., 192.168.2. # aio read size = 65536 # aio write size = 65536 write cache size = 262144 case sensitive = Yes fstype = Samba ### Samba 4.0 - Binary: ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9.2-release/Latest/samba4.tbz # server services = +smb -s3fs dcerpc endpoint servers = +unixinfo +browser enable core files = no client max protocol = SMB3 # load printers = no printable = no # #tls enabled = No #tls keyfile = #tls certfile = #tls cafile = #tls crlfile = #tls dh params file = [cdrom] comment = cdrom path = /cdrom valid users = kontor force user = kontor force group = kontor read only = Yes create mask = 0660 directory mask = 0770 [kontor] comment = kontor path = /home/kontor valid users = kontor force user = kontor force group = kontor read only = No create mask = 0660 directory mask = 0770 [tmp] comment = Tmp path = /tmp valid users = kontor, multimedia force user = kontor force group = kontor read only = No create mask = 0660 directory mask = 0770 [mm] comment = "Verzeichnis mit Multimediadaten" path = /Export/mm valid users = multimedia force user = multimedia force group = dlna read only = No create mask = 0660 directory mask = 0770 [kinder] comment = "Verzeichnis mit Multimediadaten für Kinder" path = /Export/kinder valid users = kinder force user = kinder force group = dlna read only = No create mask = 0660 directory mask = 0770 [freecom] comment = "Freecom - Laufwerk" path = /Freecom valid users = fritz, fratz force user = fritz force group = fritz read only = No create mask = 0666 directory mask = 0777
Benutzer anlegen in Samba 3.4
ACHTUNG!
Die Benutzer, die mit smbpasswd Samba bekannt gemacht werden, dürfen nicht in der Gruppe "0" sein!
Sonst bekommt man den Fehler NT_STATUS_ACCESS_DENIED.
Als erstes muss natürlich Samba installiert werden:
# aptitude -y install samba
Dann brauchen wir einen Systemuser:
# useradd fritz
Samba muss den Benutzer natürlich auch kennen:
# smbpasswd -a fritz
oder für Scripte so:
# echo -e "geheim\ngeheim" | smbpasswd -s -a fritz
Das "-e" hinter dem echo und das "\n" zwischen den Passwortwiederholungen
sind sehr wichtig, sonst funktioniert das automatische Anlegen des Benutzers nicht!
so wird das Passwort in der Samba-Datenbank geändert:
> smbpasswd -U fritz New SMB password: Retype new SMB password:
man kann auch Benutzer wieder aus der SMB-Datenbank entfernen:
> smbpasswd -x root smb_delete_user: Refusing to delete local system root account! Deleted user root.
alle User, die Samba kennt, kann man so sehen:
> pdbedit -L Ignoring unknown parameter "dcerpc endpoint servers" Ignoring unknown parameter "client max protocol" fritz:1000:User &
> pdbedit -Lv --------------- Unix username: fritz NT username: Account Flags: [U ] User SID: S-1-5-21-2557483769-2213720445-2638791776-9000 Primary Group SID: S-1-5-21-2557483769-2213720445-2638791776-513 Full Name: Benutzer Home Directory: \\server\sysop HomeDir Drive: Logon Script: Profile Path: \\server\fritz\profile Domain: GRUPPE Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: never Kickoff time: never Password last set: Sa., 06 Nov. 2010 23:55:34 CET Password can change: Sa., 06 Nov. 2010 23:55:34 CET Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Passwort ändern:
> echo 'geheim' | pdbedit -u fritz -t
Benutzerdaten ändert:
> pdbedit -ru fritz
Benutzer aus der Samba-Datenbank löschen:
> pdbedit -xu fritz
Benutzer-Datenbank exportieren:
> pdbedit -e smbpasswd:/pfad/zum/Archiv/samba-users.backup
Benutzer-Datenbank importieren:
> pdbedit -i smbpasswd:/pfad/zum/Archiv/samba-users.backup
Jetzt muss Samba (smb.conf) noch konfiguriert werden:
/etc/samba/smb.conf - allgemeines Beispiel
workgroup = ARBEITSGRUPPE netbios name = SERVERNAME server string = Samba %v (%h) security = user hosts allow = 127. 172.0. 192.168.0. load printers = no log file = /var/log/samba/samba.log.%m socket options = TCP_NODELAY local master = yes os level = 64 domain master = yes preferred master = yes disable netbios = yes invalid users = root strict sync = yes sync always = yes kernel oplocks = yes unix extensions = yes case sensitive = yes [Freigabe] comment = Bemerkung path = /pfad/verzeichnis read only = no browseable = yes public = no valid users = fritz fratz
/etc/samba/smb.conf - konkretes Beispiel
[global]
workgroup = WORKGROUP
server string = Samba Server
netbios name = FreeBSD-Server
wins support = Yes
hosts allow = 192.168.1. 192.168.2. 127.
log file = /var/log/%m.log
max log size = 50
security = share
; security = user
; security = server
; force user = nobody
; force group = nogroup
socket options = TCP_NODELAY
os level = 33
domain master = yes
preferred master = yes
dns proxy = no
client code page = 850
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writeable = no
printable = yes
[tmp]
comment = Temporaerer Dateiraum
path = /tmp
read only = no
public = yes
browseable = yes
create mask = 0777
[homes]
comment = Homeverzeichnis
valid users = %S
read only = No
browseable = No
writeable = yes
create mask = 0700
[var-tmp]
comment = allgemeines Dateilager
path = /var/tmp
read only = No
public = yes
writeable = yes
printable = no
browseable = Yes
Glücklicherweise braucht man Samba jetzt nicht neu zu starten!
SWAT
SWAT ist ein grafisches Konfigurationswerkzeug für Samba.
SWAT aktivieren
Hat man Samba mit SWAT installiert, dann kann man SWAT aktivieren in dem man in der Datei "/etc/inetd.conf" die Zeile mit "swat" am Anfang durch das entfernen des "#" aktiviert:
> vi /etc/inetd.conf ... # # Enable the following two entries to enable samba startup from inetd # (from the Samba documentation). Enable the third entry to enable the swat # samba configuration tool. # #netbios-ssn stream tcp nowait root /usr/local/sbin/smbd smbd #netbios-ns dgram udp wait root /usr/local/sbin/nmbd nmbd swat stream tcp nowait/400 root /usr/local/sbin/swat swat
Läuft Samba/SWAT auf einem Linux, dann muss es in der Datei /etc/xinetd.d/swat durch das setzen einer Variablen aktiviert werden (alternativ kann man die Zeile auch, mit einem "#", auskommentieren):
disable = no only_from = 127.0.0.1 192.168.100.0
und anschließend den INETD neu startet:
> service inetd restart
Jetzt kann man die SWAT-Oberfläche mit "http://server:901/" im Browser aufrufen (an Stelle von "server" muss natürlich die IP oder der Name des Samba-Servers stehen).
Problembehebung
Bekommt man jetzt im Browser ein Access Denied. angezeigt, dann fehlt u.U. noch der Benutzer "root" in der Samba-User-Datenbank.
Dieses Problem kann vier verschiedene Ursachen haben:
- man darf den Server-Namen nicht in der SWAT-URL-Zeile verwenden sondern nur die IP, das war bei mir (trotz funktionierendem DNS) der Fall;
- man muss den Port 901/swat in der Datei /etc/hosts.allow extra erlauben;
- der Benutzer "root" wird in der SMB-Datenbank verlangt (gelegentlich bei Linux-Distributionen);
- SWAT hat nur lokal den Port 901 geöfnet;
Lösung für Problem "1":
http://192.168.100.1:901
Lösung für Problem "2":
> vi /etc/hosts.allow ... # Swat - Samba port 901 swat : 192.168.100. : allow swat : ALL : deny
Lösung für Problem "3":
> smbpasswd -a root New SMB password: Retype new SMB password: Added user root.
Lösung für Problem "4": Dann kann man den Port 901 mit SSL umleiten oder einen SSH-Tunnel bauen.
