我閱讀了很多有關此問題的用戶問題和博客,但沒有任何內容可以解決我的問題。
我有一台 Linux CENTOS 主機,在 VirtualBox 中安裝了 Windows 10 用戶端。在 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
也必須遵守從不同 wiki 已知的所有條件:
- 必須將作為共享所有者的 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