当然也可以用终端命令安装samba:sudo apt-get install samba
。
'net usershare' returned error 255: net usershare add: cannot share path /media/disk6/ShareFiles as we are restricted to only sharing directories we own. Ask the administrator to add the line "usershare owner only = false" to the [global] section of the smb.conf to allow this.
根据提示我们需要配置一下samba的配置文件:
sudo gedit /etc/samba/smb.conf
在配置文件中找到usershare allow guests = yes
,在后面一行添加 usershare owner only = false
,设置后退出或重启ubuntu账户之后,局域网中的windows 电脑即可访问该共享文件。
如果需要局域网用户可以写入或删除共享文件夹中的文件或目录,则还要勾选Allow others to create and delete files in this folder
。勾选后点击Create Share后会出现如下提示:
Nautilus needs to add some permissions to your folder "ShareFiles" in order to share it。 The folder "ShareFiles" needs the following extra permissions for sharing to work: - write permission by others Do you want Nautilus to add these permissions to the folder automatically?http://farlee.info/
也就是该文件设置为允许局域网用户创建和删除共享文件夹中的文件的话,需要该目录有other用户的777创建删除权限。点击Add the permissions automatically
一般情况下可以自动修改权限并成功实现局域网匿名用户对共享文件的读写。
如果需要共享的文件是ubuntu当前用户没有权限执行权限修改操作的文件或目录,比如root属主的只读文件,或者ubuntu 双系统挂载windows分区下的文件。那么在点击Add the permissions automatically
会出现错误提示:
You do not have permission to create a usershare, details: permissions deny
比如我可以设置共享ubuntu 用户home目录下的文件的读写共享权限,但是在设置ubuntu 挂载windows分区下的文件时就遇到了这个问题。原因在于挂载分区的权限问题,即使是切换到root账户更改文件的创建和删除权限,虽然可以设置create and delete,但还是无法实现局域网用户对该挂载分区下的共享文件的创建和删除功能。
这时首先想到的没有正确配置Samba的配置文件,比如设置workgroup = WORKGROUP、security = user、comment = 、path = 、browseable = no、create mask = 0600、directory mask = 0700、read only = yes、guest ok = yes、http://farlee.info、share modes = no等等。但是为什么没有更改samba配置文件的默认选项时,Ubuntu系统下的非windows 挂载分区的文件可以在共享文件夹中创建和删除?
最后参考了关于挂载windows分区的权限的问题这篇文章的介绍,才明白原因不在于samba配置文件smba.conf,而在于设置了ubuntu开机自动挂载windows分区,因为自动挂载设置了umask = 002这个用户权限设置。修改挂载文件fstab,sudo gedit /etc/fstab
:
/dev/sda5 /media/disk5 vfat user,auto,umask=002,gid=1000,utf8 0 0
讲umask=002改为umask=000即可。
修改完成之后记得要重启ubuntu 系统,文件共享设置才能生效:sudo reboot
。
编辑samba配置文件设置必须以用户方式访问共享文件:sudo vi /etc/samba/smb.conf
,将; security = user
改为:
security = user username map = /etc/samba/smbusers
同时设置共享文件路径,在最后加上(设置共享文件夹路径path,网络登录用户名valid users):
[ShareFiles] comment = Shared Folder require password path = /home/shareuser/share public = yes writable = yes valid users = shareuser create mask = 0700 directory mask = 0700 force user = nobody force group = nogroup available = yes browseable = yes
添加该用户并设置samba密码:
sudo useradd shareuser 添加用户
sudo smbpasswd -a shareuser 设置访问共享文件密码/修改网络登录访问密码
sudo gedit /etc/samba/smbusers 加入 shareuser = "network username"
sudo smbpasswd -x shareuser 删除网络共享用户
设置完毕重启。
设置完毕可以在自己的电脑上测试一下其他局域网电脑是否确实具有访问,和创建删除共享文件的权限。
打开文件浏览器,使用Ctrl+l切换出地址栏,在地址栏输入smb://192.168.1.xxx/sharefiles/,即可在自己电脑上测试是否可以在共享目录中写入文件。使用firefox浏览器输入smb://192.168.1.xxx/可测试是否可访问(browserable)。