我有两个 ubuntu VM(服务器在 VirtualBox 中运行,作为开发机器)。旧机器(ubuntu 12.04 LTS)运行 samba 很好,所有共享都运行良好。在制作新机器时,我将共享信息(但不是整个配置文件)复制到新机器(ubuntu 14.04 LTS),但许多共享不起作用。
此共享适用于新旧版本:
[username]
path = /home/username
available = yes
valid users = username
read only = no
browseable = yes
public = yes
writable = yes
force user = username
force group = username
create mask = 0644
directory mask = 0755
hide dot files = no
follow symlinks = no
此共享在较新的 ubuntu 14.04 LTS 上失败(与上面的相同,但“强制用户/组”不同:
[etc]
path = /etc
available = yes
valid users = username
read only = no
browseable = yes
public = yes
writable = yes
force user = root
force group = root
create mask = 0644
directory mask = 0755
hide dot files = no
follow symlinks = no
我还有其他共享,我以类似的方式“强制用户=www-data”,但也失败了。
当我尝试连接时,我看到(来自 osx)的内容:“无法完成操作,因为找不到“etc”的原始项目。”(我没有 Windows 框可供测试)。
PS:smb.conf 基本上是“原始的”:我没有对共享本身之外的内容进行任何编辑。
我快速浏览了一下日志,似乎唯一记录的内容是在 log.workstation 中:
[2014/07/27 09:02:06.173271, 0] ../source3/param/loadparm.c:4094(check_usershare_stat)
check_usershare_stat: file /var/lib/samba/usershares/ owned by uid 0 is not a regular file
任何关于如何着手解决这个问题的帮助都将不胜感激。显然,这与“强制用户”和“强制组”有关……但除此之外,我不知道该去哪里找。
答案1
我偶然发现ServerFault 上的这个答案这给了我线索,我需要将“root”添加到有效用户列表中。
之前不起作用的两个共享现在可以正常工作了。我在“有效用户”旁边分别添加了“www-data”和“root”:
[sites]
path = /home/username/sites
available = yes
valid users = username,www-data
read only = no
browseable = yes
public = yes
writable = yes
force user = www-data
force group = www-data
create mask = 0644
directory mask = 0755
hide dot files = no
follow symlinks = no
;wide links = no
[etc]
path = /etc
available = yes
valid users = username,root
#guest ok = yes
#guest only = yes
read only = no
browseable = yes
public = yes
writable = yes
force user = root
force group = root
create mask = 0644
directory mask = 0755
hide dot files = no
follow symlinks = no
无论如何。这个答案适用于其他可能遇到同样问题的人。(不,我不知道为什么用过的可以工作,但升级时崩溃)