Samba概述

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

一,Samba共享服务的匿名访问

1,安装Samba服务

[root@localhost ~]# yum install samba -y  ##安装Samba服务

2,配置Samba配置文件信息

[root@localhost ~]# cd /etc/samba/    ##切换到Samba配置文件目录
[root@localhost samba]# mv smb.conf smb.conf.bak   ##备份
[root@localhost samba]# grep -v "#" smb.conf.bak > smb.conf   ##重新创建一个配置文件(除去注释的)
[root@localhost samba]# vim smb.conf    ##修改配置文件

[global]                                     ##全局
				workgroup = SAMBA
				security = user

				passdb backend = tdbsam

				printing = cups
				printcap name = cups
				load printers = yes
				cups options = raw
				map to guest = Bad User     ##添加此项,开启匿名用户访问
##大G到末行添加下面的配置信息
[myshare]                                     ##添加的share文件
				path=/opt/abc                       ##路径
				public=yes                            ##公共访问
				browseable=yes                   ##能够访问
				writable=yes                         ##写权限
				create mask=0644               ##设置权限
				directory mask=0755

3,创建myshare路径目录,并给权限

[root@localhost samba]# mkdir /opt/abc      ##创建目录
[root@localhost samba]# chmod 777 /opt/abc   ##给全部权限
[root@localhost samba]# systemctl stop firewalld.service   ##关闭防火墙
[root@localhost samba]# setenforce 0    ##关闭增强功能
[root@localhost samba]# systemctl start smb.service   ##开启Samba服务

4,利用测试机访问

利用测试机访问共享

查看共享文件夹

创建一个文件到共享文件夹中

在Linux中查看创建的文件

[root@localhost samba]# cd /opt/abc/   ##查看共享文件目录,查看到创建的文本
[root@localhost abc]# ls
111.txt
[root@localhost abc]# ls -l     ##Linux的匿名访问用户是nobody
总用量 0
-rw-r--r--. 1 nobody nobody 0 11月  5 15:51 111.txt

二,Samba共享服务的身份验证

1,配置Samba配置文件信息

[root@localhost ~]# cd /etc/samba/    ##切换到Samba配置文件目录
[root@localhost samba]# vim smb.conf    ##修改配置文件

[global]
				workgroup = SAMBA
				security = user

				passdb backend = tdbsam

				printing = cups
				printcap name = cups
				load printers = yes
				cups options = raw   ##将匿名访问的一项删除
##大G到末行添加下面的配置信息
[test]
				path=/opt/test         ##共享文件目录路径
				browseable=yes     ##能够访问,将public项去除
				create mask=0644
				directory mask=0755
				valid users=zhangsan, lisi      ##允许访问的用户
				write list=zhangsan                ##允许写入的用户

2,创建smb用户

[root@localhost samba]# useradd zhangsan      ##创建两个用户
[root@localhost samba]# useradd lisi
[root@localhost samba]# smbpasswd -a zhangsan   ##创建smb用户并设置密码
New SMB password:       ##设置密码
Retype new SMB password:     ##确认密码
Added user zhangsan.
[root@localhost samba]# smbpasswd -a lisi
New SMB password:
Retype new SMB password:
Added user lisi.
[root@localhost samba]# pdbedit -L    ##列出smb用户列表
zhangsan:1001:
lisi:1002:
[root@localhost samba]# cd /opt/    
[root@localhost opt]# mkdir test    ##创建共享目录
[root@localhost opt]# ls
abc  rh  test
[root@localhost opt]# chmod 777 test/   ##给最大权限
[root@localhost opt]# systemctl restart smb.service   ##重启Samba服务

3,用测试机访问共享

为了避免错误可以先在测试上清除缓存

利用测试机访问共享

需要身份验证,输入用户名密码

创建一个文件到test共享文件夹中

在Linux中查看创建的文件

[root@localhost opt]# cd /opt/test/
[root@localhost test]# ls    ##创建成功
222.txt

4,因为在配置文件中只允许zhangsan写入权限,测试lisi能否写入

用lisi访问共享

测试创建文件

三,Samba共享服务的账户名映射(账户别名登录)

1,配置映射文件和Samba配置文件

[root@localhost ~]# cd /etc/samba/
[root@localhost samba]# vim smbusers    ##创建账户映射配置文件

zhangsan = t01 t02   ##别名t01 t02 密码还是zhangsan用户的密码

[root@localhost samba]# vim smb.conf   ##配置Samba配置文件

[global]
				workgroup = SAMBA
				security = user

				passdb backend = tdbsam

				printing = cups
				printcap name = cups
				load printers = yes
				cups options = raw
				username map = /etc/samba/smbusers    ##添加别名的配置文件路径
				
[root@localhost samba]# systemctl restart smb.service   ##重启Samba服务

2,用测试机测试别名访问

使用别名登录

四,Samba共享服务的访问控制列表

1,配置Samba配置文件信息

[root@localhost ~]# cd /etc/samba/    ##切换到Samba配置文件目录
[root@localhost samba]# vim smb.conf    ##修改配置文件

[test]
    path=/opt/test
    browseable=yes
    create mask=0644
    directory mask=0755
    valid users=zhangsan, lisi
    write list=zhangsan
    hosts deny=192.168.13.    ##添加拒绝192.168.13段访问test
[root@localhost samba]# systemctl restart smb.service   ##重启Samba服务

2,用测试机访问test共享文件夹

五,通过Windows共享文件夹直接挂载到Linux中使用

1,利用Linux访问Windows共享的文件

[root@localhost ~]# smbclient -L //192.168.100.99/share    ##访问共享 
Enter SAMBA\root's password:                               ##密码

2,将共享的文件挂载到Linux中,直接访问文件

[root@localhost ~]# mkdir -p /opt/share01   ##创建挂载点
[root@localhost ~]# mount.cifs //192.168.100.99/share /opt/share01   ##将共享文件夹挂载到挂载点
Password for root@//192.168.100.99/share:  
[root@localhost ~]# cd /opt/share01    ##切换到挂载点
[root@localhost share01]# ls
test.txt
[root@localhost share01]# cat test.txt    ##查看共享文件夹的文件内容
this is a test!!

(Windows具体共享设置查看之前的博客,谢谢!!)

谢谢阅读!