Samba服务器的配置与使用
Samba是连接Linux/Unix与Windows系统的重要解决方案,大大提高了异构环境中的资源共享和互操作性。它融合了跨平台文件共享、打印共享、目录服务等多项关键功能。
宏观
- | Samba服务器 | Windows客户端 | Linux客户端 |
---|---|---|---|
所需软件 | 安装Samba服务器软件 | 无需安装软件 | 安装Samba客户端软件 |
配置 | 配置共享目录和用户 | 无需配置 | 无需专门配置 |
Samba服务器需要安装Samba软件包并配置共享目录和用户。
Windows客户端不需要安装任何额外软件,直接使用Windows文件资源管理器访问。
Linux客户端需要安装Samba客户端软件,然后都可以通过输入相应的用户名密码进行访问认证。
Samba服务器 宏观
- Samba服务器的安装和配置
- 安装Samba
- Ubuntu/Debian: apt install samba
- CentOS/RHEL: yum install samba
- 创建Samba共享目录
- 可以直接在smb.conf中添加共享目录定义,Samba会自动创建实际目录
- 配置Samba访问控制
- 在smb.conf中设置访问权限参数,如valid users、read only等
- 设置文件和目录权限掩码控制创建的权限
-== 配置Samba用户认证== - 用
smbpasswd
命令添加samba用户 - 设置用户密码用于访问认证
- Windows访问Samba服务器
- Windows客户端无需安装额外软件
- 使用资源管理器或网用命令访问共享目录
- 输入samba用户名和密码进行访问认证
- Linux访问Samba服务器
- 安装Samba客户端
- Ubuntu/Debian: apt install smbclient
- CentOS/RHEL: yum install samba-client
- 使用smbclient命令或cifs挂载访问共享目录
- 输入samba用户名和密码进行访问认证
------------------------------------------------Samba服务器---------------------------------------------
1.Samba服务器的安装和配置
- 安装Samba
首先需要安装Samba服务器软件,可以通过以下命令进行安装:- Debian/Ubuntu系统: sudo apt install samba
- CentOS/RHEL系统: sudo yum install samba
sudo apt-get install samba -y #安装samba服务器
- 创建Samba共享目录:可以跳过在smb.conf中添加
创建Samba共享目录可以通过以下两种方式进行:
- 创建一个新目录并设置其共享权限
sudo mkdir /home/samba_share #创建目录
sudo chown 用户名:组名 /home/samba_share # 修改文件的所有者
sudo chmod 777 /home/samba_share # 设置权限
然后在Samba配置文件中添加共享目录的信息:重点valid users :允许用户访问
[samba_share] #共享目录的名称
comment = Samba File Share # 注释,方便识别
path = /home/samba_share # 共享目录的服务器端路径
browsable = yes # 允许用户浏览共享目录
read only = no # 允许用户读写访问
guest ok = yes # 开放匿名访问
valid users = 用户名 # 允许用户访问,其他用户被拒绝
create mask = 0755 # 新创建文件的权限掩码
directory mask = 0755 # 新创建目录的权限掩码
- 添加Samba用户并设置密码:注意使用系统的用户,用户是文件的所有/拥有者
bash
sudo smbpasswd -a 用户名 # 添加用户使用系统的用户
sudo smbpasswd 用户名 # 设置密码
然后重启Samba服务并检查配置是否生效:
sudo service smbd restart # 重启smbd服务
sudo service nmbd restart # 重启nmbd服务
testparm /etc/samba/smb.conf # 检查配置文件语法
- 使用john用户连接测试:
bash
smbclient //127.0.0.1/samba_share -U john # 用john用户连接测试
--------------------------------------Windows访问Samba服务器--------------------------------------
2. Windows访问Samba服务器
- 在Windows中访问Samba共享目录
- 在Windows资源管理器地址栏输入:\samba服务器IP\samba共享名
- 输入配置的samba用户名和密码,即可访问samba共享目录
- 在Windows中访问Samba用户认证
- 打开命令提示符,输入:net use x: \samba服务器IP\samba共享名 /user:samba用户名
- 输入配置的samba用户的密码
- 此时可以在Windows中通过映射的X盘符访问samba共享目录
-------------------------------------------Linux访问Samba服务器----------------------------------
3. Linux访问Samba服务器
- 在Linux中安装Samba客户端
- Debian/Ubuntu: sudo apt install smbclient
- CentOS/RHEL: sudo yum install samba-client
- 在Linux中访问Samba共享目录
- 使用smbclient命令连接:smbclient //samba服务器IP/共享名 -U samba用户名
- 输入samba用户的密码,即可访问共享目录
- 在Linux中访问Samba用户认证
- 安装cifs-utils工具包
- 挂载共享目录:sudo mount -t cifs //samba服务器IP/共享名 挂载点 -o user=samba用户名
- 输入samba用户的密码,即可通过挂载点访问共享目录
防火墙的问题
要让Samba服务器通过防火墙,您需要打开以下端口:
1)Port 137 (UDP) - NetBIOS 名字服务 ; nmbd
2)Port 138 (UDP) - NetBIOS 数据报服务
3)Port 139 (TCP) - 文件和打印共享 ; smbd (基于SMB(Server Message Block)协议,主要在局域网中使用,文件共享协议)
4)Port 389 (TCP) - 用于 LDAP (Active Directory Mode)
5)Port 445 (TCP) - NetBIOS服务在windos 2000及以后版本使用此端口, (Common Internet File System,CIFS,它是SMB协议扩展到Internet后,实现Internet文件共享)
6)Port 901 (TCP) - 用于 SWAT,用于网页管理Samba
终端方式
具体的步骤如下:
- 查看防火墙状态
使用命令sudo systemctl status firewalld
查看防火墙状态。
- 添加Samba服务
使用以下命令将Samba添加到防火墙服务列表中:
sudo firewall-cmd --add-service=samba --permanent
- 打开Samba所需端口
使用以下命令打开Samba所需端口:
sudo firewall-cmd --add-port=<写你想使用的端口>/tcp --permanent
- 重新加载防火墙设置
使用以下命令重新加载防火墙设置:
sudo firewall-cmd --reload
现在,Samba服务器应该能够通过防火墙了。
可视化方式
。以下是通过可视化操作配置Red系统中Samba服务器通过防火墙的步骤:
-
打开Red系统的防火墙配置工具Firewall配置器。
-
点击“服务”选项卡,找到并勾选“Samba”服务。
-
点击“添加端口”按钮,在弹出的窗口中填写以下信息:
- 端口:<你需要的端口>
- 协议:TCP
- 描述:Samba NetBIOS
- 点击“应用”按钮保存设置并启用防火墙规则。
现在您的Red系统Samba服务器已经可以通过防火墙了。如果您想更精细地控制访问Samba服务器的IP地址或端口,请使用“源”或“目标”选项卡中的“地址”和“端口”设置。
SELinux对Samba的影响及配置方法
SELinux策略影响
- 在启用SELinux的系统上,默认策略会限制Samba服务器访问 # SELinux策略影响Samba
- 需要调整策略允许Samba相关服务访问 # 需要调整SELinux策略
调整SELinux策略方法
- 设置SELinux为permissive模式,添加samba模块到允许列表 # 设置允许模式
bash
setsebool -P samba_enable_home_dirs on # 允许家目录访问
setsebool -P samba_export_all_ro on # 允许只读共享
setsebool -P samba_export_all_rw on # 允许读写共享
- 直接禁用SELinux # 完全禁用SELinux
bash
setenforce 0
- 使用audit2allow生成允许samba访问的模块 # 生成自定义模块
bash
yum install policycoreutils-python
audit2allow -a -M samba
semodule -i samba.pp
- 调整samba共享目录和文件安全上下文 # 调整安全上下文
bash
semanage fcontext -a -t samba_share_t "/samba/share(/.*)?"
restorecon -R -v /samba/share
注意事项
- 需要ROOT权限执行SELinux调整命令 # 使用root用户
- 调整后需要重新启动smb服务 # 重启smb服务