我对 samba 有以下配置:
[global]
workgroup = WORKGROUP
netbios name = z
log level = 0 vfs:0
syslog = 0
max log size = 0
load printers = No
printcap name = /dev/null
disable spoolss = Yes
preload = share
default service = share
guest ok = Yes
security = user
map to guest = Bad User
guest account = ibm86
以及以下分享:
[data]
force group = ibm86
path = /data
writeable = yes
guest ok = yes
browseable = yes
/data
我正在尝试共享网络中的目录以供所有人写入。
现在,我可以读取磁盘上的所有文件,但无法写入任何内容。Windows 提示“您需要权限才能执行此操作”。
作为映射用户,我可以毫无问题地读取/写入该目录:
[ibm86@z ~]$ stat /data
File: ‘/data’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 900h/2304d Inode: 2 Links: 7
Access: (0755/drwxr-xr-x) Uid: ( 1000/ ibm86) Gid: ( 1000/ ibm86)
Access: 2015-04-03 05:09:28.631608867 +0300
Modify: 2015-04-03 05:03:58.843604604 +0300
Change: 2015-04-03 05:09:22.783608792 +0300
Birth: -
[ibm86@z ~]$ cd /data
[ibm86@z /data]$ touch a
[ibm86@z /data]$ ls -l a
-rw-rw-r-- 1 ibm86 ibm86 0 Apr 3 05:23 a
那么,发生了什么?我做错了什么?这曾经完美地工作,security = share
但自从 Ubuntu 从 Samba 2.x 升级以来,它根本不起作用。我目前在Version 4.1.6-Ubuntu
。
答案1
您还需要添加force user = someusername
。由于您当前的配置是 unix 文件权限,因此不允许一个用户更改其他用户的文件。如果您希望不同的用户能够在共享中的所有文件上进行写入,则需要强制用户和组,以便共享中的所有文件都归同一用户所有,然后该用户将具有写入权限。我通常会这样做(用户和组名称取决于您的发行版,但通常是 nobody / noone / nogroup / nouser 之一):
force user = nobody
force group = nogroup