Samba 配置手册

在 CentOS 7 中使用 yum 安装 Samba

yum install -y samba samba-client

Samba 的配置文件在/etc/samba/smb.conf

配置说明如下:

# 定义全局的配置
[global]
        # 可选设置。让你使用另一个配置文件来覆盖默认的配置文件。如果文件不存在,则该设置无效
        # 这个设置可以使 Samba 的配置更灵活,能够让一台 Samba 服务器模拟多台不同配置的服务器
        # 比如:让 PC1(主机名)这台电脑在访问共享文档时,使用 Samba 服务器上 PC1 它自己的配置文件,那么先在 /etc/samba/ 下为 PC1 建立一个名为 smb.conf.pc1 的文件,然后在默认的 smb.conf 配置文件中加入 config file = /etc/samba/smb.conf.%m 这条内容。之后,当 PC1 访问 Samba 服务器的共享文档时,本该生效的 smb.conf 就被换成 smb.conf.pc1。而其他机器访问 Samba 服务器则还是使用 smb.conf 里的配置
        # 如果没有此方面需求,可以去掉这条设置内容
        #config file = /etc/samba/smb.conf.%m

        # 设定 Samba 所要加入的工作组或域。默认配置的工作组是 MYGROUP,而 Windows 下的工作组默认为WORKGROUP,因此要改为和 Windows 的工作组一样,才能顺利访问到共享文件
        workgroup = WORKGROUP
        # 设定注释,%v 表示显示 Samba 的版本号
        server string = Samba Server %v
        # 设置出现在“网上邻居”中的主机名,注意 netbios name 和 workgroup 不要设置成一样的内容
        netbios name = CentOS_Chai_SMB

        # 设置允许访问的主机
        # 可以用一个IP表示,也可以用一个网段表示
        # 以下表示允许来自 192.168.1.* 的主机连接
        #hosts allow = 192.168.1.*

        # 开启匿名访问
        map to guest = bad user

        # 日志选项
        # 设置日志文件存储位置及名称,%m 指的是主机名,表示对每台访问 Samba 的机器都单独记录一个日志文件
        log file = /var/log/samba/log.%m
        # 设置 Samba 日志文件的最大容量,单位为KB,0代表不限制
        max log size = 512

        # 共享级别:这里指定 Samba 的安全等级,主要有三种
        # user:由提供服务的 samba 服务器负责检查账户及密码,认证用户来源为 Samba 服务器本机(默认)
        # share:用户不需要账户及密码即可登录 Samba 服务器,,属于匿名访问
        # server:检查账户及密码的工作由另一台 Windows 或 Samba 服务器负责,认证用户来源为另一台 Samba 服务器或 Windows 服务器
        security = user

        # 建立安全账户管理后台
        # Samba 有三种用户后台:smbpasswd、tdbsam 和 ldapsam
        # tdbsam:使用一个 .db 的文件来存储用户信息,使用 pdbedit 命令来管理用户,要添加或管理的用户必须先是系统用户(默认)
        # smbpasswd:该方式是使用 smbpasswd 命令给系统用户设置一个 Samba 密码,客户端就用此密码访问 Samba 资源。新版 Samba 的密码验证方式已使用 tdbsam 取代 smbpasswd 了,但如果要继续使用 smbpasswd 也是可以的(不推荐)
        # ldapsam:基于 LDAP 账户管理方式验证用户
        passdb backend = tdbsam

        # 打印选项,设置是否在启动 Samba 时共享打印机
        load printers = no
        # 通用打印选项
        #cups options = raw

# 该部分内容是共享用户自己的家目录,也就是说,当用户登录到 Samba 服务器上时,实际上是进入到了该用户的家目录,用户登陆后,共享名不是 homes 而是用户自己的标识符,对于单纯的文件共享的环境来说,这部分可以注视掉。
#[homes]
        #comment = Home Directories
        #valid users = %S, %D%w%S
        #browseable = No
        #read only = No
        #writable = Yes

# 该部分内容为设置打印机共享
#[printers]
        #comment = All Printers
        #path = /var/tmp
        #browseable = No
        #guest ok = No
        #writable = No
        #printable = No

# 设置一个共享目录
[smb]
        # 定义该目录的描述信息
        comment = CentOS Share
        # 共享目录的路径
        path = /usr/share/nginx/smb
        # 是否允许 guest 账户访问
        public = yes
        # 是否允许用户写入或者创建文件
        writable = No
        # 白名单,指定能够进入此资源目录的特定用户,使用逗号隔开,如果是组的话,使用 @ 指明
        valid users = @smb,@guest
        # 允许写入该共享的用户
        write list = smber
        # 指明新建立的文件的属性
        create mask = 0755
        # 指明新建立的目录的属性
        directory mask = 0755

使用 tdbsam 指令来管理帐号:

pdbedit -a username    # 新建 Samba 用户账号
pdbedit -x username    # 删除 Samba 用户账号
pdbedit -v username    # 显示该用户账号详细信息
pdbedit -L             # 列出 Samba 用户列表,读取 passdb.tdb 数据库文件
pdbedit -Lv            # 列出 Samba 用户列表详细信息
pdbedit -c “[D]” -u username # 暂停该 Samba 用户账号
pdbedit -c “[]” -u username # 恢复该 Samba 用户账号

CentOS 7 中,设置了passdb backend = tdbsam的 Samba 服务,其 passwd.db 文件存放在/var/lib/samba/private目录下,而查看 .tdb 文件需要安装必要的工具:

yum install -y tdb-tools
tdbdump *.tdb

如果开启了 SELinux,可以考虑关闭它,以便 Samba 可以正常使用:

# 关闭SELinux
setenforce 0
# 开启SELinux
setenforce 1

启动 Samba 服务,并设置开机自启动:

# Samba 的服务名并不叫做 samba,而是 smb
systemctl start smb.service

# 在 Samba 3.0.7 以后的版本,nmb 不会随着 smb 启动,nmb 服务跟 NetBIOS Name 名称解析有关,没有启动会造成Windows 端找不到 Linux 主机
systemctl start nmb.service

# 设置 smb 和 nmb 开机自启动
systemctl enable smb.service
systemctl enable nmb.service

# 查看 smb 和 nmb 的进程
systemctl status smb nmb

开启 Samba 需要的防火墙端口:

firewall-cmd --add-port=137/tcp --permanent
firewall-cmd --add-port=138/tcp --permanent
firewall-cmd --add-port=139/tcp --permanent
firewall-cmd --add-port=445/tcp --permanent
firewall-cmd --add-port=901/tcp --permanent
firewall-cmd --reload

Linux 访问 Samba 共享文档

查看 Samba 服务器上的共享资料

smbclient –L //Samba服务器的ip地址 -U Samba用户名

-L即为 list 的含义,-U是 user 的意思,如果 Samba 服务器是无密码访问的话,可以省略-U Samba用户名,提示要输入 password 时直接回车即可。

登陆 Samba 服务器

smbclient //Samba服务器的ip地址 -U Samba用户名

执行 smbclient 命令成功后,进入 smbclient 环境,出现提示符smb:\>

有许多命令和 ftp 命令相似,如cdlcdgetmegtputmput 等。也可以通过输入?来查看在 smb 命令行可用的所有命令。

另外,Samba 服务器共享出来的文档,还可以在 Linux 客户端进行挂载,需要用到mount命令:

mount -t cifs -l //Samba服务器的ip地址 /挂载名

PC 访问 Samba 共享文档

在 Windows 下通过\\ip地址的方式访问其它文件资源时,一般第一次需要输入密码,以后就无需输入密码直接登陆了。

如果要切换到其它 Samba 用户该怎么办?可以在windows下执行如下指令实现:

首先通过开始->运行->cmd输入net use命令查看现有的连接,然后执行net use \\Samba服务器IP地址或者netbios名称\ipc$ /del,删除 Samba 服务器已经建立的连接。也可以执行net use * /del命令将现在所有的连接全部删除。

最后,再次执行\\ip地址时,就又可以切换用户了。

上一篇 下一篇

 

© 2017 老柴的宅. Powered by Chaishiwei.com. 鄂ICP备11006811号