Samba als eigenständiger AD-DC

Datum: Fr 7. Jul 2017 (letzte Änderung 23.04.2021)

ZIEL: Eine eigenständigen Samba Domänen Controller bereitstellen, der mittels internem DNS-Server und LDAP-Datenbank als Active Directory Domain Controller fungieren kann.

Wir verfahren im Prinzip nach dem Tutorial unter https://www.server-world.info/en/note?os=Debian_9&p=samba&f=4

Vorbereitungen

Dies sind ist die Ausgangskonfiguration:

root@sambaDC1:~# ip -4 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 10.20.30.40/24 brd 10.20.30.255 scope global enp0s3
    valid_lft forever preferred_lft forever
root@sambaDC1:~#
root@sambaDC1:~# cat /etc/resolv.conf
nameserver 10.20.30.3
search haus2.site
root@sambaDC1:~#
root@sambaDC1:~# hostname -s
sambaDC1
root@sambaDC1:~#
root@sambaDC1:~# hostname -f
sambaDC1.haus2.site
root@sambaDC1:~#
root@sambaDC1:~# samba -V
Version 4.5.8-Debian
root@sambaDC1:~#

Software installieren

Es folgt die Installation wichtiger Pakete, wobei wir den Kerberos-Client unkonfigurieriert lassen - also einfach alle Voreinstellungen mit Enter übernehmen:

root@sambaDC1:~# apt-get install samba krb5-config winbind smbclient
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
samba ist schon die neueste Version (2:4.5.8+dfsg-2).
smbclient ist schon die neueste Version (2:4.5.8+dfsg-2).
Vorgeschlagene Pakete:
libnss-winbind libpam-winbind
Die folgenden NEUEN Pakete werden installiert:
krb5-config winbind
0 aktualisiert, 2 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen 558 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 1.928 kB Plattenplatz zusätzlich benutzt.
Möchten Sie fortfahren? [J/n]
Holen:1 http://ftp.tu-chemnitz.de/pub/linux/debian/debian stretch/main amd64 krb5-config all 2.6 [24,6 kB]
Holen:2 http://ftp.tu-chemnitz.de/pub/linux/debian/debian stretch/main amd64 winbind amd64 2:4.5.8+dfsg-2 [533 kB]
Es wurden 558 kB in 1 s geholt (553 kB/s).
Vorkonfiguration der Pakete ...
Vormals nicht ausgewähltes Paket krb5-config wird gewählt.
 (Lese Datenbank ... 31475 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von .../krb5-config_2.6_all.deb ...
Entpacken von krb5-config (2.6) ...
Vormals nicht ausgewähltes Paket winbind wird gewählt.
Vorbereitung zum Entpacken von .../winbind_2%3a4.5.8+dfsg-2_amd64.deb ...
Entpacken von winbind (2:4.5.8+dfsg-2) ...
winbind (2:4.5.8+dfsg-2) wird eingerichtet ...
mkdir: Verzeichnis '/var/lib/samba/winbindd_privileged' angelegt
die Gruppe von '/var/lib/samba/winbindd_privileged' wurde von root in winbindd_priv geändert
der Modus von '/var/lib/samba/winbindd_privileged' wurde von 0755 (rwxr-xr-x) in 0750 (rwxr-x---) geändert
Created symlink /etc/systemd/system/multi-user.target.wants/winbind.service → /lib/systemd/system/winbind.service.
Job for winbind.service failed because the control process exited with error code.
See "systemctl status winbind.service" and "journalctl -xe" for details.
invoke-rc.d: initscript winbind, action "start" failed.
● winbind.service - Samba Winbind Daemon
Loaded: loaded (/lib/systemd/system/winbind.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2017-07-06 16:07:19 CEST; 13ms ago
    Docs: man:winbindd(8)
        man:samba(7)
        man:smb.conf(5)
Process: 1485 ExecStart=/usr/sbin/winbindd $WINBINDOPTIONS (code=exited, status=1/FAILURE)
Main PID: 1485 (code=exited, status=1/FAILURE)

Jul 06 16:07:19 sambaDC1 systemd[1]: Starting Samba Winbind Daemon...
Jul 06 16:07:19 sambaDC1 systemd[1]: winbind.service: Main process exited, code=exited, status=1/FAILURE
Jul 06 16:07:19 sambaDC1 systemd[1]: Failed to start Samba Winbind Daemon.
Jul 06 16:07:19 sambaDC1 systemd[1]: winbind.service: Unit entered failed state.
Jul 06 16:07:19 sambaDC1 systemd[1]: winbind.service: Failed with result 'exit-code'.
dpkg: Fehler beim Bearbeiten des Paketes winbind (--configure):
Unterprozess installiertes post-installation-Skript gab den Fehlerwert 1 zurück
Trigger für libc-bin (2.24-11+deb9u1) werden verarbeitet ...
Trigger für systemd (232-25) werden verarbeitet ...
Trigger für man-db (2.7.6.1-2) werden verarbeitet ...
krb5-config (2.6) wird eingerichtet ...
Fehler traten auf beim Bearbeiten von:
winbind
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@sambaDC1:~#

Der aufgetretene Fehler ist nicht so schlimm, der winbind-Daemon wird dann zu einem späteren Zeitpunkt gestartet.

Domänencontroller bereitstellen

Jetzt geht es mit der Konfiguration und Provisionierung des Samba-Servers weiter. Bei der Aktion samba-tool domain provision wird u.a. das Administrator-Passwort gesetzt; es muss mindestens 7 Zeichen lang und komplex genug sein. Ansonsten bricht der Vorgang mit einem Fehler ab, was aber nicht weiter schlimm ist: vor einem erneutem Aufruf dieser Kommandozeile muss nur die ‚smb.conf‘ gelöscht werden. Dieser wichtige Vorgang gestaltet sich insgesamt so:

root@sambaDC1:~# cd /etc/samba/
root@sambaDC1:/etc/samba#
root@sambaDC1:/etc/samba# ls -ltr
insgesamt 28
drwxr-xr-x 2 root root 4096 Mai 18 11:53 tls
-rw-r--r-- 1 root root    8 Mai 18 11:53 gdbcommands
    -rw-r--r-- 1 root root   54 Jul  6 15:19 dhcp.conf
-rw-r--r-- 1 root root  333 Jul  6 16:02 smb.conf
root@sambaDC1:/etc/samba#
root@sambaDC1:/etc/samba# mv smb.conf /root/smb.conf_orig
root@sambaDC1:/etc/samba#
root@sambaDC1:/etc/samba#
root@sambaDC1:/etc/samba# samba-tool domain provision
Realm [HAUS2.SITE]:
Domain [HAUS2]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write 'none' to disable forwarding) [10.20.30.3]:
Administrator password:
Retype password:
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=haus2,DC=site
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=haus2,DC=site
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /var/lib/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              sambaDC1
NetBIOS Domain:        HAUS2
DNS Domain:            haus2.site
DOMAIN SID:            S-1-5-21-2804442938-3476954425-3519845702

root@sambaDC1:/etc/samba#

Als nächstes kümmern wir uns um die Kerberos-Clientkonfiguration, die wir während der Installation ausgelassen haben und starten danach die Daemons:

root@sambaDC1:/etc/samba# cp -bf /var/lib/samba/private/krb5.conf /etc/
root@sambaDC1:/etc/samba#
root@sambaDC1:/etc/samba# systemctl stop smbd nmbd winbind
root@sambaDC1:/etc/samba# systemctl unmask samba-ad-dc
Removed /etc/systemd/system/samba-ad-dc.service.
root@sambaDC1:/etc/samba# systemctl start samba-ad-dc
root@sambaDC1:/etc/samba# systemctl enable samba-ad-dc
Synchronizing state of samba-ad-dc.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable samba-ad-dc
root@sambaDC1:/etc/samba#

Kommt eine Distribution mit SysVinit zum Einsatz, sind folgende Stop/Start-Kommandos erforderlich:

root@smbsrv:/etc/samba# service smbd stop
[ ok ] Stopping SMB/CIFS daemon: smbd.
root@smbsrv:/etc/samba#
root@smbsrv:/etc/samba# service nmbd stop
[ ok ] Stopping NetBIOS name server: nmbd.
root@smbsrv:/etc/samba#
root@smbsrv:/etc/samba# service winbind stop
root@smbsrv:/etc/samba#
root@smbsrv:/etc/samba# service samba-ad-dc start
[ ok ] Starting Samba AD DC daemon: samba.
root@smbsrv:/etc/samba#

Zur Kontrolle der nunmehr laufenden Daemons und der neuen Konfiguration geben wir folgendes ein:

root@sambaDC1:/etc/samba# ps aux | grep -E 'mbd|win|samba'
root      1906  0.1  6.9 514788 51932 ?        Ss   16:10   0:00 /usr/sbin/samba
root      1907  0.0  4.5 514788 33640 ?        S    16:10   0:00 /usr/sbin/samba
root      1908  0.2  6.7 525656 50188 ?        S    16:10   0:00 /usr/sbin/samba
root      1909  0.0  5.0 514788 37916 ?        S    16:10   0:00 /usr/sbin/samba
root      1910  0.0  4.5 514788 33640 ?        S    16:10   0:00 /usr/sbin/samba
root      1911  3.4  5.5 514788 40972 ?        S    16:10   0:03 /usr/sbin/samba
root      1912  0.1  7.8 509864 58068 ?        Ss   16:10   0:00 /usr/sbin/smbd -D --option=server role check:inhibit=yes --foreground
root      1913  0.0  4.6 514788 34668 ?        S    16:10   0:00 /usr/sbin/samba
root      1914  0.0  5.8 521084 43356 ?        S    16:10   0:00 /usr/sbin/samba
root      1915  0.0  5.2 514788 39404 ?        S    16:10   0:00 /usr/sbin/samba
root      1916  0.0  4.5 514788 33640 ?        S    16:10   0:00 /usr/sbin/samba
root      1917  0.0  4.5 514788 33640 ?        S    16:10   0:00 /usr/sbin/samba
root      1918  0.0  6.2 514788 46232 ?        S    16:10   0:00 /usr/sbin/samba
root      1919  0.1  7.4 478376 55560 ?        Ss   16:10   0:00 /usr/sbin/winbindd -D --option=server role check:inhibit=yes --foreground
root      1920  0.0  5.0 514788 37364 ?        S    16:10   0:00 /usr/sbin/samba
root      1921  0.0  5.7 521504 42648 ?        S    16:10   0:00 /usr/sbin/samba
root      1925  0.0  4.6 502292 34552 ?        S    16:10   0:00 /usr/sbin/smbd -D --option=server role check:inhibit=yes --foreground
root      1926  0.0  4.6 502292 34332 ?        S    16:10   0:00 /usr/sbin/smbd -D --option=server role check:inhibit=yes --foreground
root      1927  0.0  5.8 477940 43600 ?        S    16:10   0:00 /usr/sbin/winbindd -D --option=server role check:inhibit=yes --foreground
root      1930  0.0  5.2 478376 39048 ?        S    16:10   0:00 /usr/sbin/winbindd -D --option=server role check:inhibit=yes --foreground
root      1931  0.0  5.1 479008 38612 ?        S    16:10   0:00 /usr/sbin/winbindd -D --option=server role check:inhibit=yes --foreground
root      1932  0.0  4.6 509864 34948 ?        S    16:10   0:00 /usr/sbin/smbd -D --option=server role check:inhibit=yes --foreground
root      2101  0.0  0.1  12784   980 pts/0    S+   16:11   0:00 grep --color=auto -E mbd|win|samba
root@sambaDC1:/etc/samba#
root@sambaDC1:/etc/samba#
root@sambaDC1:/etc/samba# cat smb.conf
# Global parameters
[global]
    netbios name = SAMBADC1
    realm = HAUS2.SITE
    workgroup = HAUS2
    dns forwarder = 10.20.30.3
    server role = active directory domain controller

[netlogon]
    path = /var/lib/samba/sysvol/haus2.site/scripts
    read only = No

[sysvol]
    path = /var/lib/samba/sysvol
    read only = No
root@sambaDC1:/etc/samba#

Nun wäre es gut, einen Domänennutzer namens „debra“ anzulegen:

root@sambaDC1:/etc/samba# samba-tool user create debra
New Password:
Retype Password:
User 'debra' created successfully
root@sambaDC1:/etc/samba#

Sinnvollerweise lassen wir uns nun die Browseliste ausgeben, was bei Debian 10 nicht mehr anonym möglich ist, sondern nur noch authentifiziert z.B. mittels smbclient -L localhost -U debra (Domänennutzer „debra“) funktioniert. Hier die Variante für die Samba-Version von Debian 9:

root@sambaDC1:/etc/samba# smbclient -L localhost -U%
Domain=[HAUS2] OS=[Windows 6.1] Server=[Samba 4.5.8-Debian]

    Sharename       Type      Comment
    ---------       ----      -------
    netlogon        Disk
    sysvol          Disk
    IPC$            IPC       IPC Service (Samba 4.5.8-Debian)
Domain=[HAUS2] OS=[Windows 6.1] Server=[Samba 4.5.8-Debian]

    Server               Comment
    ---------            -------

    Workgroup            Master
    ---------            -------
    WORKGROUP            SAMBADC1
root@sambaDC1:/etc/samba#
root@sambaDC1:/etc/samba# samba-tool domain level show
Domain and forest function level for domain 'DC=haus2,DC=site'

Forest function level: (Windows) 2008 R2
Domain function level: (Windows) 2008 R2
Lowest function level of a DC: (Windows) 2008 R2
root@sambaDC1:/etc/samba#

Vor der Aufnahme eines Windows 7 Rechners in die Samba Domäne:

root@sambaDC1:/etc/samba# pdbedit -L -w
SAMBADC1$:4294967295:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:789B04D223FAFB1AB5AAC787C10294D5:[S          ]:LCT-595E445A:
Administrator:4294967295:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:0B14252E7F38340DC3C6C3E6304B9BBC:[U          ]:LCT-595E445A:
debra:4294967295:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:0B14252E7F38340DC3C6C3E6304B9BBC:[U          ]:LCT-595E45AA:
krbtgt:4294967295:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:72767E45FFB333BD1428FB8F8DE8917E:[DU         ]:LCT-595E445A:
nobody:65534:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[U          ]:LCT-00000000:
root@sambaDC1:/etc/samba#

Windows-Client in die Domäne aufnehmen

Nun erfolgt die Aufnahme eines Windows 7/10-Rechners in die Samba Domäne mit Hilfe des Nutzernamens ‚Administrator‘ und dem oben bei ‚samba-tool domain provision‘ gesetztem Passwort. Danach sieht die Ausgabe folgendermaßen aus:

root@sambaDC1:/etc/samba# pdbedit -L -w
SAMBADC1$:4294967295:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:789B04D223FAFB1AB5AAC787C10294D5:[S          ]:LCT-595E445A:
Administrator:4294967295:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:0B14252E7F38340DC3C6C3E6304B9BBC:[U          ]:LCT-595E445A:
IE11WIN7$:4294967295:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:AA6E4AB0F6D0A897B317B4B1F846B130:[W          ]:LCT-595E4606:
debra:4294967295:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:0B14252E7F38340DC3C6C3E6304B9BBC:[U          ]:LCT-595E45AA:
krbtgt:4294967295:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:72767E45FFB333BD1428FB8F8DE8917E:[DU         ]:LCT-595E445A:
nobody:65534:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[U          ]:LCT-00000000:
root@sambaDC1:/etc/samba#

Servergespeichertes Profil einrichten

Wir müssen zu unserer Samba-Konfiguration /etc/samba/smb.conf ein Share namens profiles hinzufügen (Zeilen 14 bis 18):

root@sambaDC1:~# nl /etc/samba/smb.conf
    1  # Global parameters
    2  [global]
    3          dns forwarder = 192.168.2.1
    4          netbios name = sambaDC1
    5          realm = DOM1.TEST
    6          server role = active directory domain controller
    7          workgroup = DOM1

    8  [netlogon]
    9          path = /var/lib/samba/sysvol/dom1.test/scripts
    10          read only = No

    11  [sysvol]
    12          path = /var/lib/samba/sysvol
    13          read only = No

    14  [profiles]
    15          comment = Profile Share
    16          path = /srv/samba/profiles
    17          read only = No
    18          ; Nicht mehr bei Samba 4.9.5 vorhanden:
    19          ;profile acls = Yes
root@sambaDC1:~#
root@sambaDC1:~# #   >>> die letzten 5 Zeilen wurden hinzugefügt.
root@sambaDC1:~#
root@sambaDC1:~# mkdir -p -m 757 /srv/samba/profiles

Danach legen wir noch einen neuen Domänennutzer mit einem entsprechenden Profil-Pfad an, mit dem wir uns dann an der Windows-Maschine anmelden können:

root@sambaDC1:~# samba-tool user create aduser3 --profile-path='\\sambaDC1.dom1.test\profiles\%USERNAME%'
root@sambaDC1:~#
root@sambaDC1:~# # Nur zur Kontrolle:
root@sambaDC1:~# pdbedit -L -v  -u aduser3

Fehlersuche

Es können natürlich vielerlei Probleme auftreten, das Samba Wiki unter https://wiki.samba.org/index.php/Samba_AD_DC_Troubleshooting ist sehr empfehlenswert. Ansonsten folgen hier ein paar Tipps:

  • DNS-Hostnamen auf dem Linux-Server mittels hostname --fqdn ausgeben lassen

  • DNS-Namensauflösung auf dem Linux-Server mit nslookup, host oder dig kontrollieren

  • DNS-Namensauflösung auf den Windows-Clients mit nslookup kontrollieren

  • Einen zweiten Adress-Record hinzufügen, wenn Samba via PAT erreicht werden soll: samba-tool dns add localhost dom1.test sambaDC1 A 10.1.1.200 -U Administrator (die Adresse 10.1.1.200 hat dabei die äußere NIC des Routers, der Windows-Client ist im selben Netz und habe 10.1.1.202)

Probleme mit Dual-Stack (IPv6 -> IPv4) sind nicht so einfach lokalisierbar. So z.B. im speziellen Fall beim Domänenanschluss von Windows 10 nach erfolgreicher Authentifizierung als ‚Administrator‘. Dort tauchte nach längerer Wartezeit immer wieder „Netzwerkpfad wurde nicht gefunden“ auf. Ursache war schließlich, dass der Linux-Server zusätzlich zur IPv4-Adresse über eine IPv6 Global Unicast Adresse aus dem Bereich 2000::/3 verfügte, die dem Windows-Host beim Ausführen von nslookup sambaDC1.dom1.test parallel zur IPv4-Adresse übermittelt wurde. IPv6 zu deaktivieren brachte keine Besserung. Erst nach dem Eintragen dieser IPv6-Adresse als Nameserver (DNS-Clientkonfiguration für IPv6) war der Beitritt problemlos möglich. Vermutlich haben die Global Unicast Adressen oberste Priorität, Link Lokale Adressen allein hatten in einer separaten Versuchsanordnung keine Probleme bereitet. Besser ist also, man setzt generell auf das neue Pferd IPv6.

Probleme mit Linux-Containern: Um File Sharing in Containern nutzen zu können, müssen sie im privilegierten Modus laufen. Bei LXD kann man dies z.B. ganz einfach mit lxc config set myLinContainer security.privileged true bewerkstelligen.

Information aus dem integrierten LDAP gewinnen: Nach der Installation des Pakets ldb-tools lassen sich Details z.B. über den Nutzeraccount debra ausgeben (siehe auch https://wiki.samba.org/index.php/LDB):

root@deb-srv:~# ldbsearch -H /var/lib/samba/private/sam.ldb.d/DC=DOM1,DC=TEST.ldb cn=debra | head -12
# record 1
dn: CN=debra,CN=Users,DC=dom1,DC=test
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: debra
instanceType: 4
whenCreated: 20210426063949.0Z
uSNCreated: 4069
nTSecurityDescriptor: O:S-1-5-21-3239757610-3408672333-1060019670-512G:S-1-5-2
 1-3239757610-3408672333-1060019670-512D:AI(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;S-
root@deb-srv:~#

User-Passwörter, mount.cifs

1. Passwörter ändern ist kein großes Problem - das lässt sich für die oben angelegten Domänennutzer mit samba-tool erledigen. Allerdings sind dabei ein paar Besonderheiten zu beachten.

Entweder lässt man sich interaktiv nach dem neuen Passwort fragen, z.B. für die Benutzerin namens ‚debra‘:

root@sambaDC1:~$ samba-tool user setpassword debra
New Password:
Retype Password:
root@sambaDC1:~$

Oder es wird auf der Kommandozeile übergeben (hier ein komplexeres mit Leerzeichen, einem Slash und einem für ‚mount.cifs‘ problematischen Komma):

root@sambaDC1:~ $ samba-tool user setpassword debra --newpassword='Top Q/, qwer'
Changed password OK
root@sambaDC1:~ $

ACHTUNG: Das Tool gibt fälschlicherweise auch dann „Changed password OK“ aus, wenn das Passwort nicht kompliziert genug war und deswegen ignoriert wurde! Im interaktiven Modus verhält es sich toleranter, so wird z.B. „123, qwer“ akzeptiert.

2. Mounten von Samba-Freigaben ist dank cifs (Common Internet File System) bzw. smbfs (veraltet) möglich. Unter Debian muss nur das Paket ‚cifs-utils‘ installiert sein, dann kann es auch wieder interaktiv geschehen:

root@smbclient:~ $ mount -t cifs -o username=debra //10.20.30.40/profiles /mnt
Password for debra@//10.20.30.40/profiles:  ************
root@smbclient:~ $

Als weitere Mountoption ‚password=…‘ zu verwenden, ist aus mehreren Gründen nicht ratsam, insbesondere wegen der Interpretation von Kommas.

Dazu aus man 8 mount.cifs: „Note that a password which contains the delimiter character (i.e. a comma ‚,‘) will fail to be parsed correctly on the command line. However, the same password defined in the PASSWD environment variable or via a credentials file (see below) or entered at the password prompt will be read correctly.“

Automatisierbar und sicher wird es dann via Hilfsdatei, in der eben auch diese Sonderzeichen möglich sind:

root@smbclient:~ $ umask 077
root@smbclient:~ $ cat > /etc/cifs-user <<\EOF
> username=debra
> password=Top Q/, qwer
root@smbclient:~ $ EOF
root@smbclient:~ $ umask 022
root@smbclient:~ $ mount -t cifs -o credentials=/etc/cifs-user //10.20.30.40/profiles /mnt