39、配置 Samba 文件服务器全攻略

配置 Samba 文件服务器全攻略

1. 创建用户账户

要访问 Samba 共享,用户既需要在 Linux 文件系统上有访问权限,也需要在共享本身有访问权限。这类似于 Windows 服务器,用户需要 NTFS 权限和共享权限。由于 Windows 处理加密的方式与 Linux 处理权限的方式不兼容,仅拥有 Linux 用户账户无法从 Windows 工作站访问 Linux 目录,还需要 Windows 凭证。

在企业环境中,如果许多用户需要访问共享,仅创建 Linux 和 Samba 用户账户可能不是可行的解决方案,特别是在有多个带有 Samba 共享的服务器时。除了创建两个不同的用户账户(Linux 用户账户和 Samba 用户账户),还有其他一些选择:
- 设置 OpenLDAP 目录服务器 :可以创建在 Linux 和 Windows 中都有效的用户账户。
- 将 Samba 配置为 Windows NT 风格的域控制器 :允许集中管理用户,还能配置终端用户计算机进行域登录。
- 将 Samba 配置为 Active Directory 中的成员服务器 :可从 Active Directory 获取所有用户信息,但仍需设置 Linux 用户账户。
- 使用 Winbind 从 Active Directory 获取所有所需信息 :在主要使用 Active Directory 的环境中,运行 winbind 服务,对用户账户进行身份验证。
- 使用 security=server 选项 :配置一个 Samba 服务器存储用户账户,其他 Samba 服务器从该主服务器获取用户信息。

下面介绍创建 Linux 和 Samba 用户账户的具体步骤:
1. 创建 Linux 用户账户 :使用以下命令创建用户 linda 并确保她有主目录(在 SUSE 上需要使用 -m 选项,其他 Linux 发行版则不需要):

useradd -m linda
  1. 设置密码 :通常不需要为该用户账户设置 Linux 密码,因为 Samba 用户通常通过网络连接到共享,不会访问 Linux 计算机的控制台。如果 Samba 用户需要本地访问,可以为其设置 Linux 密码;如果仅在 Windows 计算机上使用该账户,则无需设置。
  2. 创建 Samba 用户账户 :使用 smbpasswd 命令创建 Samba 用户账户:
smbpasswd -a linda

该命令会要求输入 Samba 用户的密码,此密码符合 Windows 通常用于密码存储的规则,并与用户账户一起存储在配置文件 /etc/samba/smbpasswd 中。以下是创建用户 linda 后该文件的内容示例:

nuuk:~ # cat /etc/samba/smbpasswd
# This file is the authentication source for Samba if 'passdb backend' is set
# to 'smbpasswd' and 'encrypt passwords' is 'Yes' in the [global] section of
# /etc/samba/smb.conf
#
# See section 'passdb backend' and 'encrypt passwords' in the manual page of
# smb.conf for more information.
linda:1001:F6E8482239815354AAD3B435B51404EE:55DB0294BC42D6E1B81AE2B5C7F294
3F:[U          ]:LCT-49543651:

smbpasswd 命令还可用于管理用户账户,支持本地模式和远程模式。以下是本地模式下常用的参数:
| 参数 | 说明 |
| ---- | ---- |
| -a | 添加用户 |
| -d | 禁用用户账户,但不从配置中删除 |
| -e | 启用已禁用的用户账户 |
| -m | 创建机器账户,用于工作站需要向域进行身份验证的设置 |
| -x | 从 /etc/samba/smbpasswd 文件中删除用户账户 |

2. 启动 Samba 服务

创建 Samba 文件服务器所需的配置完成后,需要启动两个服务:
- smbd 服务 :启动 Samba 文件服务。
- nmbd 服务 :提供 NetBios 名称服务,仅在需要使用 NetBios 进行名称解析时启动。

在现代 Linux 发行版中,使用以下命令启动服务并确保在重启时自动激活:

systemctl start smb
systemctl enable smb

如果需要启动 nmb 命名服务,使用以下命令:

systemctl start nmb
systemctl enable nmb
3. smb.conf 中的附加参数

除了上述基本配置, smb.conf 中还有数百个参数可用于调整和增强服务器。以下是一个示例 smb.conf 配置文件及其中参数的解释:

nuuk:/etc/samba # cat smb.conf
 [global]
workgroup = WORKGROUP
printing = cups
printcap name = cups
printcap cache time = 750
cups options = raw
map to guest = Bad User
include = /etc/samba/dhcp.conf
logon path = \\%L\profiles\.msprofile
logon home = \\%L\%U\.9xprofile
logon drive = P:
usershare allow guests = Yes
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[profiles]
comment = Network Profiles Service
path = %H
read only = No
store dos attributes = Yes
create mask = 0600
directory mask = 0700
[users]
comment = All users
path = /home
read only = No
inherit acls = Yes
veto files = /aquota.user/groups/shares/
[share] 
comment = sales share
path = /share
read only = No
inherit acls =yes
create mask = 0660
[groups]
comment = All groups
path = /home/groups
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 = @ntadmin root
force group = ntadmin
create mask = 0664
directory mask = 0775

以下是对配置文件中参数的详细解释:
| 参数 | 说明 |
| ---- | ---- |
| workgroup | 指定 Samba 服务器使用的工作组名称,在 Windows 对等网络中作为工作组名称,在使用域的环境中作为域名 |
| printing | 告诉 Samba 使用本地的 CUPS 解决方案处理打印 |
| printcap name | 在 CUPS 打印中,Samba 需要知道如何处理 /etc/printcap 文件,此参数设置为 cups |
| cups options | 告诉 Samba 如何向 CUPS 打印机提供数据 |
| map to guest | 处理 Windows 环境中对来宾用户的请求,示例中设置为 Bad User 禁用了 Windows 来宾用户功能 |
| include | 读取额外配置文件的内容,避免主 smb.conf 文件过大 |
| logon path | 在域环境中,指定工作站可以找到系统登录信息的共享名称 |
| logon home | 在 Windows 9x 环境中,用户使用此参数查找主目录相关设置的位置 |
| logon drive | 指示 Windows 工作站用于映射包含主目录的共享的驱动器 |
| usershare allow guest | 指示是否允许来宾用户访问用户共享 |
| comment | 说明共享的用途,用户在浏览网络环境时会看到该值 |
| valid users | 指定允许访问共享的用户,可使用 @ 符号引用组的所有成员 |
| browseable | 指示是否允许浏览共享内容,通常在主目录和与打印相关的共享中关闭 |
| read only | 设置共享的基本安全性,默认只读,设置为 no 允许写入访问 |
| inherit acls | 让 Samba 服务器与 Linux ACL 协作,设置为 yes 时,Samba 会遵循 ACL 并根据 ACL 设置创建新文件 |
| path | 必需参数,指定 Linux 文件系统上共享的路径 |
| store dos attributes | 若要存储 DOS 属性,需将此参数设置为 yes ,默认不存储 |
| create mask | 设置新文件的创建掩码,确定新文件的权限,若使用 inherit acls 则不应使用此参数 |
| directory mask | 与 create mask 类似,但作用于目录 |
| printable | 在打印机共享中需要此参数,允许 CUPS 打印子系统从该共享获取文件并打印 |
| write list | 包含对共享具有写入访问权限的用户列表,可与 valid users 参数结合使用以实现更严格的安全设置 |
| force group | 尝试将组所有者设置为指定的组,若用户不是该组成员,则将其默认主组设置为所有者 |

以下是配置 Samba 服务器的流程图:

graph LR
    A[创建 Linux 用户账户] --> B[创建 Samba 用户账户]
    B --> C[启动 Samba 服务]
    C --> D[配置 smb.conf 参数]
4. 访问 Samba 文件服务器

完成上述配置后,Samba 文件服务器应该已经正常运行,可以进行测试。可以使用 Windows 工作站通过 UNC 命名连接到网络共享,例如,如果主机名为 nuuk ,共享名为 share ,则在 Windows 中尝试将网络驱动器映射为 \\nuuk\share ,Windows 会要求输入用户名和密码并连接到共享。

如果没有 Windows 工作站,也可以从 Linux 命令行连接到共享。有两种方法可以从命令行连接到 Linux 共享:
- 使用 smbclient 实用程序 :提供类似 FTP 的界面访问 Samba 共享文件系统,但共享与文件系统的集成不够平滑。
- 使用 mount 命令挂载共享 :将共享集成到 Linux 文件系统中。

在连接到共享之前,可以使用 smbclient 实用程序检查共享是否存在:

smbclient -L //servername

该命令会要求输入密码,可直接按回车键忽略,因为获取共享列表不需要密码。以下是使用示例 Samba 配置文件的机器上运行该命令的结果示例:

nuuk:/etc/samba # smbclient -L //localhost
Password:
Domain=[NUUK] OS=[Unix] Server=[Samba 3.0.28-0.5-1657-SUSE-CODE10] 
Sharename      Type      Comment
---------      ----      -------
profiles
Disk      Network Profiles Service
users
Disk      All users
share
Disk      sales share
groups
Disk      All groups
print$
Disk      Printer Drivers
IPC$
IPC
IPC Service (Samba 3.0.28-0.5-1657-SUSE-CODE10)
Domain=[NUUK] OS=[Unix] Server=[Samba 3.0.28-0.5-1657-SUSE-CODE10] 
Server
Comment
---------
-------
Workgroup
Master
---------
-------

确认共享存在后,使用 mount 命令连接共享。首先创建一个用于挂载文件系统的目录,例如 /mnt/samba

mkdir /mnt/samba

然后使用 -t cifs 选项告诉 mount 命令连接到 Samba 共享,并通过 -o username= 选项传递用户名:

mount -t cifs -o username=your_username //servername/share /mnt/samba

不建议在命令行直接传递密码,因为这存在安全风险。

以下是从 Linux 命令行访问 Samba 共享的步骤列表:
1. 使用 smbclient -L //servername 检查共享是否存在。
2. 创建用于挂载的目录,如 mkdir /mnt/samba
3. 使用 mount 命令挂载共享,传递用户名。

通过以上步骤,你可以成功配置、启动并访问 Samba 文件服务器。

配置 Samba 文件服务器全攻略

5. 自动挂载 Samba 共享

为了在工作站启动时自动连接到 Samba 共享,可以将相关信息添加到 /etc/fstab 文件中。这样,每次启动工作站时,系统会自动挂载指定的 Samba 共享。

/etc/fstab 文件中添加条目时,需要指定共享的位置、挂载点、文件系统类型、挂载选项等信息。下面是一个示例:

//servername/share /mnt/samba cifs username=your_username,password=your_password,iocharset=utf8,sec=ntlmssp 0 0
  • //servername/share :Samba 共享的位置,其中 servername 是服务器的名称, share 是共享的名称。
  • /mnt/samba :挂载点,即共享将被挂载到的本地目录。
  • cifs :文件系统类型,表示这是一个 CIFS(通用 Internet 文件系统)共享。
  • username=your_username,password=your_password :用户名和密码,用于身份验证。为了安全起见,不建议直接在 fstab 文件中明文存储密码,可以使用其他方法(如使用凭证文件)来存储密码。
  • iocharset=utf8 :指定字符集为 UTF-8,以支持中文等非 ASCII 字符。
  • sec=ntlmssp :指定安全协议为 NTLMSSP,这是一种常用的 Windows 身份验证协议。
  • 0 0 :这两个数字分别表示是否进行转储(dump)和文件系统检查(fsck),一般设置为 0 0 表示不进行这些操作。

以下是添加自动挂载条目的步骤:
1. 打开 /etc/fstab 文件:

sudo nano /etc/fstab
  1. 在文件末尾添加上述示例条目,根据实际情况修改服务器名称、共享名称、用户名和密码等信息。
  2. 保存并关闭文件(按 Ctrl + X ,然后按 Y 确认保存,最后按 Enter )。
  3. 测试挂载配置:可以使用以下命令手动挂载共享,检查配置是否正确。
sudo mount -a

如果没有报错信息,则表示配置正确。

6. 常见问题及解决方法

在配置和使用 Samba 文件服务器的过程中,可能会遇到一些常见问题。以下是一些常见问题及相应的解决方法:

问题 现象 解决方法
无法访问共享 在 Windows 或 Linux 上尝试连接共享时失败 1. 检查 Samba 服务是否正常运行,使用 systemctl status smb systemctl status nmb 命令查看服务状态。
2. 检查防火墙设置,确保允许 Samba 服务的端口(通常是 TCP 139 和 445)通过。
3. 检查用户账户和密码是否正确,确保用户具有访问共享的权限。
共享显示为只读 即使在 smb.conf 中设置了可写权限,仍然无法写入共享 1. 检查 smb.conf read only 参数的设置,确保其值为 no
2. 检查 Linux 文件系统上共享目录的权限,确保 Samba 用户具有写入权限。
3. 检查 SELinux 或 AppArmor 等安全模块是否限制了 Samba 的写入操作,可以临时禁用这些安全模块进行测试。
无法看到共享 在网络中无法浏览到 Samba 共享 1. 检查 smb.conf browseable 参数的设置,确保其值为 yes
2. 检查 NetBIOS 名称服务( nmbd 服务)是否正常运行,确保可以使用 NetBIOS 进行名称解析。
3. 检查 Windows 客户端的网络设置,确保可以正常访问 Samba 服务器。
7. Samba 服务器的安全优化

为了确保 Samba 文件服务器的安全性,可以采取以下一些优化措施:

  • 限制访问权限

    • 使用 valid users write list 参数限制允许访问共享的用户和具有写入权限的用户。
    • 避免使用默认的来宾用户( map to guest = Bad User ),防止未经授权的访问。
  • 更新和补丁管理

    • 定期更新 Samba 软件到最新版本,以修复已知的安全漏洞。
    • 保持操作系统的更新,确保系统的安全性。
  • 使用安全协议

    • 配置 Samba 使用安全的协议,如 SMB3,避免使用不安全的旧版本协议。
  • 监控和审计

    • 启用 Samba 的日志记录功能,记录用户的访问行为和操作,以便进行监控和审计。
    • 定期检查日志文件,及时发现异常活动。

以下是 Samba 服务器安全优化的流程图:

graph LR
    A[限制访问权限] --> B[更新和补丁管理]
    B --> C[使用安全协议]
    C --> D[监控和审计]
总结

通过以上步骤,你可以全面地配置、启动、访问和优化 Samba 文件服务器。从创建用户账户、启动服务、配置 smb.conf 参数,到访问共享、自动挂载和解决常见问题,以及进行安全优化,每个环节都至关重要。希望这些内容能帮助你顺利搭建和管理自己的 Samba 文件服务器,实现高效的文件共享和资源管理。

同时,在实际使用过程中,要根据具体的需求和环境进行灵活调整,不断优化服务器的性能和安全性。如果你在配置过程中遇到任何问题,可以参考上述常见问题及解决方法,或者查阅相关的文档和资料。祝你使用愉快!

使用雅可比椭圆函数为Reissner平面有限应变梁提供封闭形式解(Matlab代码实现)内容概要:本文介绍了如何使用雅可比椭圆函数为Reissner平面有限应变梁问题提供封闭形式的解析解,并结合Matlab代码实现该求解过程。该方法能够精确描述梁在大变形条件下的非线性力学行为,适用于几何非线性强、传统线性理论失效的工程场景。文中详细阐述了数学建模过程,包括基本假设、控制方程推导以及利用雅可比椭圆函数进行积分求解的技术路线,最后通过Matlab编程验证了解的准确性与有效性。; 适合人群:具备一定固体力学、非线性结构分析基础,熟悉Matlab编程的研究生、博士生及科研人员,尤其适合从事结构力学、航空航天、土木工程等领域中大变形问题研究的专业人士; 使用场景及目标:① 掌握Reissner梁理论在有限应变条件下的数学建模方法;② 学习雅可比椭圆函数在非线性微分方程求解中的实际应用技巧;③ 借助Matlab实现复杂力学问题的符号计算与数值验证,提升理论与仿真结合能力; 阅读建议:建议读者在学习前复习弹性力学与非线性梁理论基础知识,重点关注控制方程的推导逻辑与边界条件的处理方式,同时动手运行并调试所提供的Matlab代码,深入理解椭圆函数库的调用方法与结果可视化流程,以达到理论与实践深度融合的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值