samba服务的部署

本文详细介绍了如何部署和配置Samba服务,包括服务端和客户端的设置,如域名修改、黑白名单管理、共享目录权限控制等。重点讨论了如何实现不同用户的访问权限,如所有用户可写、指定用户或用户组可写、匿名登录以及root用户权限等,确保Samba服务器的安全和高效运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于samba
  Samba是一个实现不同操作系统(Windows、Linux、UNIX)之间文件共享和打印机共享的一种
SMB协议的免费软件。SMB协议是客户机/服务器协议,客户机通过该协议可以访问服务器上的共享
文件及打印机共享资源。它主要应用于局域网上,也可以通过设置“NetBIOS over TCP/IP”同互
联网中的电脑分享资源。
一.samba服务的配置

在sam服务端

[root@shareserver ~]# yum install -y samba samba-client samba-common
	samba 提供samba服务的主命令;
 	samba-common 提供管理命令;
	samba-client 提供测试服务
[root@shareserver ~]# systemctl start smb
[root@shareserver ~]# netstat -antlp | grep smb  # 查看samba的端口

在这里插入图片描述

[root@shareserver ~]# id student    # 查看本机用户
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
[root@shareserver ~]# id linux
uid=1002(linux) gid=1002(linux) groups=1002(linux)
[root@shareserver ~]# smbpasswd -a linux   # 把本机用户添加到sam服务器上
New SMB password:      # 设置samba用户的密码,此密码与本机用户的密码无关
Retype new SMB password:
Added user linux.
[root@shareserver ~]# smbpasswd -a  student
New SMB password:
Retype new SMB password:
Added user student.
[root@shareserver ~]# pdbedit -L    # 查看smb中的所有用户
linux:1002:
student:1000:student
[root@shareserver ~]# pdbedit -x student   # 删除amb中的student用户
[root@shareserver ~]# pdbedit -L
linux:1002:	

在客户端测试

[root@client ~]# yum install -y samba-client
[root@client ~]# smbclient -L //172.25.254.142/linux  -U  linux  # 发现不能查看 ,这可能是因为火墙阻挡了客户端的访问	

在这里插入图片描述

在服务端关闭火墙

[root@shareserver ~]# systemctl stop firewalld

在客户端

[root@client ~]# smbclient -L //172.25.254.142    # 匿名登陆服务端,并查看信息,-L表示查看共享列表	

在这里插入图片描述

[root@client ~]# smbclient -L //172.25.254.142 -U  linux   # 指定linux用户登陆,-U表示指定用户		

在这里插入图片描述

[root@client ~]# smbclient  //172.25.254.142/linux  -U linux  # 登陆共享服务端,查看共享用户的家目录信息时发现被拒绝

在这里插入图片描述
在服务端排错

[root@shareserver ~]# getenforce  # selinux与samba服务冲突
Enforcing
[root@shareserver ~]# getsebool -a | grep samba	

在这里插入图片描述

[root@shareserver ~]# setsebool -P samba_enable_home_dirs on   # 分享home目录即可·

在客户端

[root@client ~]# smbclient //172.25.254.142/linux  -U  linux

在这里插入图片描述

[root@client ~]# mount -o username=linux,password=linux //172.25.254.142/linux  /mnt   # 把用户挂载到/mnt下,方便对共享用户进行管理
[root@client ~]# df

在这里插入图片描述

[root@client ~]# cd /mnt
[root@client mnt]# touch file{1..3}

在服务端Linux用户家目录查看

[root@shareserver ~]# cd /home/linux/
[root@shareserver linux]# ls
file1  file2  file3  linuxfile	
二.samba的访问控制
1.域名的修改

在客户端

[root@client mnt]# smbclient -L //172.25.254.142/linux  -U  linux  # 查看到域名为MYGROUP

在这里插入图片描述在服务端修改域名

[root@shareserver ~]# vim /etc/samba/smb.conf 
89         workgroup = LINUX[
root@shareserver ~]# systemctl restart smb.service 

在客户端

[root@client mnt]# smbclient -L //172.25.254.142/linux  -U  linux  # 再次查看,域名修改成功	

在这里插入图片描述

2.黑白名单(Samba服务器默认对所有用户开放权限)
(1)设定白名单

在服务端

[root@shareserver ~]# vim /etc/samba/smb.conf   # 设定白名单,即改即生效 
96         hosts allow = 172.25.254.242   

在其他用户上测试

[root@shareserver ~]# smbclient  //172.25.254.142/linux  -U linux   # 其他用户不能访问

在这里插入图片描述
在白名单用户上访问

[root@client mnt]# smbclient -L //172.25.254.142/linux  -U  linux  # 可以访问

在这里插入图片描述

(2)设定黑名单

在服务端

[root@shareserver ~]# vim /etc/samba/smb.conf  # 设定黑名单,即改即生效
97         hosts deny = 172.25.254.242

在黑名单用户上测试

[root@client mnt]# smbclient -L //172.25.254.142/linux  -U  linux  # 黑名单用户被禁止
Enter linux's password: 
Domain=[LINUX] OS=[Windows 6.1] Server=[Samba 4.2.3]
tree connect failed: NT_STATUS_ACCESS_DENIED	

恢复环境

[root@shareserver ~]# vim /etc/samba/smb.conf 
删除 96,97这两行,即删除自己添加的黑白名单
3.共享目录
(1)共享自己建立的目录

在服务端

[root@shareserver ~]# mkdir /linuxfile[
root@shareserver ~]# touch /linuxfile/file{1..3}
[root@shareserver ~]# vim /etc/samba/smb.conf   # 共享自己建立的目录
320         [file]    # 这是共享名,可以自己起名字
321         comment = myfile   # 共享文件的说明,这个也是自己自定义的
322         path = /linuxfile     # 共享文件的绝对路径

在这里插入图片描述

[root@shareserver ~]# systemctl restart smb.service

在客户端测试

[root@client mnt]# smbclient -L  //172.25.254.142/file  -U  linux  # 在共享信息里查看到共享目录,file是自己设定的共享目录名称

在这里插入图片描述

[root@client mnt]# smbclient  //172.25.254.142/file  -U  linux  # 在客户端登录查看文件内容时被禁止
Enter linux's password: 
Domain=[LINUX] OS=[Windows 6.1] Server=[Samba 4.2.3]
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*	

在这里插入图片描述

在服务端排查原因

[root@shareserver ~]# ls -Zd /linuxfile/   # 发现共享目录的安全上下文不是samba共享
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /linuxfile/	

在这里插入图片描述

[root@shareserver ~]# semanage fcontext -a -t samba_share_t '/linuxfile(/.*)?'   # 修改共享目录的安全上下文	
[root@shareserver ~]# restorecon -RvvF  /linuxfile/   # 刷新
[root@shareserver ~]# ls -Zd /linuxfile/   # 查看修改成功
drwxr-xr-x. root root system_u:object_r:samba_share_t:s0 /linuxfile/

在这里插入图片描述

再次在客户端查看

[root@client mnt]# smbclient  //172.25.254.142/file  -U  linux  # 可以查看		

在这里插入图片描述

(2)共享系统目录 

在服务端

[root@shareserver ~]# vim /etc/samba/smb.conf
323         [mnt]     # 共享系统目录的名称,这个名称也是任意的
324         comment = systemctl share file
325         path = /mnt    # 共享系统目录的绝对路径
[root@shareserver ~]# systemctl restart smb.service	

在客户端查看

[root@client mnt]# smbclient -L //172.25.254.142/mnt  -U  linux	

在这里插入图片描述

[root@client mnt]# smbclient  //172.25.254.142/mnt  -U  linux  # 但是登录上之后,也不能查看内容,这是因为安全上下文不一致	

在服务端

由于这是系统文件,如果更改安全上下文,会影响其他用户的访问,所以我们让samba服务对读写功能权限不做限制

[root@shareserver ~]# getsebool -a  | grep samba

在这里插入图片描述

[root@shareserver ~]# setsebool -P samba_export_all_ro on # 打开只读访问权限
[root@shareserver ~]# setsebool -P samba_export_all_rw on # 打开读写访问权限
[root@shareserver ~]# getsebool -a  | grep samba

在这里插入图片描述
在客户端

[root@client mnt]# smbclient  //172.25.254.142/mnt  -U  linux

在这里插入图片描述

3.samba服务的权限管理
(1)所有用户的可写权限
[root@shareserver ~]# vim /etc/samba/smb.conf 
323         writable = yes    # 所有用户都可写

在这里插入图片描述

[root@shareserver ~]# systemctl restart smb 	

在客户端

[root@client mnt]# smbclient  //172.25.254.142/file  -U  linux
Enter linux's password: 
Domain=[LINUX] OS=[Windows 6.1] Server=[Samba 4.2.3]
smb: \> ls          # 注:!ls  表示 查看当前目录的文件 
 .                                   D        0  Sat Nov 24 11:57:04 2018  
 ..                                 DR        0  Sat Nov 24 11:56:39 2018  
 file1                               N        0  Sat Nov 24 11:57:04 2018  
 file2                               N        0  Sat Nov 24 11:57:04 2018  
 file3                               N        0  Sat Nov 24 11:57:04 2018
 smb: \> rm file1    # 发现删除失败
 NT_STATUS_ACCESS_DENIED deleting remote file \file1
 NT_STATUS_ACCESS_DENIED listing \file1

在这里插入图片描述

在服务端

[root@shareserver ~]# ll /linuxfile/    # 我发现共享目录只对root用户可写
drwxr-xr-x. 2 root root 6 Nov 24 15:21 /linuxfile/
[root@shareserver ~]# chmod  o+w /linuxfile/   # 修改权限
[root@shareserver ~]# ll  -d   /linuxfile/
drwxr-xrwx. 2 root root 6 Nov 24 15:21 /linuxfile/

再在客户端测试

[root@client mnt]# smbclient  //172.25.254.142/file  -U  linux
Enter linux's password: 
smb: \> rm file1    # 成功删除
smb: \> ls  
.                                   D        0  Sat Nov 24 14:27:36 2018 
..                                 DR        0  Sat Nov 24 11:56:39 2018  
file2                               N        0  Sat Nov 24 11:57:04 2018  
file3                               N        0  Sat Nov 24 11:57:04 2018	

在这里插入图片描述

(2)指定用户可写

在服务端

[root@shareserver ~]# pdbedit -L   # 查看samba服务上的用户
linux:1002:
student:1000:student
[root@shareserver ~]# vim /etc/samba/smb.conf
324         write list = linux   # 限定只有linux用户可以写	

在这里插入图片描述

[root@shareserver ~]# systemctl restart smb 	

在客户端测试

[root@client mnt]# smbclient  //172.25.254.142/file  -U  linux  # 用linux用户登录,可以删除
Enter linux's password: 
Domain=[LINUX] OS=[Windows 6.1] Server=[Samba 4.2.3]
smb: \> ls  
.                                   D        0  Sat Nov 24 14:27:36 2018  
..                                 DR        0  Sat Nov 24 11:56:39 2018 
file2                               N        0  Sat Nov 24 11:57:04 2018  
file3                               N        0  Sat Nov 24 11:57:04 2018 		
smb: \> rm file2
smb: \> ls	
 .                                   D        0  Sat Nov 24 15:03:54 2018  
 ..                                 DR        0  Sat Nov 24 11:56:39 2018  f
 ile3                               N        0  Sat Nov 24 11:57:04 2018 		
 smb: \> quit

在这里插入图片描述

[root@client mnt]# smbclient  //172.25.254.142/file  -U  student    # 用其他用户登录不能删除
Enter student's 
password: Domain=[LINUX] OS=[Windows 6.1] Server=[Samba 4.2.3]
smb: \> ls  
.                                   D        0  Sat Nov 24 15:03:54 2018  
..                                 DR        0  Sat Nov 24 11:56:39 2018  
file3                               N        0  Sat Nov 24 11:57:04 2018 		
smb: \> rm file3
NT_STATUS_MEDIA_WRITE_PROTECTED deleting remote file \file3
NT_STATUS_MEDIA_WRITE_PROTECTED listing \file3

在这里插入图片描述

(3)指定用户组可写

在服务端

[root@shareserver ~]# vim /etc/samba/smb.conf 
324         write list = @linux

在这里插入图片描述

[root@shareserver ~]# systemctl restart smb.service
[root@shareserver ~]# id student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
[root@shareserver ~]# usermod -G linux student   # 把student用户添加到linux组中
[root@shareserver ~]# id student
uid=1000(student) gid=1000(student) groups=1000(student),1002(linux)

在客户端测试

[root@client mnt]# smbclient  //172.25.254.142/file  -U  student
Enter student's password: 
Domain=[LINUX] OS=[Windows 6.1] Server=[Samba 4.2.3]
smb: \> ls  
.                                   D        0  Sat Nov 24 15:18:37 2018 
..                                 DR        0  Sat Nov 24 11:56:39 2018  
file3                               N        0  Sat Nov 24 15:18:37 2018 		
smb: \> rm file3
smb: \> ls  
.                                   D        0  Sat Nov 24 15:21:50 2018  
..                                 DR        0  Sat Nov 24 11:56:39 2018	

在这里插入图片描述

(4)指定用户登录

在服务端

[root@shareserver ~]# vim /etc/samba/smb.conf 
325         valid users = student   # 指定只有student用户可以登陆

在这里插入图片描述

[root@shareserver ~]# systemctl restart smb.service	

在客户端测试

[root@client mnt]# smbclient  //172.25.254.142/file  -U  student # 用student用户登录
Enter student's password:
Domain=[LINUX] OS=[Windows 6.1] Server=[Samba 4.2.3]
smb: \> ls  
.                                   D        0  Sat Nov 24 15:21:50 2018  
..                                 DR        0  Sat Nov 24 11:56:39 2018 		
smb: \> quit

在这里插入图片描述

[root@client mnt]# smbclient  //172.25.254.142/file  -U  linux   # 用其他用户登录
Enter linux's password: 		

在这里插入图片描述

(5)指定用户组登录

在服务端

[root@shareserver ~]# vim /etc/samba/smb.conf
325         valid users  = +student
[root@shareserver ~]# systemctl restart smb.service
[root@shareserver ~]# id linux
uid=1002(linux) gid=1002(linux) groups=1002(linux)
[root@shareserver ~]# usermod -G student linux   # 把linux用户加入到student组中
[root@shareserver ~]# id linux
uid=1002(linux) gid=1002(linux) groups=1002(linux),1000(student)

在客户端测试

[root@client mnt]# smbclient  //172.25.254.142/file  -U  linux  # 成功登录
Enter linux's password: 
Domain=[LINUX] OS=[Windows 6.1] Server=[Samba 4.2.3]
smb: \> ls  
.                                   D        0  Sat Nov 24 15:21:50 2018  
..                                 DR        0  Sat Nov 24 11:56:39 2018 		
smb: \> quit	

在这里插入图片描述

(6)隐藏共享目录

在客户端

[root@client mnt]# smbclient -L  //172.25.254.142/file  -U  linux  # 默认共享目录时可以看见的
Enter linux's password: 

在这里插入图片描述

在服务端

[root@shareserver ~]# vim /etc/samba/smb.conf
326         browseable = no
[root@shareserver ~]# systemctl restart smb.service	

在客户端查看共享目录

[root@client mnt]# smbclient -L  //172.25.254.142/file  -U  linux
Enter linux's password: 	

在这里插入图片描述

(7)匿名用户登录
[root@client mnt]# smbclient   //172.25.254.142/file	 # 在客户端查看,匿名用户默认不能登录

在这里插入图片描述

在服务端

[root@shareserver ~]# vim /etc/samba/smb.conf 
176         map to guest = bad user    # 其他用户(也就是匿名用户)映射到guest
328         guest ok = yes   # 允许其他用户(也就是匿名用户)登陆

在这里插入图片描述

[root@shareserver ~]# systemctl restart smb.service
[root@shareserver ~]# cd /linuxfile/
[root@shareserver linuxfile]# touch file{1..3}
[root@shareserver linuxfile]# ls
file1  file2  file3	

在客户端测试

[root@client mnt]# smbclient   //172.25.254.142/file     # 匿名用户成功登录
Enter root's password:    # 匿名用户没有密码,直接按回车即可
Domain=[LINUX] OS=[Windows 6.1] Server=[Samba 4.2.3]
smb: \> ls  
.                                   D        0  Sat Nov 24 15:56:32 2018  
..                                 DR        0  Sat Nov 24 11:56:39 2018  
file1                               N        0  Sat Nov 24 15:56:32 2018  
file2                               N        0  Sat Nov 24 15:56:32 2018  
file3                               N        0  Sat Nov 24 15:56:32 2018
smb: \> put anaconda-ks.cfg 
putting file anaconda-ks.cfg as \anaconda-ks.cfg (25.2 kb/s) (average 25.2 kb/s)
smb: \> ls    # 成功上传  
.                                   D        0  Sat Nov 24 16:04:14 2018 
..                                 DR        0  Sat Nov 24 11:56:39 2018  
file1                               N        0  Sat Nov 24 15:56:32 2018  
file2                               N        0  Sat Nov 24 15:56:32 2018  
file3                               N        0  Sat Nov 24 15:56:32 2018  
anaconda-ks.cfg                     A     1574  Sat Nov 24 16:04:14 2018

在这里插入图片描述

在服务端查看

[root@shareserver ~]# ll /linuxfile/   # 查看到匿名用户上传的文件

在这里插入图片描述

(8)指定root用户

在服务端

[root@shareserver ~]# vim /etc/samba/smb.conf  
329         admin users = linux   # 指定linux用户为超级用户

在这里插入图片描述

[root@shareserver ~]# systemctl restart smb.service 	

在客户端测试

[root@client ~]# smbclient  //172.25.254.142/file  -U  linux
Enter linux's password: 
smb: \> put initial-setup-ks.cfg 
putting file initial-setup-ks.cfg as \initial-setup-ks.cfg (38.8 kb/s) (average 38.8 kb/s)
smb: \> ls      # 查看上传成功
.                                   D        0  Sat Nov 24 16:20:07 2018  
..                                 DR        0  Sat Nov 24 11:56:39 2018  
file1                               N        0  Sat Nov 24 15:56:32 2018  
file2                               N        0  Sat Nov 24 15:56:32 2018  
file3                               N        0  Sat Nov 24 15:56:32 2018  
anaconda-ks.cfg                     A     1574  Sat Nov 24 16:04:14 2018  
initial-setup-ks.cfg                A     1667  Sat Nov 24 16:20:07 2018

在服务端查看

[root@shareserver ~]# ll /linuxfile/	

在这里插入图片描述

在服务端还原环境

 [root@shareserver ~]# vim /etc/samba/smb.conf
 321         [file]
 322         comment = myfile share
 323         path = /linuxfile
 324         writable = yes

在这里插入图片描述

[root@shareserver ~]# systemctl restart smb.service 	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值