以下是 samba 共享线路 此处为文件夹的权限。我尝试寻找答案,但找不到我理解的答案。我在虚拟机中有一个装有 Windows 10 操作系统和 Ubuntu 的桌面。使用 virtualbox,我将 Windows 主机上的两个文件夹与 Ubuntu 虚拟机共享。我可以使用 Ubuntu 虚拟机查看/创建/删除共享文件夹中的文件和文件夹。
我决定尝试学习一些有关文件共享的知识。我在 Ubuntu 中创建了一个 Samba 共享,用于我的 Windows 操作系统。我可以从 Windows 查看和创建文件夹到我的 Ubuntu Samba 共享中,但无法从 Windows 中删除它们。我可以通过 ssh 进入并从 Windows 中删除我创建的文件夹。我可以在 Ubuntu 中删除它们,但无法从 Windows 文件资源管理器中删除它们。
我创建了 Samba 共享,因为我想让家里的其他人也能观看我的电影收藏,而不需要他们安装 Plex 或类似的东西。这样,我就可以使用笔记本电脑上的 VLC 应用观看电影。我还想学习如何进行网络共享等。
为什么我可以从 Windows 命令行删除 Samba 共享上的文件夹,但不能从文件资源管理器删除?
答案1
首先欢迎来到 AskUbuntu。
你正在与 Linux 权限作斗争。
默认情况下,在 samba 共享中您可以从客户端创建文件,但无权删除它们。
当您从 samba 共享中的客户端(即 Windows)创建文件时,它是使用掩码创建的0644
,但客户端不是目录的所有者,因此您无法删除它。
首先,user
在这里创建一个特定的sambashare
,但您可以自定义它。
sudo adduser --system sambashare
创建挂载点
sudo mkdir /mnt/MyStuff
更改共享目录的所有者
sudo chown -R sambashare:sambashare /mnt/MyStuff
更改目录权限为755
sudo chmod 755 /mnt/MyStuff
然后简单强制 Samba 使用用户sambashare
[MyStuff]
path = /mnt/MyStuff
writeable = yes
browseable = yes
read only = no
public = yes
create mask = 2755
directory mask = 2755
force user = sambashare
然后重启samba
sudo systemctl restart smbd
找到uid
并gid
创建用户使用
cat /etc/passwd | grep sambashare
给出sambashare:x:122:65534::/home/sambashare:/usr/sbin/nologin
cat /etc/group | grep sambashare
给出sambashare:x:122:cube
根据输出uid
并gid
122
编辑以使用正确/etc/fstab
的方式添加挂载点的条目uig
gid
MyStuff /mnt/MyStuff vboxsf uid=122,gid=122,umask=0022 0 0
注意这MyStuff
是您在 virtualbox 下创建共享目录时提供的名称。
现在添加模块vboxsf
以/etc/modules
强制在启动时加载模块。
在VirtualBox
应用程序中删除该选项automount
。
然后重新启动。现在您应该能够从 Windows 创建/删除共享目录中的文件。