一、简单介绍

NFS网络文件系统是不能跨操作系统使用的,至少说现在跨windows和linux之间完成文件系统级的共享nfs是无法完成的,据说在上个世纪90年度的时候,在澳大利亚有一个大学生就面临这样的现状,于是他决定造一个能跨多种平台实现文件共享的文件系统级的服务。在当时各windows主机之间所能实现的共享方式就是smb协议(Service Message Block),现在我们通常称之为CIFS协议。但是windows是闭源的,有些功能需要在内核中实现,我们不可能知道windows的源码的,于是这个作者就从linux开始解决问题。它需要实现可以基于NetBIOS协议解析主机名称、实现smb协议、可以兼容windows活动目录,于是samba就诞生了,它的作者是Andrew Tridgell

二、程序环境

1. 相关程序包

  • samba:服务端程序包
  • samba-client:客户端程序
  • samba-dc:使samba称为域控的程序包
  • samba-python:与python交互的必要程序包
  • samba-python-test:与python交互的必要程序包
  • samba-test:测试套件
  • samba-test-libs:测试套件
  • samba-vfs-glusterfs:与glusterfs交互的程序包
  • samba-winbind:samba加入域的重要程序包
  • samba-winbind-clients:samba加入域的重要程序包
  • samba-winbind-krb5-locator:samba加入域的重要程序包
  • samba-winbind-modules:samba加入域的重要程序包

2. 服务端环境文件

  • /etc/sanba/smb.conf:主配置文件
  • /usr/sbin/nmbd:主程序文件
  • /usr/sbin/smbd:主程序文件
  • /usr/lib/systemd/system/nmb.service:NetBIOS协议unit文件
  • /usr/lib/systemd/system/smb.service:SMB/CIFG协议unit文件
  • /usr/lib64/samba/vfs:各种文件系统的模块文件

3. 服务端口

  • UDP:137、138
  • TCP:139、445

4. 主配文件中的指令

workgroup:工作组名称
server string:光标悬浮提示信息
netbios name:网络中查看的主机名称
interfaces:监听的网卡接口或ip地址,如果只给网卡表示监听这个网卡的所有地址
hosts allow:白名单
hosts deny:黑名单
log file:日志文件
max log size:日志最大滚动阈值,默认单位为KB
security:认证用户时靠samba主机自己的本地用户认证的
passdb backend:存放密码格式及位置
wins support:加速名称解析的机制
wins server:写明wins server的ip地址
wins proxy:代理,主要跨网段时使用
load printers:是否启用打印机驱动

三、共享目录配置

共享目录配置需要自行定义一个配置段

[shared_fs]
comment:注释信息
path:当前共享的文件系统路径
browseable:是否可被其他用户查看
guest ok:是否可被来宾用户访问
public:是否公开所有用户
writable:是否可写
write list:定义拥有写权限的用户列表,可是直接给定用户名称、@组名、+组名

四、命令

1. smbclient命令

通过命令行链接samba服务,类似lftp
命令格式1:smbclient [option]

-L:指定远程主机地址
-U:指定用户名称

命令格式2:smbclient //IP//Sharename [option]

-L:指定远程主机地址
-U:指定用户名称

2. mount.cifs命令

如果没有这个命令可以尝试安装cifs-utils

3. smbpasswd命令

访问samba的用户必须是在/etc/passwd中存在的,但是其密码不会查看/etc/shadow文件,需要使用smbpasswd命令为其设置专用于访问samba的密码
命令格式:smbpasswd [option] USER_NAME

-a:第一次为用户设定密码使用-a选项,不加-a表示改密码
-x:删除指定用户
-d:临时禁用某个用户
-e:取消禁用某个用户
-n:设定用户使用空密码

4. pdbedit命令

命令格式:pdbedit [option]

-L:列出samba服务中的所有用户
-a:添加新用户
-x:删除指定用户
-u:指定用户名称
-v:显示用户详细信息

5. smbstatus命令

命令格式:smbstatus [option]

-v:显示状态信息
-b:显示简要信息