一、samba的介绍

​ Samba是一个开放源代码软件套件,用于在Linux和UNIX操作系统上实现文件和打印机共享。它可以与Windows操作系统无缝地协作,并支持各种不同的协议和功能,如SMB/CIFS、NetBIOS名称服务、Active Directory域控制器等。

​ 使用Samba,您可以将Linux或UNIX计算机配置为文件服务器,以便Windows客户端可以访问共享文件和目录。您还可以将Samba配置为打印服务器,以便Windows客户端可以连接到打印机并打印文档。

​ Samba也支持其他协议,如FTP和HTTP,以及一些高级功能,如用户身份验证、访问控制、加密和数据压缩等。

​ Samba软件包通常由几个组件组成,例如smbdnmbdwinbindd等,每个组件都提供不同的功能和服务。 smbd是一个守护进程(daemon),用于提供文件和打印机共享。nmbd是另一个守护进程,用于实现NetBIOS名称服务。winbindd是用于集成Samba服务器和Windows域控制器的组件。

二、实验简介

使用两台虚拟机,server(IP:192.168.189.133)和client1(IP:192.168.189.128),在server上配置samba服务,使用samba共享文件。使用客户机client1来挂载使用server上的共享文件夹

三、实验过程

1、装包,server和client都执行一下操作

samba-client是一个Samba软件包中的软件,它包含用于在Linux和UNIX操作系统上访问远程Samba共享的命令行工具。使用samba-client,您可以在本地计算机上列出、挂载和卸载远程Samba共享。

 yum -y install samba   #安装samba,服务端工具
 yum -y install cifs-utils    #提供格式支持
 yum -y install samba-client   #samba的客户端工具

2、编辑配置文件

查看配置文件

[globe]、[homes]等称为节。

[global]节
1、[g1oba1]节定义 Samba 服务器的基本配置·在此节中应配置三项内容
workgroup 用于指定服务器的 Windows 工作组·大部分 Windows 系统都默认为 WORKGROUP但 Windows XP Home 默认为 SHOME·这用于帮助系统浏览对 TCP/IP 名称服务使用 NetBIOS的服务器。
要将工作组设置为 WORKGROUP,请将 /etc/samba/smb.conf 中的现有工作组条目更改为:
workgroup= WORKGROUP
2、security 控制 Samba 对客户端进行身份验证的方式·对于 security = user,客户端使用本地 Samba 服务器管理的有效用户名和密码来登录·此设置是 /etc/samba/smb.conf 中的默认设置。
3、hosts a11ow 是允许访问 Samba 服务的主机的列表(以号、空格或制表符分隔)·如果未指定,则所有主机均可访问 Samba·如果 [global] 节中未指定此设置,则可以单独在每个共享中设置·如果在 [g1oba1] 节中指定,将适用于所有共享,无论每个共享是否具有不同的设置。
可以通过主机名或源 IP 地址来指定主机·通过逆向解析传入连接尝试的 IP 地址来检查主机名·hosts_access(5) man page 中描逃了此指令的完整语法。
可以通过多种方法来指定允许的主机:
·IPv4 网络/前缀:172.25.0.0/24
·IPv4 网络/网络掩码:172.25.0.0/255.255.255.0
·如果 IPv4 子网前缀处于字节边界:172.25.0.
·IPv6 网络/前缀:[2001:db8:0:1::/64]
·主机名: desktop.example.com
·以 example.com 结尾的所有主机: .example.com
例如,要使用尾点表示法将访问权限限制为 172.25.0.0/16 网络中的主机,/etc/samba/smb.conf 配置文件中的 hosts allow 条目将为:
hosts allow = 172.25.
要额外允许从主机名以“.example.com”结尾的所有主机中进行访问,/etc/samba/smb.conf配置文件条目应为:
hosts allow172.25. .ex4mple.com

[root@server ~]# ls /etc/samba/
lmhosts  smb.conf(配置文件)  smb.conf.example
[root@server ~]# cat /etc/samba/smb.conf | grep -v ^$ | grep -v ^#
[global]     #此节为常规配置
	workgroup = SAMBA
	security = user
	passdb backend = tdbsam
	printing = cups
	printcap name = cups
	load printers = yes
	cups options = raw
	# Install samba-usershares package for support
	include = /etc/samba/usershares.conf
[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

编辑配置文件,留下有用的。

[root@server ~]# cat /etc/samba/smb.conf | grep -v ^$ | grep -v ^#
[global]
	workgroup = SAMBA
	security = user
	passdb backend = tdbsam
	# Install samba-usershares package for support
	include = /etc/samba/usershares.conf #此配置文件需装samba-usershares包才有
[root@server ~]#

创建共享目录

创建共享目录:
[root@server ~]# mkdir /sharedir
[root@server ~]# ll /sharedir -d
drwxr-xr-x. 2 root root 6 May 11 10:07 /sharedir
[root@server ~]#

编辑配置文件/etc/samba/smb.conf,添加文件共享节,配置内容如下

[myshare]   #共享名
      comment = used for share test   #描述信息
      path = /sharedir   #共享的目录
      writable = yes     #可写
      browseable = yes    #允许浏览器访问
      valid users = fred,test   #在列表中列出的用户才能够访问该共享
      write list = fred    #列出的用户可以创建、修改或删除共享中的文件和目录

检查配置语法

检查配置语法:
[root@server ~]# testparm 
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Weak crypto is allowed by GnuTLS (e.g. NTLM as a compatibility fallback)

Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions   #按enter键

# Global parameters
[global]
......................输出省略

3、准备samba用户

创建用户,禁用登录

[root@server ~]# useradd -s /sbin/nologin fred
[root@server ~]# useradd -s /sbin/nologin test

将fred、test添加到samba用户

[root@server ~]# smbpasswd -a fred
New SMB password:(123456)
Retype new SMB password:  #为fred设置密码
Added user fred   #确认密码
[root@server ~]# smbpasswd -a test
New SMB password:
Retype new SMB password:
Added user test.

使用pdbedit查看管理samba用户:

以下是一些常见的pdbedit命令:

  • pdbedit -a username:用于添加新的Samba用户。在执行该命令时,您需要输入密码,然后确认密码。
  • pdbedit -x username:用于删除现有的Samba用户。
  • pdbedit -u username:用于更新现有的Samba用户。在执行该命令时,您可以更改用户的密码、描述信息等内容。
  • pdbedit -L:用于列出所有当前配置的Samba用户的用户名和UID号码。
  • pdbedit -G groupname:用于列出属于指定组的所有Samba用户。
  • pdbedit -a -u username -g groupname:用于将现有的Samba用户添加到指定组中。
[root@server ~]# pdbedit -L
fred:1001:
[root@server ~]# id fred
uid=1001(fred) gid=1001(fred) groups=1001(fred)
[root@server ~]#

4、启动Samba

启动并设置开机自启

[root@server ~]# systemctl start smb nmb
[root@server ~]# systemctl enable smb nmb

防火墙放行服务

[root@server ~]# firewall-cmd --add-service=samba
success
[root@server ~]# firewall-cmd --add-service=samba --permanent 
[root@server ~]# setenforce 0

5、客户端挂载

selinux设置为宽容模式

[root@client ~]# setenforce 0

匿名登陆

[root@client ~]# smbclient -L 192.168.99.142
Password for [SAMBA\root]:
Anonymous login successful

	Sharename       Type      Comment
	---------       ----      -------
	myshare         Disk      used for share test
	IPC$            IPC       IPC Service (Samba 4.17.5)
SMB1 disabled -- no workgroup available

使用samba用户、密码查看:

[root@client ~]# smbclient -L 192.168.99.142 -U fred
Password for [SAMBA\fred]:   #输入fred设置的密码

	Sharename       Type      Comment
	---------       ----      -------
	myshare         Disk      used for share test
	IPC$            IPC       IPC Service (Samba 4.17.5)
SMB1 disabled -- no workgroup available
[root@client ~]#

创建挂载点

[root@client ~]# mkdir /smbmount     #创建挂载点

使用fred用户挂载:

[root@client ~]# mount -o username=fred //192.168.99.142/myshare /smbmount
Password for fred@//192.168.99.142/myshare:  ******
[root@client ~]# df -h /smbmount
Filesystem                Size  Used Avail Use% Mounted on
//192.168.99.142/myshare   70G  5.9G   65G   9% /smbmount
[root@client ~]# df -h /smbmount
Filesystem                Size  Used Avail Use% Mounted on
//192.168.189.133/myshare   70G  5.9G   65G   9% /smbmount
[root@client ~]#

[root@client ~]# umount /smbmount 
[root@client ~]# mount -t cifs -o username=fred,password=123456 //192.168.99.142/myshare /smbmount
[root@client ~]# df -h /smbmount
Filesystem                Size  Used Avail Use% Mounted on
//192.168.99.142/myshare   70G  5.9G   65G   9% /smbmount
[root@client ~]# umount /smbmount 
[root@client ~]# mount -t cifs -o user=fred,pass=123456 //192.168.99.142/myshare /smbmount
[root@client ~]# df -h /smbmount
Filesystem                Size  Used Avail Use% Mounted on
//192.168.99.142/myshare   70G  5.9G   65G   9% /smbmount

使用用户密码文件挂载

[root@client ~]# vim userinfo.txt
[root@client ~]# chmod 600 userinfo.txt
[root@client ~]# umount /smbmount 
[root@client ~]# mount -t cifs -o credentials=/root/userinfo.txt //192.168.99.142/myshare /smbmount
[root@client ~]# df -h /smbmount
Filesystem                Size  Used Avail Use% Mounted on
//192.168.99.142/myshare   70G  5.9G   65G   9% /smbmount
[root@client ~]#

6、测试读写

server端更改共享目录权限

[root@server ~]# chmod 755 /sharedir/
[root@server ~]# chown fred /sharedir/
[root@server ~]# ll -d /sharedir/
drwxr-xr-x. 2 fred root 32 May 11 10:44 /sharedir/

client端尝试写入

[root@client ~]# echo 123 > /smbmount/3.txt
[root@client ~]# cat /smbmount/3.txt
123

7、开机自动挂载

编辑/etc/fstab问价加入以下内容

[root@client1 ~]# tail -1 /etc/fstab 
//192.168.189.133/myshare /smbmount/    cifs    defaults,username=fred,password=123456      0 0
[root@client1 ~]# 

验证自动挂载

[root@client1 ~]# mount /smbmount/
[root@client1 ~]# df /smbmount/
Filesystem                1K-blocks    Used Available Use% Mounted on
//192.168.189.133/myshare  38745616 7741696  31003920  20% /smbmount

8、验证 vaild users、write list、browseable参数的作用

[root@server ~]# tail -7 /etc/samba/smb.conf
[myshare]
      comment = used for share test
      path = /sharedir
      writable = yes
        browseable = yes   #是否可以浏览器访问
        valid users = fred,test   #可用用户列表
        write list = fred    #可写用户列表
[root@server ~]# 

windows宿主机尝试访问共享

在这里插入图片描述
输入samba用户密码
在这里插入图片描述
连接成功

在这里插入图片描述
验证写权限列表
client1客户端使用test用户登录,test用户不在write list中,没有写入权限

[root@client1 ~]# mount -t cifs -o user=test,pass=123456 //192.168.189.133/myshare /smbmount/
[root@client1 ~]# df /smbmount/
Filesystem                1K-blocks    Used Available Use% Mounted on
//192.168.189.133/myshare  38745616 7741976  31003640  20% /smbmount
[root@client1 ~]#

尝试创建文件

[root@client1 ~]# ls /smbmount/
2.txt  3.txt  5.txt  6.txt
[root@client1 ~]# echo 1111 > 7.txt
[root@client1 ~]# ls /smbmount/     #7.txt没有被创建
2.txt  3.txt  5.txt  6.txt 
[root@client1 ~]#

修改server端配置文件,将test用户移除,再在client端登录尝试,失败。

[root@server ~]# tail -7 /etc/samba/smb.conf
[myshare]
      comment = used for share test
      path = /sharedir
      writable = yes
        browseable = yes
        valid users = fred
        write list = fred
[root@server ~]# 
[root@client1 ~]# mount -t cifs -o user=test,pass=123456 //192.168.189.133/myshare /smbmount/
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)
[root@client1 ~]#
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐