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进行验证

测试

如果发现没有权限,请卸载,做完下面步骤后重新挂载即可



浙公网安备 33010602011771号