Samba服务器简介搭建
Samba服务器简介
- Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件由服务器及客户端程序构成
- SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务
- SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。
- 通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
实验目的
- 搭建SAMBA服务器
- 与客户端共享文件
Samba服务器安装
# 安装SAMBA服务器
# 使用rpm安装
mount /dev/cdrom /mnt/cdrom/ #将光盘挂载
mount: /dev/sr0 is write-protected, mounting read-only
df -hT #查看挂载情况
/dev/sr0 iso9660 4.2G 4.2G 0 100% /mnt/cdrom #已挂载
cd /mnt/cdrom/Packages/ #进入安装包目录
ls | grep samba #使用过滤查看samba安装包
samba-4.7.1-6.el7.x86_64.rpm #找到samba安装包
...#省略部分
rpm -ivh samba-4.7.1-6.el7.x86_64.rpm
# 需要解决大量依赖于是选择yum安装可以自我解决依赖
# 使用yum安装
yum provides samba # 查看samba安装包名
yum install samba -y # 安装
rpm -ql samba # 查看软件包安装路径找配置文件
# Samba的配置目录:/etc/samba/
# Samba的配置文件:/etc/samba/smb.conf
cd /etc/samba/ #进入samba配置文件
ls
lmhosts smb.conf smb.conf.example
cp smb.conf smb.conf.backup #将主配置文件进行备份
# 配置主配置文件
# 辅助配置内容 #查看主配置文件
# 注释行:以 # 号开头的行
# 配置样例行:以 ; 号开头的行
# 结合 grep 命令可以提取有效配置行
grep -v "^#" smb.conf | grep -v "^;" | grep -v "^$"
# 查看配置文件 去除#号开头的行 去除有样例的行 去除空行
# smb.conf 文件的配置内容
# [global]:全局设置`
# [homes]:用户目录共享设置`
# [printers]:打印机共享设置`
# [myshare]:自定义名称的共享目录设置`
# 插入如下内容
[mytest] #自定义名称
comment = Test Samba server # 对共享的说明 :测试samba服务器
path = /tmp/sambatest # 共享路径 前提是有
guest ok = Yes # 是否允许所有人访问
browseable = Yes # 文件是否是可浏览的
valid users = sambatest1, sambatest2 # 哪些用户可以访问
write list = sambatest1 # 可写的用户列表
# writeable 是否可写
语法检查工具:
testparm
仅是语法检查不检查逻辑
- 将测试被访问文件进行提权
chmod -R 777 /tmp/sambatest/
ll -d /tmp/sambatest/
drwxrwxrwx. 2 root root 137 May 11 01:01 /tmp/sambatest/
启动samba服务
rpm -ql samba #查看软件安装路径
...
/usr/lib/systemd/system/nmb.service
/usr/lib/systemd/system/smb.service # 关注nmb服务和smb服务
...
systemctl stop firewalld # 关闭防火墙
setenforce 0 # 关闭selinux
systemctl start smb # 开启smb服务
systemctl start nmb # 开启nmb服务
vim /etc/sysconfig/selinux #也可以永久关闭selinux
查看服务端口
- smd端口为445和139
- nmb端口为137和138
# 创建samba程序用户
pdbedit -a sambatest1 # 创建samba程序用户与Linux系统用户对应
pdbedit -a sambatest2
pdbedit -L # 列出程序用户
sambatest1:1001:
sambatest2:1002:
测试samba服务
使用windows访问
mytest为共享文件名 \\为samba访问
输入刚创建的用户名
成功进入共享目录
Linux测试
- 打开一台新的机器
- 安装samba客户端
yum -y install samba-client
# 下载文件
smbclient -U sambatest1 //192.168.100.20/mytest #使用命令加用户进行登陆
Enter SAMBA\sambatest1's password:
Try "help" to get a list of possible commands.
smb: \> ls #查看共享文件里的内容
. D 0 Tue May 11 01:01:06 2021
.. D 0 Tue May 11 01:00:33 2021
1.txt N 0 Tue May 11 01:01:06 2021
2.txt N 0 Tue May 11 01:01:06 2021
3.txt N 0 Tue May 11 01:01:06 2021
4.txt N 0 Tue May 11 01:01:06 2021
5.txt N 0 Tue May 11 01:01:06 2021
6.txt N 0 Tue May 11 01:01:06 2021
7.txt N 0 Tue May 11 01:01:06 2021
8.txt N 0 Tue May 11 01:01:06 2021
9.txt N 0 Tue May 11 01:01:06 2021
10.txt N 0 Tue May 11 01:01:06 2021
28289540 blocks of size 1024. 26214864 blocks available
smb: \> get 10.txt #使用get下载文件10.txt
getting file \10.txt of size 0 as 10.txt (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec)
smb: \> exit #退出客户端
ls #查看桌面文件是否下载成功
10.txt inodetest.sh john-1.9.0.tar.gz
上传文件
使用测试用户sambatest1
smbclient -U sambatest1 //192.168.100.20/mytest
Enter SAMBA\sambatest1's password:
Try "help" to get a list of possible commands.
smb: \> put john-1.9.0.tar.gz # 上传文件
putting file john-1.9.0.tar.gz as \john-1.9.0.tar.gz (137665.2 kb/s) (average 137665.3 kb/s)
smb: \> exit # 退出客户端
回到samba服务器共享文件路径查看是否上传成功
ls /tmp/sambatest/
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt john-1.9.0.tar.gz
# sambatest1, sambatest2 用户可以访问
# sambatest1可写的用户列表
# 切换用户进行登陆
# 使用测试用户sambatest2
smbclient -U sambatest2 //192.168.100.20/mytest
Enter SAMBA\sambatest2's password:
Try "help" to get a list of possible commands.
smb: \> put inodetest.sh # 上传文件
NT_STATUS_ACCESS_DENIED opening remote file \inodetest.sh # 提示访问被拒绝
smb: \> get 1.txt # 下载文件
getting file \1.txt of size 0 as 1.txt (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec) # 下载文件成功
smb: \> exit # 退出客户端