问题描述
我想创建一个具有完全读写访问权限的公用文件夹。我的配置存在的问题是Windows用户作为来宾系统没有问题(他们可以读写和删除),而我的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”组已经读写,而其他所有人均为只读。
我究竟做错了什么?
最佳思路
原来,我需要向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
次佳思路
CIFS通常没有用户和组的任何概念,因此安装cifs共享将默认将用户和组显示为’nobody’:
drwxdrwxdrwx. 3 nobody nobody 0 Sep 29 09:00 .
drwxdrwxdrwx. 9 nobody nobody 0 Sep 29 09:00 ..
由于您不是’nobody’,因此除非您使用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假装您是所有者,并赋予您不受限制的访问权限。
第三种思路
你快到了通过使用以下方式打开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
保存并输入以完成交易。
现在通过以下方式重新启动:
sudo reboot
并且您应该完全控制Linux设备上的网络共享!