Linux开发通常是在Windows上编码,然后文件转移到Linux上进行编译。当项目有点大或者多人同时开发的时候,整个过程会变得非常繁琐。如果有工具可以实现,把写好的代码实时同步到L
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 -VVersion 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 smbusr1New 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]# testparmLoad smb config files from /etc/samba/smb.confLoaded services file OK.Server role: ROLE_STANDALONEPress enter to see a dump of your service definitions
从上面的结果可以看出,smb.conf没有语法错误。
设置防火墙
在samba服务器开始会议之后,默认情况下,它将监听端口139和445。您可以通过以下命令检查samba服务器监听的端口
[root@cghost21 home]# netstat -an4p | grep smbd | grep LISTENtcp 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 --permanentsuccess[root@localhost ~]# firewall-cmd --zone=public --add-port=445/tcp --permanentsuccess[root@localhost ~]# systemctl restart firewalld启动 samba 服务器
经过以上步骤,最后启动samba服务器。
[root@cghost21 home]# systemctl start smb
客户端配置Samba客户端的配置也非常简单。它将网络驱动器从Linux映射到Windows。看起来Windows中多了一个磁盘,但这个磁盘是对应网络中Linux机器中的一个目录。将数据写入这个磁盘相当于将数据写入Linux目录。
1.打开我的电脑,点击映射网络驱动器,然后输入Linux上共享文件夹的地址,点击完成,如下图所示。
2.输入之前的samba用户名和密码(samba用户名和密码是在之前的步骤中添加的),点击OK,如下图所示。
3.samba服务器成功验证用户名和密码后,Windows会进入共享文件夹,看起来就像Windows上硬盘的盘符。请看下图。
至此,Windows对Linux机器上共享目录的映射完成。接下来可以通过Windows操作将数据写入网络驱动器,写入的数据会实时同步到Linux机器的共享目录/samba/smbusr1。
常见问题在配置samba服务器和客户端的过程中,或多或少都会出现一些问题。以下是一些常见的错误。
错误1
检查smb.conf中是否没有配置相应用户的访问配置,或者相应的samba用户是否不存在。
错误2
Windows在同一台远程机器上本地映射了一个网络驱动器。您需要断开前一个,然后才能映射新的。
错误3
需要修改共享目录/samba/smbusr2的权限。
总结Linux服务器通常没有图形界面,所以不如Windows简单直观。samba server实现了将Linux命令行转换为Windows图形界面的操作,极大地方便了Linux的开发,提高了开发效率。借助版本管理工具SVN,samba也非常适合个人学习和小型开发团队之间的协作。