一、samba的介绍
Samba是一个开放源代码软件套件,用于在Linux和UNIX操作系统上实现文件和打印机共享。它可以与Windows操作系统无缝地协作,并支持各种不同的协议和功能,如SMB/CIFS、NetBIOS名称服务、Active Directory域控制器等。
使用Samba,您可以将Linux或UNIX计算机配置为文件服务器,以便Windows客户端可以访问共享文件和目录。您还可以将Samba配置为打印服务器,以便Windows客户端可以连接到打印机并打印文档。
Samba也支持其他协议,如FTP和HTTP,以及一些高级功能,如用户身份验证、访问控制、加密和数据压缩等。
Samba软件包通常由几个组件组成,例如smbd
、nmbd
、winbindd
等,每个组件都提供不同的功能和服务。 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 ~]#