文章目录
- 一、 什么是Samba?
- 1.1 Samba的安装
- 二 、关于samba的使用与配置实验
- 实验目的
- 实验环境
- 实验参数
- 实验过程
- 匿名访问
- 身份验证
- 访问控制列表
- Linux共享windows7文件配置
一、 什么是Samba?
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
Samba基于Client\Server型的协议,Client端可以通过SMB访问到Server(服务器)上的共享资源。当Windows是 Client,CentOS是服务器时,通过Samba就可以实现window访问Linux的资源,实现两个系统间的数据交互。
1.1 Samba的安装
centos6版本中,在我们安装Linux系统的光盘镜像文件中,就有samba的安装包,我们可以使用rpm -ivh的防止直接安装。
但是在centos7的版本中,使用rpm -ivh的方式需要安装大量的依赖包,所以我们直接可以使用"yum -y install samba"安装。
二 、关于samba的使用与配置实验
实验目的
实现局域网内的不同计算机的资源共享服务。
实验环境
VMware中一台centos7虚拟机、一台win7虚拟机,两台虚拟机在一个局域网
实验参数
centos7虚拟机:
IP地址:14.0.0.17
子网掩码:255.0.0.0
win7虚拟机:
IP地址:14.0.0.18
子网掩码:255.0.0.0
实验过程
首先我们应该知道的是samba的配置文件在/etc/samba/smb.conf中,同时还有一个示例文件 smb.conf.example
[root@localhost ~]# cd /etc/samba/
lmhosts smb.conf smb.conf.example
在我们对配置文件要有修改时,我们一定要记住要做的第一件事就是将配置文件备份,实验过程以修改示例文件演示。
[root@localhost samba]# mv smb.conf /opt/smb.conf.bak 将原来的配置文件备份到/opt目录下
[root@localhost samba]# ls
lmhosts smb.conf.example
[root@localhost samba]# grep -v "#" smb.conf.example > smb.conf 过滤出示例文件中不含“#”的文件并注入到smb.conf(这里的smb.conf文件就是我们新生成的配置文件)
[root@localhost samba]# ls
lmhosts smb.conf smb.conf.example
匿名访问
[root@localhost samba]# vi smb.conf 编辑配置文件
然后在配置文件的末尾写入share的内容
[share]
path=/opt/abc 指定文件的路径
public=yes 公共访问
browseable=yes 能够访问
writable=yes 能够写入
create mask=0644 赋予文件权限
directory mask=0755 赋予目录权限
接下来创建目录abc并提升权限至最大。
[root@localhost samba]# ls /opt
smb.conf.bak
[root@localhost samba]# mkdir /opt/abc 创建目录
[root@localhost samba]# ls /opt
abc smb.conf.bak
[root@localhost samba]# chmod 777 /opt/abc/ 将abc目录提升权限到777
[root@localhost samba]# systemctl stop firewalld 关闭防火墙
[root@localhost samba]# setenforce 0 关闭内核防护
[root@localhost samba]# systemctl start smb 开启smb服务
我们在win7虚拟机中,就可以访问到共享服务了
还可以对读写功能进行测试,在win7的share文件夹下,写入一个文本,文本内容为“this is share”,并命名这个文件名为“new”。
进服务器查看新建的文件,并查看文件的详细信息。所谓的匿名访问就是通过服务器内的一个程序用户"nobody"进行访问。
[root@localhost samba]# cat /opt/abc/new.txt
this is share[root@localhost samba]#
[root@localhost samba]# ll /opt/abc/new.txt 查看新建文件的详细信息,属主属组都是nobody,实现了匿名访问
-rw-r--r--. 1 nobody nobody 13 7月 19 15:52 /opt/abc/new.txt
身份验证
[root@localhost samba]# vi smb.conf //修改配置文件
[test]
path = /opt/test
browseable = yes
create mask = 0644
directory mask = 0755
valid users = shi, zhangsan 允许zhangsan、shi用户进行访问
write list = zhangsan 仅允许zhangsan对文件进行写入
[root@localhost samba]# id zhangsan
id: zhangsan: no such user
[root@localhost samba]# id shi
uid=1000(shi) gid=1000(shi) 组=1000(shi)
[root@localhost samba]# useradd zhangsan 添加用户zhangsan
[root@localhost samba]# smbpasswd -a zhangsan 验证samba的密码
New SMB password:
Retype new SMB password:
Added user zhangsan.
[root@localhost samba]# pdbedit -L 看samba用户
zhangsan:1024:
[root@localhost samba]# cd /opt
[root@localhost opt]# mkdir test
[root@localhost opt]# chmod 777 test/
[root@localhost opt]# ls
1.txt abc file-1594881718.tar.gz id_ecdsa.pub smb.conf.bak test
[root@localhost opt]# systemctl restart smb //重启服务
接下来在win7内进行测试
同样的输入要访问的服务器
发现我们无法登录,因为我们没有为该用户设置samba密码。
所以我们用zhangsan用户登录
我们进行文件写入测试
[root@localhost test]# ll /opt/test/
总用量 4
-rw-r--r--. 1 zhangsan zhangsan 12 7月 19 16:25 new2.txt
[root@localhost test]# cat new2.txt
this is new2[root@localhost test]#
访问控制列表
在身份验证的配置文件的基础上加上一条
host deny = 14.0.0. 拒绝14.0.0.0网段的所有主机访问,可以同时拒绝多个网段,中间用空格分隔
[root@localhost samba]# systemctl restart smb 重启服务
进入win7测试
清空缓存
Linux共享windows7文件配置
Linux作为客户机
[root@localhost samba]# mkdir /ck 在根目录下创建一个目录ck
[root@localhost samba]# ls /
bin ck etc ipadds.txt lib64 mnt proc run srv tmp var
boot dev home lib media opt root sbin sys usr
win7配置:
[root@localhost samba]# yum -y install samba-client samba-common cifs-utils samba 安装smbclient,可以使用smbclient命令
[root@localhost samba]# smbclient -L 14.0.0.18 远程连接win7主机
Enter MYGROUP\root's password: 密码为空
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk 远程管理
C$ Disk 默认共享
IPC$ IPC 远程 IPC
project Disk
Users Disk
Reconnecting with SMB1 for workgroup listing.
do_connect: Connection to 14.0.0.18 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Unable to connect with SMB1 -- no workgroup available
[root@localhost samba]# mount.cifs //14.0.0.18/project /ck 将win7主机中的文件夹project挂载到之前创建的/ck目录下
Password for root@//14.0.0.18/project: 密码为空
[root@localhost samba]# df -h 查看挂载情况
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 1.2G 49G 3% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
/dev/mapper/centos-home 46G 33M 46G 1% /home
tmpfs 378M 0 378M 0% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /mnt
//14.0.0.18/project 300G 14G 287G 5% /ck
[root@localhost samba]# cat /ck
cat: /ck: 是一个目录
[root@localhost samba]# cat /ck/project1.txt