我想创建一个具有完全 RW 访问权限的公共文件夹。我的配置的问题是 Windows 用户作为访客没有任何问题(他们可以 RW 和删除),但我的 Ubuntu 客户端却无法执行相同的操作。我们只能写入和读取,但不能创建或删除。
这是我的服务器的 smb.conf:
[global]
workgroup = WORKGROUP
netbios name = FILESERVER
server string = TurnKey FileServer
os level = 20
security = user
map to guest = Bad Password
passdb backend = tdbsam
null passwords = yes
admin users = root
encrypt passwords = true
obey pam restrictions = yes
pam password change = 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* .
add user script = /usr/sbin/useradd -m '%u' -g users -G users
delete user script = /usr/sbin/userdel -r '%u'
add group script = /usr/sbin/groupadd '%g'
delete group script = /usr/sbin/groupdel '%g'
add user to group script = /usr/sbin/usermod -G '%g' '%u'
guest account = nobody
syslog = 0
log file = /var/log/samba/samba.log
max log size = 1000
wins support = yes
dns proxy = no
socket options = TCP_NODELAY
panic action = /usr/share/samba/panic-action %d
[homes]
comment = Home Directory
browseable = no
read only = no
valid users = %S
[storage]
create mask = 0777
directory mask = 0777
browseable = yes
comment = Public Share
writeable = yes
public = yes
path = /srv/storage
以下 FSTAB 条目没有产生对共享的完全 R/W 访问权限。
//192.168.0.5/storage /media/myname/TK-Public/ cifs rw 0 0
这也不起作用
//192.168.0.5/storage /media/myname/TK-Public/ cifs rw,guest,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0
在 Nemo/Nautilus 中使用以下位置(未安装共享)可以工作:
smb://192.168.0.5/storage/
额外信息。我刚刚注意到,如果我在挂载后将文件复制到共享,我的 Ubuntu 客户端会立即使“nobody”成为所有者,并且“no group”组具有读写权限,而其他所有人都为只读。
我究竟做错了什么?
答案1
事实证明,我需要在 FSTAB 中的挂载行中添加本地(客户端)UID 才能实现此功能。我通过纯粹的蛮力才得出这个结论:
//192.168.0.5/storage /media/myname/TK-Public/ cifs guest,uid=myuser,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0
答案2
您快完成了。使用以下命令打开 FSTAB:
sudo nano /etc/fstab
在最后一行(或最后一行之一)放置:
//192.168.0.5/storage /media/myname/TK-Public/ cifs username=YOURUSERNAME,password=YOURPASSWORD,iocharset=utf8,file_mode=0777,dir_mode=0777
*** (这是一行很长的语句)
Ctrl-X关闭,Y保存并按 Enter 键完成交易。
现在重新启动:
sudo reboot
并且您应该完全控制您的 Linux 设备上的网络共享!
答案3
CIFS 通常没有用户和组的概念,因此挂载 cifs 共享将默认显示用户和组为“nobody”:
drwxdrwxdrwx. 3 nobody nobody 0 Sep 29 09:00 .
drwxdrwxdrwx. 9 nobody nobody 0 Sep 29 09:00 ..
由于您不是“无名小卒”,除非您使用 sudo,否则 Linux 不会允许您写入任何没有 0777 权限的内容。要解决此问题,请将 uid=mylogin,gid=mygroup 添加到 fstab,这样共享就会看起来像是您自己的目录:
drwxdrwxdrwx. 3 mylogin mygroup 0 Sep 29 09:00 .
drwxdrwxdrwx. 9 mylogin mygroup 0 Sep 29 09:00 ..
现在您拥有完全控制权,无需 sudo。
这实际上并没有改变服务器上的任何内容,因为服务器没有强制执行任何操作。它告诉 Linux 假装您是所有者并授予您不受限制的访问权限。
答案4
我遇到了这个问题,这是因为共享的用户不拥有它。我用“sudo chown {username}:{groupname} /{share}/{path}”修复了这个问题,之后我可以移动和删除文件。