Linux 开发, 通常是在 Windows 上编码, 再把文件传到 Linux 上进行编译, 当项目稍微有点儿规模或者多个人同时开发时, 整个过程会变得非常的繁琐了, 如果有一种工具能实现, 编写的代码实时的同步到 Linux 上就好了.
samba 就能很好的解决这个问题, 它 是一个免费的开源软件, 由澳大利亚国立大学的一名学生开发的, 它允许在 Windows 和 Linux 系统之间简单轻松地共享文件. 它能为选定的 Linux 目录 (包括所有子目录) 创建网络共享, 使得 Windows 用户可以像访问普通 Windows 下的文件夹那样来通过网络访问这些 Linux 目录, 下面将详细介绍 samba 服务器的安装以及配置过程
安装
使用下面的命令进行安装
yum install samba samba-common samba-client
安装完成之后, 执行 smbd -V 命令, 输出 samba 服务器的版本信息, 表示安装成功
- [root@cghost21 ~]# smbd -V
- Version 4.10.16
服务器配置
samba 服务器安装完成之后, 需要调整服务器的一些配置参数, 配置文件默认位于 /etc/samba/smb.conf, 在修改之前, 可以先把原始的配置文件备份下
[root@cghost21 ~]# cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
如果 smb.conf 的一行以 "#" 或 ";" 开头, 表示这一行是注释
新建 Linux 用户
添加新用户, 并设置密码
- [root@cghost21 ~]# useradd smbusr1 -s /sbin/nologin
- [root@cghost21 ~]# passwd smbusr1
注意: 此处添加的用户 smbusr1 只用作 创建 samba 登录用户的用途, 因为 新建 samba 用户的时候, 需要保证相同名字的 Linux 用户是存在并且设置了密码, 否则, 新建 samba 用户时会失败
由于用户 smbusr1 只是用于新建 samba 用户, 所以, 新建时加上了 -s /sbin/nologin , 表示禁止此用户登录 Linux 系统, 这么做也是为了安全性考虑
新建 samba 用户
执行下面的命令, 新建 samba 用户 smbusr1 , 并设置密码
- [root@cghost21 home]# smbpasswd -a smbusr1
- New SMB password:
- Retype new SMB password:
- Added user smbusr1.
添加用户共享目录
为 samba 用户 smbusr1 新建共享目录, 并赋予目录权限
- [root@cghost21 home]# mkdir -p /samba/smbusr1
- [root@cghost21 home]# chown -R smbusr1:smbusr1 /samba/smbusr1
配置 smb.conf
samba 服务器可配置项非常多, 这里只介绍一些常用的配置项, 更多的配置项请参考 smb.conf.org
- # 全局配置
- [global]
- # samba 工作组
- workgroup = mygroup
- # 服务器的说明字符串,%V 表示服务器的版本号
- server string=smb server %V
- # 安全模式, user 表示需要身份验证
- security = user
- # samba 服务器名, 最长 15 个字符
- netbios name = myserver
- #拒绝非法用户登录
- map to guest = bad user
- # samba 服务器日志
- log file = /var/log/samba/smblog
- # 服务器日志最大大小, 单位: KB
- # 服务器 会定期检查大小, 如果超过, 它将重命名文件, 添加 .old 扩展名
- # 为 0 表示没有限制
- max log size = 10000
- [smbusr1]
- # smbusr1 用户的共享的目录
- path=/samba/smbusr1
- # 禁止匿名访问
- public=no
- # 是否可写
- writable=yes
- # 目录可写的用户组
- write list=@smbusr1
- # 访问目录的用户
- valid users=smbusr1
修改完配置后, 执行 testparm 命令来检查 smb.conf 的语法错误
- [root@cghost21 home]# testparm
- Load smb config files from /etc/samba/smb.conf
- Loaded services file OK.
- Server role: ROLE_STANDALONE
- Press enter to see a dump of your service definitions
从上面的结果可以看出, smb.conf 没有语法错误
设置防火墙
samba 服务器启动会后, 默认会监听 139 和 445 端口, 可以通过下面的命令查看 samba 服务器侦听的端口
- [root@cghost21 home]# netstat -an4p | grep smbd | grep LISTEN
- tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 23370/smbd
- tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 23370/smbd
如果 samba 服务器所在的机器上开启了防火墙服务, 则需要开放 139 和 445 端口, 然后重启防火墙服务
- [root@localhost ~]# firewall-cmd --zone=public --add-port=139/tcp --permanent
- success
- [root@localhost ~]# firewall-cmd --zone=public --add-port=445/tcp --permanent
- success
- [root@localhost ~]# systemctl restart firewalld
启动 samba 服务器
经过上面的步骤, 最后启动 samba 服务器
[root@cghost21 home]# systemctl start smb
客户端配置
samba 客户端配置起来也很简单, 从 Linux 映射一个网络驱动器 到 Windows, 外表看起来 Windows 中多了一块磁盘, 只不过这块磁盘是对应网络中 Linux 机器中的一个目录, 往这块磁盘中写入数据, 相当于往 Linux 目录中写入数据
1, 打开我的电脑, 点击映射网络驱动器, 然后输入 Linux 上共享文件夹的地址, 点击完成, 具体如下图所示
2, 输入前面 samba 用户名和密码 ( 前面的步骤有添加过 samba 用户名和密码 ), 点击确定, 具体如下图
3,samba 服务器验证用户名和密码成功之后, Windows 会进入共享文件夹, 它在 Windows 上看起来像一个硬盘的盘符一样, 请看下图
至此, Windows 映射 Linux 机器上共享目录就完成了, 接下来, 就能以 Windows 操作的方式向网络驱动器中写入数据了, 所写入的数据会实时同步到 Linux 机器的共享目录 /samba/smbusr1 中
常见问题
在配置 samba 服务器以及客户端的过程中, 或多或少会出现一些问题, 下面列出了几种常见的错误
错误 1
检查下 smb.conf 中是否没有配置对应用户的访问配置, 或者是对应的 samba 用户不存在
错误 2
Windows 本地在同一个远程机器上已经映射了网络驱动器, 需要先断开之前的, 才能映射新的
错误 3
共享目录权限设置问题, 需修改共享目录 /samba/smbusr2 的权限
小结
Linux 服务器通常没有图形界面, 使用起来不如 Windows 简单直观, samba 服务器实现了 将 Linux 命令行转化成 Windows 图形界面的操作, 大大方便了 Linux 的开发, 提高了开发效率, 搭配上版本管理工具 SVN ,samba 还非常适合个人学习以及小的开发团队之间的协作
来源: http://os.51cto.com/art/202110/685368.htm