可以读取但无法写入 Samba 共享

可以读取但无法写入 Samba 共享

我正在尝试设置仅供特定用户访问的 Samba 共享。我希望该用户对共享中的所有文件具有读/写访问权限。

下面的 smb.conf 文件将允许我通过一个用户“patrick”访问共享,但我无法获得写访问权限 - 我无法通过 Windows 修改或删除已安装共享上的文件。用户确实为下面的目录设置了适当的权限。

我如何启用读/写访问权限?我不是想要将目录/文件权限更改为 0777,就像许多其他论坛帖子建议的那样。

目录权限:

drwxr-xr-x   6 patrick patrick  4096 Jul  3  2015 ./
drwxr-xr-x   3 root    root     4096 Jul  1  2015 ../
drwxrwxr-x+ 15 patrick patrick 65536 Jan 22 00:01 music/

smb.conf 文件:

[global]
   workgroup = WORKGROUP
        server string = %h server (Samba, Ubuntu)

#   wins support = no
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   passdb backend = tdbsam
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = never

   usershare allow guests = no

[Music]
   comment = Music on Ceres
   path = /mnt/largemarge/music
   valid users = patrick
   browseable = yes
   guest ok = no
   read only = no
   create mask = 0775
   directory mask = 0755
   force user = patrick

答案1

经过几个小时的搜索,我发现共享名称和共享目录不能是相同的(并且不区分大小写)。请参阅此帖子服务器故障

因此,如果我将 smb.conf 中的共享名称从:

[Music]

[Tunes]

我可以读取和写入共享。无需对我的 smb.conf 进行其他更改,也无需 chmod 0777。

答案2

我还记录了共享名称和目录名称不能相同,否则尽管有权限,共享仍将可见且只读。当将共享名称修改为不同于目录(或磁盘)名称时,它将变为可写,前提是它和用户具有正确的权限。

我发现在 Ubuntu 中安装的 NTFS 磁盘和文件夹之前使用相同的共享名称在 NTFS 下共享时也存在此问题。Win 和 Linux 共享工具在创建时都默认使用目录或磁盘名称作为其共享名称,因此默认情况下冲突是内置的。只需在 Linux 共享名称中添加一个字符即可使其可写。

如果磁盘或目录不是 NTFS 或虽然是 NTFS 但从未共享过,则情况可能正确也可能不正确。在 Ubuntu 中安装时,似乎会保留以前使用的 NTFS 共享名称,而 Linux 通过将共享设为只读来处理冲突。

在 Ubuntu 中,只需将名为 \My Music 的 NTFS 目录共享重命名为 \My Muzak 即可使该目录可写。

答案3

我遇到了同样的问题,并通过 Windows 重启解决了该问题。我不需要使用其他名称。

共享定义下 smb.conf 的更改:

read only = no
create mask = 0775
directory mask = 0775 

在最后smb.conf,我补充道

[sambashare]
comment = Samba on Ubuntu
path = /home/fred/sambashare
read only = no
browsable = yes

以上内容仅用于记录我所做的所有更改。当我尝试写入 sambashare 时,共享定义部分不存在。这是我添加的部分,以使一切正常运行。

现在,在更改了共享定义下的 3 个指令后,我重新启动了 smb 服务,然后从 Win10 进行测试。失败了。

接下来我重新启动了 Linux 服务器并进行了测试。仍然失败。重新启动 Win10 并成功。

因此,如果其他人遇到此问题并尝试我发布的方法,我只需重新启动 smb 服务,然后重新启动 Windows(照常)。可能无需重新启动 linux 服务器。哦,在尝试写入 sambashare 之前,我关闭了所有文件资源管理器 Windows,并为每个测试使用了一个新的。

希望这对你有用。

答案4

在终端中输入以下命令授予我从 Ubuntu 20.04 桌面客户端对 Samba 文件共享的写权限:

sudo mount -t cifs //SMB_IP_Address/SMB_Sharename /SMB_MountPoint -o username=your_smb_username,uid=1000

如果您配置了多个客户端,您的 uid 可能会有所不同。

相关内容