Linux操作文档——Samba文件共享服务


一、Samba服务基础

1、Samba服务的程序组件

smbd负责为客户机提供服务器中共享资源(目录和文件等)的访问;nmbd负责提供基于NetBIOS协议的主机名称解析,以便为Windows网络中的主机提供查询服务。
smbd程序负责监听TCP协议的139端口(SMB协议)、445端口(CIFS协议),而nmbd服务程序负责监听UDP协议的137和138 端口 (NetBIOS 协议)。
安装samba软件包

[root@localhost ~]# yum -y install samba
[root@localhost ~]# systemctl start smb
[root@localhost ~]# systemctl start nmb
[root@localhost ~]# systemctl enable smb
[root@localhost ~]# systemctl enable nmb
[root@localhost ~]# netstat -anptu | grep mbd
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      10846/smbd          
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      10846/smbd          
tcp6       0      0 :::445                  :::*                    LISTEN      10846/smbd          
tcp6       0      0 :::139                  :::*                    LISTEN      10846/smbd          
udp        0      0 192.168.1.255:137       0.0.0.0:*                           10872/nmbd          
udp        0      0 192.168.1.10:137        0.0.0.0:*                           10872/nmbd          
udp        0      0 192.168.122.255:137     0.0.0.0:*                           10872/nmbd          
udp        0      0 192.168.122.1:137       0.0.0.0:*                           10872/nmbd          
udp        0      0 0.0.0.0:137             0.0.0.0:*                           10872/nmbd          
udp        0      0 192.168.1.255:138       0.0.0.0:*                           10872/nmbd          
udp        0      0 192.168.1.10:138        0.0.0.0:*                           10872/nmbd          
udp        0      0 192.168.122.255:138     0.0.0.0:*                           10872/nmbd          
udp        0      0 192.168.122.1:138       0.0.0.0:*                           10872/nmbd          
udp        0      0 0.0.0.0:138             0.0.0.0:*                           10872/nmbd          

2、主配置文件smb. conf

[root@localhost ~]# vim /etc/samba/smb.conf
[global]
        workgroup = SAMBA
        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
配置项说明
global全局设置:这部分配置项的内容对整个Samba服务器都有效
homes宿主目录共享设置:设置Linux用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将自动映射到该用户的宿主文件夹中
printers打印机共享设置:如果需要共享打印机设备,可以在这部分进行配置
workgroup设置服务器所在的工作组名称
server string设置服务器的说明文字,用于描述Samba服务器
security设置服务器的安全级别,可设为以下三个值中的一 个:user(需由本服务器验证用户名及密码)、server(需指定另一台服务器来验证用户名及密码)、ads(由Windows域控制器验证用户名及密码)
log file设置 Samba 服务器的日志文件,默认存放在 /var/log/samba/目录下,表示将日志文件保存到/var/log/samba/目录中,按每个客户机建立 一 个日志文件,其中"%m"变量表示客户端主机名或IP地址
passwd backend设置共享账户文件的类型, 默认使用tdbsam (TDB数据库文件)。若网络内拥有LDAP目录认证,这里可以改用ldapsam数据库文件;另外,若要兼容旧版的Samba密码文件,也可以将类型设为smbpasswd
comment设置对应共享目录的注释、说明信息
path设置对应共享目录在服务器中的文件夹路径
browseable设置该共享目录在“ 网上邻居 ”中是否可见, 设置为no时相当于隐藏共享目录
guest ok设置是否所有人都可以访问共享目录, 与"public"配置项的作用相同
writable设置该共享目录是否可写, 与"read only"配置项的作用相反

对smb.conf配置文件的正确性进行检查

[root@localhost ~]# 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            //按Enter键输出当前的配置清单

# Global parameters

二、构建文件共享服务器

1、需用户验证的共享

1、建立Samba用户数据库

[root@localhost ~]# useradd zhangsan            //添加系统用户
[root@localhost ~]# pdbedit -a -u zhangsan            //添加共享用户
new password:
retype new password:
Unix username:        zhangsan
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-2146354476-4188695497-1726274855-1000
Primary Group SID:    S-1-5-21-2146354476-4188695497-1726274855-513
[root@localhost ~]# pdbedit -L            //列出所有Samba用户
zhangsan:1001:
[root@localhost ~]# pdbedit -vL zhangsan            //只列出zhangsan用户,输出详细信息
Unix username:        zhangsan
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-2146354476-4188695497-1726274855-1000
Primary Group SID:    S-1-5-21-2146354476-4188695497-1726274855-513
[root@localhost ~]# pdbedit -x -u zhangsan            //删除名为zhangsan的Samba账号
[root@localhost ~]# pdbedit -vL zhangsan
Username not found!

2、设置用户访问授权
创建共享用户zhangsan,lisi,确认共享目录

[root@localhost ~]# useradd zhangsan
[root@localhost ~]# useradd lisi
[root@localhost ~]# pdbedit -a -u zhangsan
new password:
retype new password:
Unix username:        zhangsan
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-2146354476-4188695497-1726274855-1001
Primary Group SID:    S-1-5-21-2146354476-4188695497-1726274855-513
Full Name:            
[root@localhost ~]# pdbedit -a -u lisi
new password:
retype new password:
Unix username:        lisi
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-2146354476-4188695497-1726274855-1002
Primary Group SID:    S-1-5-21-2146354476-4188695497-1726274855-513
[root@localhost ~]# mkdir -p /data/mytools
[root@localhost ~]# chmod 777 /data/mytools/
[root@localhost ~]# touch /data/mytools/test.txt

修改smb.conf配置文件,添加名为tools的共享目录配置段

[root@localhost ~]# vim /etc/samba/smb.conf
[global]
        workgroup = SAMBA
        security = user
......
[tools]
        comment = You can get software tools from here.
        path=  /data/mytools
        public=  no
        read only=  yes
        valid users=  zhangsan,lisi
        write list = hunter
        directory mask = 0755
        create mask= 0644
[root@localhost ~]# systemctl reload smb

2、用户映射及访问地址限制

1、共享账号映射(别名)
对于授权给共享用户zhangsan访问的共享文件夹,使用共享用户wangwu或zhaoliu也都可以访问(密码仍然使用共享用户zhangsan的)。而共享用户vanko的账号名称可以不告诉使用者
为现有的Samba共享用户zhangsan指定两个别名wangwu、zhaoliu

[root@localhost ~]# vim /etc/samba/smbusers
zhangsan = wangwu zhaoliu
[root@localhost ~]# vim /etc/samba/smb.conf            //启用账号映射功能
[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
        username map = /etc/samba/smbusers
        hosts allow = 192.168.1. 172.16.1.
[root@localhost ~]# systemctl reload smb

三、访问共享文件夹

1、使用smbclient访问共享文件夹

1、查询目标主机的共享资源列表
匿名查询Samba服务器192.168.1.10中提供的共享资源列表
输入密码直接Enter

[root@localhost ~]# smbclient -L 192.168.1.10 -U zhangsan
Enter SAMBA\zhangsan's password: 

	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	tools           Disk      You can get software tools from here.
	IPC$            IPC       IPC Service (Samba 4.10.4)
	zhangsan        Disk      Home Directories
Reconnecting with SMB1 for workgroup listing.

	Server               Comment
	---------            -------

	Workgroup            Master
	---------            -------
	SAMBA                LOCALHOST

2、登录并访问共享文件夹

1、使用共享用户zhangsan(或别名wangwu zhaoliu),hunter进行访问tools共享
在这里插入图片描述
2、查看当前工作路径
在这里插入图片描述
3、列出当前目录下的内容
在这里插入图片描述
4、下载测试文件 test.txt并退出
在这里插入图片描述

2、使用mount挂载共享文件夹

将Samba服务器192.1681.10中的tools共享目录挂载到本地的/media/smbdir/文件夹,以共享用户hunter进行验证
在这里插入图片描述
测试
在这里插入图片描述
如果发现没有权限,请卸载,做完下面步骤后重新挂载即可
在这里插入图片描述
在这里插入图片描述

posted @ 2020-02-29 15:45  高中僧  阅读(326)  评论(0)    收藏  举报