Я прочитал много вопросов пользователей и блогов по этой теме, но ничего не помогло решить мою проблему.
У меня есть хост Linux CENTOS с гостевой ОС Windows 10, установленной в VirtualBox. В Linux есть пользователь с именем "myuser", который разделяет каталог (777) и зарегистрирован в базе данных пользователей Samba. У этого пользователя нет ограничений по паролю. Выглядит smb.conf
так:
[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 есть локальный пользователь с тем же именем («myuser», пароль не установлен), включен общий доступ к файлам и принтерам, включен клиент Microsoft, задана рабочая группа, которая соответствует рабочей группе Samba, и используется частная сеть.
В проводнике я вижу хост Linux, который действительно содержит общую папку ("public"). Но при попытке доступа к этой общей папке появляется сообщение об ошибке: У вас нет прав доступа...
В интернете я читал такие вещи, как «Windows 10 использует SMBv3, но Samba пока его не поддерживает» и как отключить SMBv3, но это не помогло.
Даже изменение локальных политик безопасности в Windows не помогло:https://superuser.com/a/916835/408191
Как мне исправить эту странную проблему?
решение1
Некоторые дистрибутивы Linux имеют в своем ядре так называемую реализацию SELinux. Это означает«Linux с повышенной безопасностью»и, помимо прочего, ограничивает общие ресурсы Samba. Если вы хотите создать общую папку, то недостаточно указать удобные разрешения на доступ и определение в samba.conf
. Вам также необходимо установить правильный «Контекст безопасности» общей папки.
Следующая маска разрешений и контекст безопасности должны помочь:
chmod -R 770 yoursharefolder
chcon -R -t samba_share_t yoursharefolder
Также должны быть соблюдены все условия, которые уже известны из различных вики:
- Пользователь Unix как владелец общего ресурса должен быть добавлен в базу данных пользователей Samba:
smbpasswd -a youruser
- На вашем компьютере с Windows должен быть пользователь с тем же именем и паролем, которые установлены в базе данных Samba.
- Ваш
samba.conf
может выглядеть так:
samba.conf
(все заглавные части должны быть настроены в соответствии с вашей конкретной средой):
[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
Редактировать:Обратите внимание, что изменения через chcon
не являются постоянными. Чтобы сделать постоянные изменения контекста безопасности, используйте следующую команду:
semanage fcontext -a -t samba_share_t /full/path/to/your/share/folder
...и чтобы сделать это эффективным:
restorecon -v /full/path/to/your/share/folder