月度归档:2017年05月

在LEDE上配置Samba文件共享服务

免费开源的Samba协议可以在局域网(LAN)中为Windows、Linux和MacOS提供文件和打印机共享服务。
配置成功的关键在于Samba用户、共享文件目录权限的设置。

背景

在折腾703N扩展LEDE到U盘的时候,把U盘分成了三个区,第三个区用来作为文件存储区,并被挂载到LEDE的/mnt/sda6,sda6内有一个共享文件夹share,其目录结构是:

/
|--mnt
|  |--sda6
|     |--share

希望达到的文件共享方式是:

匿名用户guest(nobody)只能访问文件目录(/mnt/sda6/share),对其内的文件目录及文件具有添加、修改、删除的权限,方便多人共享;
管理员账户root通过密码方式登录,管理整个存储分区(/mnt/sda6),对其内的所有文件目录和文件都具备添加、修改、删除的权限,方便管理。

LEDE 17.01.2 正式版固件上,记录实现上述共享方式的步骤如下:

1 安装samba

#更新软件包列表
opkg update #直接安装中文语言包,会自动安装samba36-server(20170529版本:3.6.25-6)、luci-app-samba opkg install luci-i18n-samba-zh-cn

2 samba全局设置

依次点击LEDE的luci中的“服务” > “网络共享(samba)”,打开Samba的设置界面,点击“编辑模板”,并按如下修改:

...
unix charset = UTF-8
...
#invalid users = root
...
map to guest = Bad User
...
null passwords = yes
...

作用分别是:开启UTF-8国际字符集;允许root用户登录;当用户名输入错误时,则以匿名用户(nobody)登陆;允许空密码。

3 Samba文件共享设置

3.1 共享级访问(Share level access)方式

共享级访问文件共享方式已被用户级访问(User level access)方式通过如下代码取代:

security = user
map to guest = Bad User

这里就不细说了。

3.2 用户级访问(User level access)方式

3.2.1 在LEDE命令行中,为root用户设置samba登录密码

smbpasswd -a root New SMB password: Retype SMB password:

3.2.2 在LEDE命令行中,更改 /mnt/sda6/share目录的权限为777,否则匿名用户无法对其下内容进行添加、修改、删除操作。

chmod 777 /mnt/sda6/share

3.2.3 依次打开LEDE的luci中“服务” > “网络共享 > “共享目录”标签,按下图修改,并点击“保存&应用”。

注:
名称”下的share、root,为共享名称,即用户通过samba客户端访问时见到的主目录名,可设置为自己喜欢的名字;
只有当设置root用户新建文件、目录的权限为0777时,其在/mnt/sda6/share内添加的新文件或新目录,匿名用户才能对其进行修改、删除,否则因为权限问题无法实现我们目的的第一条;
如果完全是自用时,保留root那一行就可以了,同时建议将新建目录或文件的权限设为0755。
至此,设置结束,可以通过不同平台的客户端尝试访问。

4 windows 10中访问Samba文件共享服务器

已经设置好Samba文件共享的LEDE路由器IP地址是:192.168.2.1;windows 10具体版本:版本1703(OS内部版本 15063.296)。
在windows 10的文件管理器中,输入Samba服务器地址:file:\\192.168.2.1进行登陆,会有两种情况:

4.1 windows 10以微软账户登陆(username@outlook.com)时:
会先跳出登陆界面:
4.1.1 输入用户名root,和设置好的密码,会进入目录:/usr/local/。
4.1.2 输入除root外的其他任何字符,和任意密码或空密码(null passwords),会匿名(nobody)登陆,进入/usr/local/src。

4.2 windows 10以本地用户登录时:
会先看到我们设置好的两个共享文件目录:root和share:
4.2.1 双击share目录时,直接以匿名用户(nobody)进入目录:/usr/local/src。
4.2.2.1 双击root目录时,会弹出密码登陆选项,输入用户名root及其密码,会进入目录:/usr/local/。
4.2.2.2 双击root目录时,会弹出密码登陆选项,输入root以外的任何字符和密码时,禁止登陆。

较低版本(具体不详)的windows 10 (包括windows 8)可能会碰到禁止登陆的问题,建议及时更新至最新版的windows 10。低版本可通过修改注册表解决首先确认您的权限设置没有问题。然后尝试如下方法 打开注册表 Win+R输入regedit, 定位到如下位置 HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters 创建一个 DWORD 项, 命名为 ‘AllowInsecureGuestAuth’ , 值设置为“1”. 最后重启计算机再次访问查看结果。

5 清除windows访问Samba的访问记录

在windows中访问Samba服务器后,windows会存储访问记录,比如密码。当我们想清除密码,重新输入时,步骤如下:
5.1 获取访问记录

#在windows的命令行(cmd)中运行net use,可见访问Samba服务器的记录:
C:\Users\User>net use会记录新的网络连接。 
状态       本地        远程                      网络

-------------------------------------------------------------------------------
OK                     \\192.168.2.1\IPC$         Microsoft Windows Network
命令成功完成。

5.2 删除访问记录

C:\Users\User>net use \\192.168.2.1\IPC$ /del /y \\192.168.2.1\IPC$ 已经删除。

5.3 尝试重新登陆Samba。