如何在 Linux 上安装Samba

系统 Linux
Linux 开发,通常是在 Windows 上编码,再把文件传到 Linux 上进行编译,当项目稍微有点儿规模或者多个人同时开发时,整个过程会变得非常的繁琐了,如果有一种工具能实现,编写的代码实时的同步到 Linux 上就好了。

[[428320]]

本文转载自微信公众号「Linux开发那些事儿」,作者LinuxThings。转载本文请联系Linux开发那些事儿公众号。

Linux 开发,通常是在 Windows 上编码,再把文件传到 Linux 上进行编译,当项目稍微有点儿规模或者多个人同时开发时,整个过程会变得非常的繁琐了,如果有一种工具能实现,编写的代码实时的同步到 Linux 上就好了。

samba 就能很好的解决这个问题,它 是一个免费的开源软件,由澳大利亚国立大学的一名学生开发的,它允许在 Windows 和 Linux 系统之间简单轻松地共享文件。它能为选定的 Linux 目录(包括所有子目录)创建网络共享,使得 Windows 用户可以像访问普通 Windows 下的文件夹那样来通过网络访问这些 Linux 目录,下面将详细介绍 samba 服务器的安装以及配置过程

安装

使用下面的命令进行安装

  1. yum install samba samba-common samba-client 

安装完成之后, 执行 smbd -V 命令,输出 samba 服务器的版本信息,表示安装成功

  1. [root@cghost21 ~]# smbd -V 
  2. Version 4.10.16 

服务器配置

samba 服务器安装完成之后,需要调整服务器的一些配置参数,配置文件默认位于 /etc/samba/smb.conf,在修改之前,可以先把原始的配置文件备份下

  1. [root@cghost21 ~]# cp /etc/samba/smb.conf  /etc/samba/smb.conf.bak 

如果 smb.conf 的一行以 "#" 或 ";" 开头, 表示这一行是注释

  • 新建 Linux 用户

添加新用户,并设置密码

  1. [root@cghost21 ~]# useradd smbusr1 -s /sbin/nologin 
  2. [root@cghost21 ~]# passwd smbusr1 

注意:此处添加的用户 smbusr1 只用作 创建 samba 登录用户的用途,因为 新建 samba 用户的时候,需要保证相同名字的 Linux 用户是存在并且设置了密码,否则,新建 samba 用户时会失败

由于用户 smbusr1 只是用于新建 samba 用户,所以,新建时加上了 -s /sbin/nologin ,表示禁止此用户登录 Linux 系统,这么做也是为了安全性考虑

  • 新建 samba 用户

执行下面的命令,新建 samba 用户 smbusr1 ,并设置密码

  1. [root@cghost21 home]# smbpasswd -a smbusr1 
  2. New SMB password
  3. Retype new SMB password
  4. Added user smbusr1. 
  • 添加用户共享目录

为 samba 用户 smbusr1 新建共享目录,并赋予目录权限

  1. [root@cghost21 home]# mkdir -p /samba/smbusr1 
  2.  
  3. [root@cghost21 home]# chown -R smbusr1:smbusr1 /samba/smbusr1 
  • 配置 smb.conf

samba 服务器可配置项非常多,这里只介绍一些常用的配置项,更多的配置项请参考 smb.conf.org

  1. #全局配置 
  2. [global
  3.         # samba 工作组 
  4.         workgroup = mygroup 
  5.          
  6.         # 服务器的说明字符串,%V 表示服务器的版本号 
  7.         server string=smb server %V 
  8.          
  9.         # 安全模式,user 表示需要身份验证 
  10.         security = user 
  11.          
  12.         # samba 服务器名, 最长15个字符 
  13.         netbios name = myserver 
  14.          
  15.         #拒绝非法用户登录 
  16.         map to guest = bad user 
  17.          
  18.         # samba 服务器日志 
  19.         log file = /var/log/samba/smblog 
  20.          
  21.         # 服务器日志最大大小,单位:KB 
  22.         # 服务器 会定期检查大小,如果超过,它将重命名文件,添加 .old 扩展名 
  23.         # 为 0 表示没有限制 
  24.         max log size = 10000 
  25.          
  26.          
  27. [smbusr1] 
  28.         # smbusr1 用户的共享的目录 
  29.         path=/samba/smbusr1 
  30.         # 禁止匿名访问 
  31.         public=no 
  32.         # 是否可写 
  33.         writable=yes 
  34.         # 目录可写的用户组 
  35.         write list=@smbusr1 
  36.         # 访问目录的用户 
  37.         valid users=smbusr1 
  38.          

修改完配置后,执行 testparm 命令来检查 smb.conf 的语法错误

  1. [root@cghost21 home]# testparm 
  2. Load smb config files from /etc/samba/smb.conf 
  3. Loaded services file OK. 
  4. Server role: ROLE_STANDALONE 
  5.  
  6. Press enter to see a dump of your service definitions 

从上面的结果可以看出,smb.conf 没有语法错误

  • 设置防火墙

samba 服务器启动会后,默认会监听 139 和 445 端口,可以通过下面的命令查看 samba 服务器侦听的端口

  1. [root@cghost21 home]# netstat -an4p | grep smbd | grep LISTEN 
  2. tcp     0    0 0.0.0.0:139     0.0.0.0:*      LISTEN      23370/smbd           
  3. tcp     0    0 0.0.0.0:445     0.0.0.0:*      LISTEN      23370/smbd 

如果 samba 服务器所在的机器上开启了防火墙服务,则需要开放 139 和 445 端口,然后重启防火墙服务

  1. [root@localhost ~]# firewall-cmd --zone=public --add-port=139/tcp --permanent 
  2. success 
  3. [root@localhost ~]# firewall-cmd --zone=public --add-port=445/tcp --permanent 
  4. success 
  5. [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 还非常适合个人学习以及小的开发团队之间的协作

 

责任编辑:武晓燕 来源: Linux开发那些事儿
相关推荐

2019-11-26 09:20:47

LinuxJava

2020-04-21 14:21:31

LinuxPython

2021-11-28 06:33:24

Discord消息收发应用 Linux

2012-05-21 10:31:06

LinuxVMware Tool

2021-09-11 15:41:55

UbuntuDropbox云服务

2021-08-18 11:19:25

FedoraLinuxJava

2017-03-29 16:18:11

LinuxUbuntuRedmine

2021-07-12 14:47:16

UbuntuZlib代码

2013-03-06 13:27:03

HadoopLinux

2019-08-13 15:39:27

Linux应用程序

2019-08-14 09:42:06

LinuxElasticsearKibana

2015-11-30 15:05:01

Linux浏览器Docker

2018-10-23 09:45:05

Arch LinuxGRUB命令

2017-12-11 10:24:29

LinuxGoogleChrome 63

2018-07-19 09:20:47

LinuxArchLinuxRPM包

2020-12-28 06:44:45

FedoraLinux RPM文件

2017-06-05 13:02:55

CentOS 7iRedMailSamba4 AD

2018-03-28 08:30:01

Linux仓库应用程序

2014-06-23 10:09:20

MacBook ProLinux

2022-11-09 07:40:18

点赞
收藏

51CTO技术栈公众号