Samba跨平台资源共享管理

简介

Samba的主要功能是使Windows与Linux之间能够共享文件和打印服务。Samba采用客户端/服务器端架构模式,使用SMB协议。本节将介绍Samba服务器的安装与运行管理,以及Samba服务配置文件,学习可匿名访问与带用户验证访问的共享文件配置。

Samba服务器的安装与运行管理

1.Samba服务器的安装
使用yum或者apt命令安装Samba服务器,命令如下:

root@fff-PC:~# apt install samba

2.Samba服务器的运行管理
Samba服务器的守护进程为smb。
1)启动smb服务

root@fff-PC:~# systemctl start smbd.service 

2)关闭smb服务

root@fff-PC:~# systemctl stop smbd.service 

3)重启smb服务

systemctl restart smbd.service 

4)设置smb服务自启

systemctl enable smbd.service 

5)关闭smb服务自启

systemctl disable smbd.service 

Samba服务配置文件

在Samba服务器安装成功后,系统会创建/etc/samba目录并在此目录中创建3个文件,命令如下:

root@fff-PC:~# ll /etc/samba/
总用量 20
-rw-r--r-- 1 root root    8 8月  28  2020 gdbcommands
-rw-r--r-- 1 root root 8743 7月  24 14:34 smb.conf
drwxr-xr-x 2 root root 4096 8月  28  2020 tls

在centos中,lmhosts文件负责Samba服务主机IP地址与域名的解析,与hosts文件的功能类似;smb.conf文件为Samba的主配置文件;smb.conf.example文件为Samba配置的示例文件,而我的试验机是deepin所以有些不一样,下面对常用的配置项进行说明。

Samba配置可以分为全局配置和共享配置:全局配置主要针对服务器的运行、认证和访问限制等进行设置,作用范围是整个服务器;共享配置主要针对共享目录的路径、访问权限等进行设置,作用范围只针对本共享目录。下面是一个简化的Samba配置文件,这里展示了4个配置单元,第1个配置单元名称为[global],是全局配置,并不会真正展示给客户。从第2个配置单元开始就是共享配置,第2个配置单元名称为[homes],是用户家目录的共享配置,在默认情况下,Samba会共享系统用户的家目录给用户个人,当系统用户登录后就能看到以自己名字命名的家目录。第3个配置单元名称为[printers],是默认的打印机共享配置。上述3个配置单元的名称是Samba系统定义的,不能修改,但可以修改里面的配置项。第4个配置单元名称为[userfile],是用户自定义的配置单元,该单元名称就是用户登录Samba服务器时看到的共享文件的名称。Samba配置文件内容如下:
Samba跨平台资源共享管理
Samba的配置项非常丰富,有兴趣的读者可以查阅官方手册,这里介绍常用的全局配置项及功能。如下表:
Samba常用的全局配置项及功能
Samba跨平台资源共享管理
Samba常用的共享配置项及功能
Samba跨平台资源共享管理
Samba跨平台资源共享管理

可匿名访问的共享文件配置

可匿名访问的Samba服务器是指不需要输入用户名和密码就可以访问的服务器。下面介绍配置过程。这里的实验环境使用deepin

1.配置IP地址和安装Samba服务器

2.修改主配置文件
配置工作组为WORKGROUP,并且不需要认证就可以登录,自定义共享目录为public,路径位置为/publicdir,允许匿名访问且匿名用户有写入权限,内容如下:
Samba跨平台资源共享管理
也可以根据需要,进行修改。

要实现匿名访问,最重要的是在全局配置中加入map to guest=Bad User,并在共享目录中加入guest ok=yes或public=yes,其他配置可以根据需要修改。

注意:不同版本的samba,配置文件部分参数不同

3.创建共享目录并调整目录权限
根据需要创建共享目录并调整目录权限,由于本实验开放了匿名用户的写入权限,因此调整共享目录权限为777,命令如下:
Samba跨平台资源共享管理
4.测试在以上配置成功后,使用testparm命令测试主配置文件的语法,并重启smb服务,命令如下:

root@fff-PC:~# testparm 

使用Windows作为客户端进行测试,打开“运行”对话框,输入“\10.160.0.199”即可。

使用Linux作为客户端进行测试,必须先安装Samba的客户端程序samba-client,命令如下:

root@fff-PC:~# apt install smbclient

在安装成功后,就可以使用smbclient工具了,首先列出Samba服务器共享目录列表,命令格式如下:
Samba跨平台资源共享管理
其中,username%password是Samba用户名和密码,中间以“%”分隔。当不输入用户名和密码时,默认以匿名用户登录,系统还是会提示输入密码,直接按Enter键即可登录,命令如下:

root@fff-PC:~# smbclient -L 192.168.58.102
Enter WORKGROUP\root's password: 

	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	IPC$            IPC       IPC Service (Samba 4.9.5-Debian)
	hhh             Disk      
Reconnecting with SMB1 for workgroup listing.

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

	Workgroup            Master
	---------            -------
	WORKGROUP            FFF-PC
root@fff-PC:~# 

还可以把Samba服务器的共享目录挂载到客户端本地,由于挂载的文件格式为CIFS,因此要安装cifs-utils包,命令如下:

apt install cifs-utils

挂载的命令格式如下:
Samba跨平台资源共享管理
其中,username和password是Samba用户名和密码,如果是匿名登录,则使用如下命令:
Samba跨平台资源共享管理
以guest用户的身份登录就不需要输入用户名和密码了。本例的挂载过程如下:

root@fff-PC:~# mount -t cifs //192.168.58.102/hhh /root/test -o guest
root@fff-PC:~# df -Th
文件系统             类型      容量  已用  可用 已用% 挂载点
udev                 devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                tmpfs     391M  3.2M  388M    1% /run
/dev/sda3            ext4      121G  8.0G  107G    8% /
tmpfs                tmpfs     2.0G   14M  1.9G    1% /dev/shm
tmpfs                tmpfs     5.0M  4.0K  5.0M    1% /run/lock
tmpfs                tmpfs     2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/sda1            ext4      1.5G  107M  1.3G    8% /boot
tmpfs                tmpfs     391M   48K  391M    1% /run/user/1000
tmpfs                tmpfs     391M     0  391M    0% /run/user/0
//192.168.58.102/hhh cifs      121G   15G  107G   12% /root/test

带用户验证的共享文件配置

在默认情况下,Samba服务器是需要验证用户身份才可以登录的,而且服务器中的每个共享目录都可以独立控制用户的访问权限。

1.Samba用户管理
Samba后台默认以tdbsam的形式存储用户信息,Samba用户必须是系统用户(Samba虚拟用户也有对应的系统用户),可以使用smbpasswd或pdbedit工具来管理Samba用户,命令如下:
Samba跨平台资源共享管理
2.带用户验证的共享文件配置过程

1)修改主配置文件在安装好Samba服务器后,修改主配置文件,设定采用user认证模式,共享目录名称为sharedoc,路径位置为/sharedoc,该目录为大家可见却只允许u1用户访问,内容如下:
Samba跨平台资源共享管理
2)添加系统用户和Samba用户
Samba跨平台资源共享管理
无论是使用smbpasswd还是pdbedit添加Samba用户,都要为该Samba用户设置一个密码,该密码可以与它的系统登录密码不一样。
注:在添加系统用户时,可以不给该用户设置密码,该用户就不可以登录系统。这样一来,即使不法分子知道了用户名,也不能登录。

3)创建共享目录
Samba跨平台资源共享管理
4)测试
在Windows中连接Samba服务器,会弹出如图1所示的对话框,输入正确的用户名和密码,单击“确定”按钮即可进入Samba用户共享列表窗口查看共享目录,如图2所示。由于sharedoc目录设置了只允许u1用户访问,所以其他用户在登录时是无法进入该目录的,强行进入会弹出“Windows安全”对话框并提示“拒绝访问”,如图3所示。

图1
Samba跨平台资源共享管理
图2
Samba跨平台资源共享管理
图3
Samba跨平台资源共享管理
3.Samba虚拟用户配置
Samba支持把一个或多个非系统用户名映射到一个Samba用户名,当用户使用这些非系统用户名登录时就相当于使用了映射到的Samba用户名来登录,这些非系统用户也称为Samba虚拟用户。

1)修改主配置文件
在全局配置中增加如下配置:
Samba跨平台资源共享管理
2)编辑smbusers文件
Samba跨平台资源共享管理
3)登录测试
使用虚拟用户登录与使用普通Samba用户登录的方法是一样的,但用户名使用虚拟用户的,密码使用映射到的实际用户的,以本例来说,虚拟用户vu1在登录时使用的密码是实际用户u1的登录密码。在虚拟用户登录成功后,系统会认为是实际用户登录的,如果实际用户共享了家目录,那么虚拟用户在登录时也会看到实际用户的家目录,Samba虚拟用户共享列表窗口如图所示。

					Samba虚拟用户共享列表窗口

Samba跨平台资源共享管理

上一篇:Linux ubuntu mint 搭建samba服务器


下一篇:Linux中的网络文件系统