文档 · 2019年1月11日 0

linux利用samba搭建文件共享服务

Samba是用于Linux和Unix的标准Windows互操作性程序套件。

自1992年以来,Samba为使用SMB/CIFS协议的所有客户端提供了安全、稳定和快速的文件和打印服务,例如所有版本的DOS和Windows、OS/2、Linux和许多其他版本。

Samba是将Linux/Unix服务器和桌面无缝集成到Active Directory环境中的重要组件。它既可以作为域控制器,也可以作为常规域成员。

Samba是一个软件包,它在系统和设备的设置、配置和选择方面为网络管理员提供了灵活性和自由度。由于它提供的所有功能,Samba越来越受欢迎,并且自1992年发行以来一直如此。

简单点就是一个实用的文件共享管理平台。下面我们来说下怎么使用。

1.检查系统中是否安装了samba软件。

[root@az2-foton-dev-ftp-01 /]# rpm -qa | grep samba
samba-client-libs-4.8.3-4.el7.x86_64
samba-libs-4.8.3-4.el7.x86_64
samba-common-4.8.3-4.el7.noarch
samba-common-libs-4.8.3-4.el7.x86_64
samba-common-tools-4.8.3-4.el7.x86_64
samba-4.8.3-4.el7.x86_64
[root@az2-foton-dev-ftp-01 /]#

因为我的已经安装好了,如果你没有安装那么可以直接通过你熟悉的方式进行安装。例如(Centos,RedHat)

[root@az2-foton-dev-ftp-01 /]# yum install -y samba

ubuntu等其他的系统请使用对应的安装命令(apt-get),直接安装即可。如果你没有网络,那就去下载rpm包进行安装。

需要的包,包括{

samba-client-libs-4.8.3-4.el7.x86_64

samba-4.8.3-4.el7.x86_64

samba-common-4.8.3-4.el7.noarch

2.安装好了之后启动服务并加入开机自启动。

[root@az2-foton-dev-ftp-01 /]# systemctl status smb    #查看samba运行状态,(centos 7 or redhat 7 以下系统使用 service smb status)
[root@az2-foton-dev-ftp-01 /]# systemctl start smb     #启动samba服务
[root@az2-foton-dev-ftp-01 /]# systemctl enable smb    #加入开机自启动。

3.修改配置文件。配置共享路径。

a.首先创建一个共享路径,例如

[root@az2-foton-dev-ftp-01 /]# mkdir /test
[root@az2-foton-dev-ftp-01 /]# chown -R test:test /test   #如果你有很多人需要使用你可以新建一个组 把成员放在组里面。这样就都有权限了,很多人配置成功后没有权限写入也是没有设置文件的权限导致的。

b.修改配置文件

[root@az2-foton-dev-ftp-01 /]# vim /etc/samba/smb.conf

# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]                                                    
        workgroup = SAMBA_WORK
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

[homes]
        comment = Home Directories
        valid users = %S, %D%w%S
        browseable = No
        read only = No
        inherit acls = Yes

[printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600
        browseable = No

[print$]
        comment = Printer Drivers
        path = /var/lib/samba/drivers
        write list = @printadmin root
        force group = @printadmin
        create mask = 0664
        directory mask = 0775

###test内容为自行添加
[test]
        comment = test
        path = /test
        public = no
        writeable = yes
        browseable = yes
        write list = test
        valid users = test test2

c.参数解释

samba服务的配置文件
由上述的设定流程,可以看出samba服务的配置文件为服务搭建起到了导向的作用,那么我就先来了解以下samba的基础配置。

  • smb.conf继承了.ini文件的格式,用[ ]分成了不同的部分
  • 全局设置:[global] 服务器通用或全局设置的部分
  • 特定共享设置:[homes] 用户的家目录共享;[printers] 定义打印机资源和服务;[sharename] 自定义的共享目录配置。
  • 宏定义:
符号 释义 符号 释义
%m 客户端主机的NetBIOS名 %M 客户端主机的FQDN
%H 当前用户家目录路径 %U 当前用户的用户名
%g 当前用户所属组 %h samba服务器的主机名
%L samba服务器的NetBIOS名 %I 客户端主机的IP
%T 当前的日期和时间 %S 可登录的用户名

samba服务器全局配置

  • workgroup 指定工作组名称
  • server string 主机注释信息
  • netbios name 指定NetBIOS名
  • interfaces 指定服务侦听接口和ip
  • hosts allow 可用“,”,空格,或tab分隔,默认允许所有主机访问,也可在每个共享独立配置。
  • hosts deny 拒绝指定主机访问
  • config file = /etc/samba/conf.d/%U 用户独立的配置文件
  • Log level = 2 日志级别,默认为0,不记录日志
  • max log size = 50 日志文件达到50k,将轮循rotate,单位KB
  • passdb backend = tdbsam 密码数据库格式

“samba服务共享目录配置”

  • 每个共享目录应该有独立的[ ]部分
  • [共享名称] 远程网络看到的共享名称
  • comment 注释信息
  • path 所共享的目录路径
  • public 能否被公共访问的共享,默认为no,和匿名共享类似
  • browsable 是否允许所有用户浏览此共享,默认为yes,no为隐藏
  • writeable = yes 可以被所有用户读写,默认为no
  • read only = no 和 writeable = yes 等价,如与以上设置发生冲突,放在后面的设置生效,默认只读
  • write list 三种形式:用户,@组名(如writeable=no,列表中用户或组可读写,不在列表中用户只读)
  • valid users 特定用户才能访问该共享,如为空,将允许所有用户访问,用户名之间用空格分隔

d.配置完成保存退出,新建samba用户,用来访问共享文件。

[root@az2-foton-dev-ftp-01 /]# useradd test
[root@az2-foton-dev-ftp-01 /]# smbpasswd -a test
New SMB password:
Retype new SMB password:
Added user test.

[root@az2-foton-dev-ftp-01 /]#

e.配置完成后重启服务。

[root@az2-foton-dev-ftp-01 /]# systemctl restart smb

4.打开windows的文件管理器win+e 在地址栏输入\\你的IP地址,按回车(Enter),输入你刚新建的用户名密码登录,

还可以浏览器登录

到此,samba文件共享就配置完成了,想要做到权限的控制只需要给用户分组并利用

  • write list 三种形式:用户,@组名(如writeable=no,列表中用户或组可读写,不在列表中用户只读)
  • valid users 特定用户才能访问该共享,如为空,将允许所有用户访问,用户名之间用空格分隔

这两个参数就可以了。

 

打赏