Ich habe viele Benutzerfragen und Blogs zu diesem Thema gelesen, aber nichts hat mein Problem behoben.
Ich habe einen Linux CENTOS-Host mit einem in VirtualBox installierten Windows 10-Gast. Unter Linux gibt es einen Benutzer namens „myuser“, der ein Verzeichnis (777) freigibt und in der Samba-Benutzerdatenbank registriert ist. Dieser Benutzer hat keine Kennwortbeschränkung. Das smb.conf
sieht so aus:
[global]
workgroup = WORKSPACE_SHARE
security = user
map to guest = bad user
[public]
path = /home/myuser/public
public = yes
writeable = yes
comment = smb share
printable = no
guest ok = yes
Windows verfügt über einen lokalen Benutzer mit demselben Namen („myuser“, kein Kennwort festgelegt), die Datei- und Druckerfreigabe ist aktiviert, der Microsoft-Client ist aktiviert, die Arbeitsgruppe ist mit der Samba-Arbeitsgruppe identisch und verwendet ein privates Netzwerk.
Im Explorer kann ich den Linux-Host sehen, der tatsächlich den freigegebenen Ordner („public“) enthält. Aber wenn ich versuche, auf diesen freigegebenen Ordner zuzugreifen, erscheint eine Fehlermeldung: Sie haben keine Zugriffsberechtigung...
Im Internet habe ich Dinge gelesen wie „Windows 10 verwendet SMBv3, aber Samba unterstützt es noch nicht“ und wie man SMBv3 abschaltet – aber es hat nichts geholfen.
Auch die Änderung der lokalen Sicherheitsrichtlinien unter Windows hat nicht geholfen:https://superuser.com/a/916835/408191
Wie kann ich dieses seltsame Problem beheben?
Antwort1
Einige Linux-Distributionen haben eine sogenannte SELinux-Implementierung in ihrem Kernel. Es steht für„Sicherheitsverstärktes Linux“und schränkt unter anderem Samba-Freigaben ein. Wenn Sie einen freigegebenen Ordner erstellen möchten, reicht es nicht aus, in entsprechende Zugriffsberechtigungen und eine Definition anzugeben samba.conf
. Sie müssen auch den richtigen „Sicherheitskontext“ des freigegebenen Ordners festlegen.
Die folgende Berechtigungsmaske und der folgende Sicherheitskontext sollten funktionieren:
chmod -R 770 yoursharefolder
chcon -R -t samba_share_t yoursharefolder
Dabei müssen sämtliche Bedingungen eingehalten werden, die bereits aus anderen Wikis bekannt sind:
- Der Unix-Benutzer als Eigentümer der Freigabe muss zur Samba-Benutzerdatenbank hinzugefügt werden:
smbpasswd -a youruser
- Auf Ihrem Windows-Computer muss ein Benutzer mit demselben Namen und demselben Kennwort vorhanden sein, wie in der Samba-Datenbank festgelegt.
- Ihr
samba.conf
könnte so aussehen:
samba.conf
(alle Teile in Großbuchstaben müssen an Ihre jeweilige spezifische Umgebung angepasst werden):
[global]
workgroup = SAME_WORKGROUP_AS_CONFIGURED_IN_WINDOWS
server string = Samba Server %v
netbios name = HOST_NAME_OF_YOUR_LINUX_MACHINE_ON_NETWORK
security = user
map to guest = bad user
dns proxy = no
[yourshare]
path = /PATH/TO/YOURSHARE
valid users = YOUR_WINDOWS_USER_NAME
browsable = yes
writeable = yes
guest ok = no
read only = no
directory mask = 0770
create mask = 0770
Bearbeiten:Beachten Sie, dass die Änderungen chcon
nicht dauerhaft sind. Um dauerhafte Änderungen am Sicherheitskontext vorzunehmen, verwenden Sie den folgenden Befehl:
semanage fcontext -a -t samba_share_t /full/path/to/your/share/folder
...und um es wirksam zu machen:
restorecon -v /full/path/to/your/share/folder