Samba服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Samba服务相关的知识,希望对你有一定的参考价值。

一、共享


Windows 共享:Windows键+R → services.msc →Computer、Server(CIFS协议,实现跨平台)、Workstation(SMB协议,实现共享)

Linux共享:Samba(CIFS、SMB)

二、Samba服务协议


Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。

1.SMB协议(服务消息块):Samba的共享以及客户端的访问

2.CIFS(通用互联网文件系统):提供多系统访问支持,提供跨平台支持

三、Samba提供的程序


smb:实现数据的共享及客户端的访问(TCP:139、445)

nmb:实现Netbios解析的主机名访问支持(Netbios:早期DNS服务,可不启动)(TCP:137、138)

四、Samba访问方式


匿名用户(share)、本地用户(user)、服务器认证(server)、域服务器认证(domain)

五、部署Samba匿名用户访问


需配置静态IP

1.安装Samba共享

rm -rf /etc/yum.repos.d/*           //删除系统中默认自带官方YUM源
vim /etc/yum.repos.d/local.repo

  [local]           //仓库名
  name=local
  baseurl=file:///mnt   //软件包存储位置
  enabled=1     //启动该仓库
  gpgcheck=0        //不检测公钥信息
yum clean all && yum repolist       //清除所有yum缓存,并重新新建缓存
yum -y install samba     //使用yum安装samba软件包

2.编辑配置文件

vim /etc/samba/smb.conf

为了方便配置删除无用的行
:% g/^$/d //删除文本中所有空行

:% g/^;/d //删除文本中以;开头行

:% g/^#/d //删除文本中以#开头行

[global]
    workgroup = WORKGROUP               //指定工作组名称,需修改
    server string = Samba Server Version %v     //服务器描述信息
    log file = /var/log/samba/log.%m        //日志文件的位置
    max log size = 50               //日志文件最大值(默认为KB)
    security = share                //安全级别(share匿名访问、user本地用户认证、server服务器认证、domain域认证)
    passdb backend = tdbsam         //密码认证文件
    disable spoolss = yes           //新增,禁用打印机共享
    load printers = yes             //默认共享打印机
    cups options = raw              //共享打印机的选项
[hehe]                  //共享名
    comment = He is He      //描述信息
    path = /data            //共享目录
    browseable = yes            //是否可浏览
    guest ok = yes          //是否可读
    writable = no           //是否可写
mkdir /data && chmod -R o=rx /data/         //新建文件夹并给予共享目录允许其它用户拥有读取、写入权限

3.启动服务

/etc/init.d/smb restart      //重启smb服务
/etc/init.d/nmb restart     //重启nmb服务(可选)
chkconfig --level 35 smb on     //开机自启smb服务
chkconfig --level 35 nmb on     //开机自启nmb服务(可选)

4.访问Samba共享

Windows系统访问:Windows+R键 --> 运行 --> 服务器IP

Linux系统

(1)安装samba-client软件包

yum -y install samba-client

(2)查看指定IP所有共享内容

smbclient -L 共享IP -U 用户名                //如为匿名访问,用户名为anonymous、密码为空

(3)访问共享IP下的所有内容

smbclient -U 用户名 -P 密码 //共享IP/共享名
  smb: > put 文件                    //将本地文件上传到共享目录
  smb: > get 文件                    //从共享目录下下载指定内容到本地
  smb: > exit

(4)mount命令临时挂载共享到本地目录

mount -o username=用户名,password=密码 //共享IP/共享名 /挂载目录

(5)mount命令永久挂载共享到本地目录

vim /etc/fstab
//共享IP/共享名      /挂载目录       cifs        defaults,username=用户名,password=密码   0 0
mount -a
ls [挂载目录]

六、部署Samba本地用户访问


1.安装Samba共享

yum -y install samba

2.编辑配置文件

useradd -s /sbin/nologin hehe    //新建用户hehe不允许登录系统
pdbedit -a -u hehe          //将系统用户hehe转换为Samba共享用户并设置密码
vim /etc/samba/smb.conf

为了方便配置删除无用的行
:% g/^$/d //删除文本中所有空行
:% g/^;/d //删除文本中以;开头行
:% g/^#/d //删除文本中以#开头行

[global]
    workgroup = WORKGROUP               //指定工作组名称,需修改
    server string = Samba Server Version %v     //服务器描述信息
    log file = /var/log/samba/log.%m        //日志文件的位置
    max log size = 50               //日志文件最大值(默认为KB)
    security = user                 //安全级别为user(使用本地用户认证)
    passdb backend = tdbsam             //密码认证文件
    disable spoolss = yes           //新增,禁用打印机共享
    load printers = yes             //默认共享打印机
    cups options = raw              //共享打印机的选项
[hehe]                  //共享名
    comment = He is He      //描述信息
    path = /data            //共享目录
    browseable = yes            //是否可浏览
    guest ok = yes          //是否可读
    writable = yes          //是否可写
mkdir /data && chmod -R o=rwx /data/        //给予共享目录允许其它用户拥有完全权限

3.启动服务

/etc/init.d/smb restart      //重启smb服务
/etc/init.d/nmb restart     //重启nmb服务(可选)
chkconfig --level 35 smb on     //开机自启smb服务
chkconfig --level 35 nmb on     //开机自启nmb服务(可选)

4.验证

使用hehe用户登录可读取并写入

七、Samba多用户权限控制


1.安装Samba共享

yum -y install samba

2.编辑配置文件

(1)useradd -s /sbin/nologin hehe     //新建用户hehe不允许登录系统
(2)useradd -s /sbin/nologin haha     ////新建用户haha不允许登录系统
(3)pdbedit -a -u hehe           //将系统用户hehe转换为Samba共享用户并设置密码
(4)pdbedit -a -u haha           //将系统用户haha转换为Samba共享用户并设置密码
(5)vim /etc/samba/smb.conf

为了方便配置删除无用的行
:% g/^$/d //删除文本中所有空行
:% g/^;/d //删除文本中以;开头行
:% g/^#/d //删除文本中以#开头行

[global]
    workgroup = WORKGROUP               //指定工作组名称,需修改
    server string = Samba Server Version %v     //服务器描述信息
    log file = /var/log/samba/log.%m        //日志文件的位置
    max log size = 50               //日志文件最大值(默认为KB)
    security = user                 //安全级别为user(使用本地用户认证)
    passdb backend = tdbsam             //密码认证文件
    disable spoolss = yes           //新增,禁用打印机共享
    load printers = yes             //默认共享打印机
    cups options = raw              //共享打印机的选项
[hehe]                  //共享名
    comment = He is He      //描述信息
    path = /data            //共享目录
    browseable = yes            //是否可浏览
    guest ok = no           //禁止所有人读取
    valid users = hehe,haha     //定义允许读取的用户列表
    writable = no           //禁止所有人写入
    write list = hehe           //定义允许写入的用户列表
mkdir /data && chmod -R o=rwx /data/        //给予共享目录允许其它用户拥有完全权限

3.启动服务

/etc/init.d/smb restart      //重启smb服务
/etc/init.d/nmb restart     //重启nmb服务(可选)
chkconfig --level 35 smb on     //开机自启smb服务
chkconfig --level 35 nmb on     //开机自启nmb服务(可选)

4.验证

(1)使用hehe用户登录可读取并写入

(2)使用haha用户登录只可读取

关于客户端访问共享慢的解决方案

1.vim /etc/resolv.conf

nameserver 服务器IP

2.客户端将DNS指定为服务器IP

八、Samba安全控制


1.别名

(1)vim /etc/samba/smbusers
hehe = a b c
用户名 = 别名(空格分割多个别名)
(2)vim /etc/samba/smb.conf
[global]
username map = /etc/samba/smbusers
(3)/etc/init.d/smb restart && /etc/init.d/nmb restart

2.访问控制

vim /etc/samba/smb.conf

[global]
hosts allow = IP(网段、域名)     //只允许指定IP访问共享,其余主机拒绝访问
hosts deny = IP(网段、域名)      //除指定IP拒绝访问,其余的全部允许

注:hosts allow与hosts deny不能同时使用

3.权限

vim /etc/samba/smb.conf

[global]
create mask = 权限            //设置用户上传或新建文件权限(建议将x权限取消)
directory mask = 权限     //设置用户上传或新建文件夹的权限(建议为755)

以上是关于Samba服务的主要内容,如果未能解决你的问题,请参考以下文章

samba服务,连接远程开发机

CentOS 7下安装samba

网络共享服务器 samba

Samba远程代码执行漏洞(CVE-2017-7494)复现

centOS7上安装samba

如何使用 C# 从 Ubuntu/Samba 读取共享文件?