场景需求:
安装了Ubuntu在虚拟机上,但是代码编辑或者其它更多的操作的时候,还是习惯在windows下进行。如果windows下编辑完再上传到服务器,再编译执行,就太繁琐了。一次两次还好说,这编译级别上千次的,每次也需要上传的话,无疑是个人间悲剧。但是有了Samba,犹如雪中送炭啊。
安装
Ubuntu下安装比较简单,执行
# install samba samba-common
即可。当然也可以直接去官网(https://www.samba.org/)下载安装。
配置
1. 新建共享的目录:
# mkdir /home/用户名/share # chmod 777 /home/用户名/share
2. 修改配置smb.conf
修改前最好先备份smb.conf文件。
# cp /etc/samba/smb.conf /etc/samba/smb.conf_bak # vim /etc/samba/smb.conf
2.1 取消 # security = user 的注释,并在后面一行加上 username map = /etc/samba/smbusers
security = user
username map = /etc/samba/smbusers
2.2 在文件的最后面加上以下配置
[Share] comment = Shared Folder with username and password path = /home/用户名/share available = yes browseable = yes public = yes writable = yes valid users = [访问用户名(系统的用户)] create mask = 0700 #远程创建目录、文件默认权限 directory mask = 0700 #远程访问目录权限 force user = nobody #目录所属用户 force group = nogroup #目录所属用户组
我的习惯是指给相应的权限给相应的账号,譬如我本身用的是weiyg账号,我会如下配置,这样的话,windows下新建、修改、访问的权限,都会与我weiyg的权限保持一致。这样比较方便。当然,如果本身整个系统都是一个人维护,那就没啥所谓了。
[share] path = /home/weiyg/share available = yes browseable = yes public = yes writable = yes valid users = weiyg create mask = 0764 directory mask =0777 force user =weiyg force group = weiyg
2.3 修改[global]中的workgroup = WORKGROWP ,并添加编码的设置,如下:
workgroup = WORKGROUP display charset = UTF-8 unix charset = UTF-8 dos charset = cp936
上面编码设置是为了防止中文目录、文件名乱码的情况。
3. 添加访问用户(系统用户)
# useradd [用户名]
对于我的设置来说,其实我是直接用我本身的用户权限访问的。系统本身就存在了weiyg用户了,这时候不需要执行这一步了。如果如上执行的话,过没有设置密码的话,这个用户就只能从远程访问,不能从本机登录。
4. 添加远程访问用户(samba的用户)
# smbpasswd -a [远程访问用户名]
执行以上命令,并设置密码。该用户是windows远程访问的用户,并不是系统的用户。当然为了方便,我自己设置的用户名其实是跟我系统用户一样的。即
# smbpasswd -a weiyg
如果要删除远程访问用户,执行如下命令。
# smbpasswd -x [远程访问用户名]
新建一个/etc/samba/smbusers文件,并保存下面代码:
[访问用户名] = "network username"
我是这么设置的 weiyg = "weiyg" (不知道对不对,反正最后可以访问)
启动
# /etc/init.d/sambd start
# /etc/init.d/sambd restart
windows远程访问
在windows文件管理器上点击【映射网络驱动器】并输入ip地址和用户名密码,即可访问到linux下的文件。
个人理解原理
windows下访问用的其实是Samba的账号,然后windows与Samba交互,本质上对文件的操作,其实还是Samba与linux文件交互的系统用户。所以为了方便,我将远程访问用户和系统用户设置成一样的。
以上个人理解,可能存在出入!