我正在尝试设置仅供特定用户访问的 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 可能会有所不同。