samba服务、安装-smbpasswd工具、pdbedit工具、testparm工具

在Windows构建的网络生态里,各主机间的文件及打印资源共享,主要依赖微软专有的SMB/CIFS网络协议来达成。SMB(即Server Message Block,服务消息块)与CIFS(全称Common Internet File System,通用互联网文件系统),作为微软自研的私有协议,它们在促进系统间高效数据交换方面扮演着关键角色。

换言之,在基于Windows的网络体系中,主机间的文件和打印机资源分享,是通过微软特制的SMB/CIFS网络协议来实现的。SMB协议(服务消息块)与CIFS协议(通用互联网文件系统)均为微软的私有技术,它们在确保不同主机间顺畅的信息流通中发挥着核心作用。

在Samba项目诞生前,实现Linux/UNIX系统与Windows系统的直接通信颇具挑战。

Samba作为开源界备受推崇的项目之一,其核心贡献在于于Linux/UNIX环境中成功复现了微软的SMB/CIFS网络协议。这一壮举极大地简化了跨平台文件共享的流程。对于那些采用Windows、Linux/UNIX混合架构的企业而言,Samba的引入无异于一场及时雨,它巧妙地消除了不同操作系统间文件访问的障碍,促进了多平台环境下的高效协作。

换句话说,在Samba问世之前,Linux/UNIX系统与Windows系统间的直接沟通存在较大难度。而Samba通过在非Windows系统上实现SMB/CIFS协议,使得跨平台文件共享变得轻而易举。对于运行着Windows和Linux/UNIX混合环境的企业来说,Samba的使用能够有效解决文件互通的问题,大大提升了多系统共存场景下的工作便利性。

Samba主要由以下几个部分组成:

  1. smbd:处理所有SMB/CIFS网络连接,它监听TCP端口139和445,接收并响应来自客户端的请求。

(负责为客户 机提供服务器中共享资源(目录和文件等)的访问。)

  1. nmbd:处理NetBIOS名称解析,它监听UDP端口137和138。

(负责提供基于NetBIOS协议的主机名称解析 以便为Windows 网络中的主机提供查询服务。)

  1. winbindd:提供额外的功能,如用户和组管理,以及将NTLM或Kerberos身份验证转发到远程系统。

安装samba服务

对于Debian、Ubuntu和类似的基于APT的系统:

apt update
apt install samba samba-common-bin

对于RHEL、CentOS、Fedora和类似的基于YUM或DNF的系统:

sudo yum install samba samba-client samba-common

或者,在较新的系统上使用DNF:

sudo dnf install samba samba-client samba-common

安装后检查Samba版本:

smbd -V

配置Samba:

配置文件smb.conf通常位于/etc/samba/目录下。你可以编辑这个文件来定义共享目录、安全设置等。例如,要创建一个名为“shared”的共享目录,你可以在smb.conf中添加以下内容:

[public]
   comment = Public Documents
   path = /home/public
   browseable = yes
   read only = no
   guest ok = yes

这将创建一个名为"public"的共享目录,路径为"/home/public",任何人都可以浏览和读写这个目录。

然后,你需要重启Samba服务以使更改生效。

启动和管理Samba服务:

sudo systemctl start smbd
sudo systemctl enable smbd

检查Samba服务状态:

sudo systemctl status smbd

配置段 [global]、[homes]、[printers]

smb.conf 文件中存在三个特殊的配置段。

>[global] 全局设置:这部分配置项的内容对整个 Samba 服务器都有效。

>[homes]   宿主目录共享设置:设置Linux用户的默认共享,对应用户的宿主目录。当用户访 问服务器中与自己用户名同名的共享目录时,通过验证后将自动映射到该用户的宿主文件 夹中。

[printers]打印机共享设置:如果需要共享打印机设备,可以在这部分进行配置。

若需要在 smb.conf 文件中设置新的共享文件夹,只需要增加一段如“[myshare]” 开始的共享设 置即可,其中“myshare”为用户自定义的共享名。新的共享文件夹设置可以参考“[homes]”和“[printers]” 部分的内容。

Smb.conf 文件中常见的配置项及含义说明

配置项  

说明

workgroup

设置服务器所在的工作组名称.

server string

设置服务器的说明文字,用于描述Samba服务器.

security

设置服务器的安全级别,可设为以下三个值中的一个:user(需由本服务器验证用户名及密 码)、server(需指定另一台服务器来验证用户名及密码)、ads(由Windows域控制器验证用 户名及密码)。

log file

设置Samba服务器的日志文件,默认存放在/var/log/samba/目录下,表示将日志文件保存到 /var/log/samba/目录中,按每个客户机建立一个日志文件,其中“%m”变量表示客户端主机 名或IP地址。

passwd backup

设置共享账户文件的类型,默认使用tdbsam(TDB数据库文件)。若网络内拥有LDAP目录

认证,这里可以改用ldapsam数据库文件;另外,若要兼容旧版的Samba密码文件,也可以

将类型设为smbpasswd。

comment

设置对应共享目录的注释、说明信息.。

path

设置对应共享目录在服务器中的文件夹路径。

browseable

设置该共享目录在“网上邻居”中是否可见,设置为no时相当于隐藏共享目录。

guest ok

设置是否所有人都可以访问共享目录,与“public”配置项的作用相同。

writable

设置该共享目录是否可写,与“read only”配置项的作用相反。

smbpasswd工具

smbpasswd 的基本语法如下:

smbpasswd [选项] [用户名]

用户账户及其权限主要存储在 smbpasswd 数据库中。
 

列出所有的samba共享用户

smbpasswd -L

 如果 -L 选项不可用,你可能需要使用 pdbedit -L 来达到同样的目的。

需要管理员权限(root)   

但是,-L 选项并不是所有版本的 smbpasswd 都支持的。如果在你的系统上运行上述命令时遇到问题,可能是因为你的 Samba 版本不支持该选项。在这种情况下,你可以通过查询 Samba 的用户数据库(通常是 /etc/samba/smbpasswd)来获取用户列表,但这通常需要更复杂的操作,如使用 awk, cut 或其他文本处理工具来解析数据库文件。

另一个替代方法是查看 Samba 的配置文件 smb.conf,看是否在其中定义了特定的用户。但是,通常 smb.conf 并不会直接列出所有用户,它更多地用于定义共享目录、权限和其他设置。

如果 smbpasswd -L 不可用或没有返回你期望的结果,你可以尝试查看 Samba 的日志文件,或者使用 Samba 提供的其他管理工具,比如 smbclient,但这些方法通常不会直接列出用户列表。

添加新用户:

smbpasswd -a 用户名

这个命令会添加一个新用户到 Samba 的密码数据库中,并要求你输入两次密码以确认。 

修改用户密码:

smbpasswd -c 用户名

删除用户:

smbpasswd -x 用户名

显示用户状态:

smbpasswd -e 用户名

这个命令会显示指定用户的详细信息,包括是否被禁用、密码过期日期等。

smbpasswd参数

  1. Username: 用户名,这是你在 Samba 中识别用户的唯一标识。

  2. NT-Password: 这个字段通常会被星号 (*) 替代,表示有设置密码,但实际的密码不会显示出来,以保护安全性。

  3. LAN-Manager Password: 类似 NT-Password,如果设置了密码,这里也会显示为星号 (*)。

  4. Last password change: 上次更改密码的日期和时间。

  5. Account expires: 账户过期的日期和时间。如果设置为 "never",则表示账户永远不会过期。

  6. Last login: 最近一次成功登录的日期和时间。

  7. Login count: 自从账户创建以来的登录次数。

  8. Min. password age: 更改密码前必须等待的最短时间(天数)。如果设置为 "0",则表示没有最小密码年龄限制。

  9. Max. password age: 密码有效期的最大时间(天数)。如果设置为 "0" 或 "never",则表示密码永不过期。

  10. Password can change: 密码可以更改的时间范围。如果显示 "now",则表示密码可以立即更改。

  11. UID: 用户的 Unix UID(用户ID)。

  12. GID: 用户的 Unix GID(组ID)。

  13. Home directory: 用户的主目录。

  14. Shell: 用户的默认 shell。

  15. Account disabled: 如果账户被禁用,这里会显示 "Yes",否则为 "No"。

  16. Account locked: 如果账户被锁定,这里会显示 "Yes",否则为 "No"。

  17. Temporary account: 如果账户是临时账户,这里会显示 "Yes",否则为 "No"。

  18. Workstation trust account: 如果账户是工作站信任账户,这里会显示 "Yes",否则为 "No"。

  19. Interdomain trust account: 如果账户是跨域信任账户,这里会显示 "Yes",否则为 "No"。

pdbedit工具

pdbedit 是 Samba 套件中的一个命令行工具,用于管理和查询 Samba 的用户数据库(PassDB)。这个工具允许你添加、删除、修改和列出 Samba 用户账户,以及查看和设置账户的密码策略和属性。

pdbedit 的基本语法如下:

pdbedit [选项]...

常见的 pdbedit 选项包括:

  • -L--list:列出所有 Samba 用户账户。这是最常用的选项之一,可以用来查看当前系统中有多少 Samba 用户,以及他们的用户名、SID(安全标识符)、UID 和 GID 等信息。

  • -v--verbose:详细模式,提供更多输出信息。

  • -W--domain=DOM:指定操作的域,默认为本地机器的域。

  • -a--add=USER:添加一个新的 Samba 用户账户。

  • -u--username=USER:操作指定的 Samba 用户账户。

  • -x--delete=USER:删除一个 Samba 用户账户。

  • -t--trust-account:标记用户账户为信任账户,通常用于域控制器。

  • -m--max-login-timeout=SECONDS:设置最大登录超时时间(秒)。

  • -r--remove-max-login-timeout:移除最大登录超时时间。

列出所有samba共享用户

pdbedit -L

 要添加一个新的 Samba 用户 john,你可以运行:

sudo pdbedit -a -u john

查看某一个用户的信息

pdbedit -vL 用户名

删除samba用户

pdbedit -x -u 用户名

testparm工具

Samba服务器提供了一个配置文件检查工具——testparm程序,使用 testparm工具可以对smb.conf配置文件的正确性进行检查,如果发现有错误将会进行提醒。

testparm 命令的语法

testparm [选项] [配置文件]

常见的选项包括:

  • -s:这个选项强制 testparm 从标准输入读取配置数据,而不是从文件中读取。这对于调试和测试动态生成的配置文件很有用。
  • -h:显示帮助信息。
  • -L servername:设置 Samba 服务器的名字。
  • -v:详细模式,提供更多的输出信息。
  • -D:调试模式,提供调试级别的输出信息。

如果没有指定配置文件,testparm 将默认查找 /etc/samba/smb.conf 或者其他默认位置的配置文件。

例如:

sudo testparm

这将检查默认的 smb.conf 文件,并输出关于配置的信息,包括任何语法错误或警告。

如果配置文件不在默认位置,你可以指定配置文件的完整路径:

sudo testparm /path/to/your/smb.conf

testparm 的输出会包含 Samba 服务器的全局参数、共享设置、安全选项、用户和密码策略等信息,有助于确保 Samba 服务能够按照预期工作。

在修改了 smb.conf 文件后,使用 testparm 是一个良好的实践,可以避免不必要的服务启动失败或功能问题。如果 testparm 报告了错误,你应该根据输出的信息来修正配置文件,然后再尝试重启 Samba 服务。

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jingyu飞鸟

醒来觉得甚是爱你。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值