CentOS 7通过samba实现与Windows共享文件夹

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

一、安装samba

以管理员身份运行:

[user@localhost ~]$ sudo yum install samba

输出:

[sudo] user 的密码:
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.tuna.tsinghua.edu.cn
base                                                     | 3.6 kB     00:00     
extras                                                   | 2.9 kB     00:00     
updates                                                  | 2.9 kB     00:00     
正在解决依赖关系
--> 正在检查事务
---> 软件包 samba.x86_64.0.4.10.16-18.el7_9 将被 安装
--> 正在处理依赖关系 samba-libs = 4.10.16-18.el7_9,它被软件包 samba-4.10.16-18.el7_9.x86_64 需要
--> 正在处理依赖关系 samba-common-tools = 4.10.16-18.el7_9,它被软件包 samba-4.10.16-18.el7_9.x86_64 需要
--> 正在处理依赖关系 samba-common-libs = 4.10.16-18.el7_9,它被软件包 samba-4.10.16-18.el7_9.x86_64 需要
--> 正在处理依赖关系 samba-common = 4.10.16-18.el7_9,它被软件包 samba-4.10.16-18.el7_9.x86_64 需要
--> 正在处理依赖关系 samba-common = 4.10.16-18.el7_9,它被软件包 samba-4.10.16-18.el7_9.x86_64 需要
--> 正在处理依赖关系 samba-client-libs = 4.10.16-18.el7_9,它被软件包 samba-4.10.16-18.el7_9.x86_64 需要
--> 正在处理依赖关系 libwbclient = 4.10.16-18.el7_9,它被软件包 samba-4.10.16-18.el7_9.x86_64 需要
--> 正在处理依赖关系 libwbclient = 4.10.16-18.el7_9,它被软件包 samba-4.10.16-18.el7_9.x86_64 需要
--> 正在处理依赖关系 libxattr-tdb-samba4.so(SAMBA_4.10.16)(64bit),它被软件包 samba-4.10.16-18.el7_9.x86_64 需要
--> 正在处理依赖关系 libxattr-tdb-samba4.so()(64bit),它被软件包 samba-4.10.16-18.el7_9.x86_64 需要
--> 正在检查事务
---> 软件包 libwbclient.x86_64.0.4.10.16-5.el7 将被 升级
--> 正在处理依赖关系 libwbclient = 4.10.16-5.el7,它被软件包 libsmbclient-4.10.16-5.el7.x86_64 需要
--> 正在处理依赖关系 libwbclient = 4.10.16-5.el7,它被软件包 samba-client-4.10.16-5.el7.x86_64 需要
---> 软件包 libwbclient.x86_64.0.4.10.16-18.el7_9 将被 更新
---> 软件包 samba-client-libs.x86_64.0.4.10.16-5.el7 将被 升级
---> 软件包 samba-client-libs.x86_64.0.4.10.16-18.el7_9 将被 更新
---> 软件包 samba-common.noarch.0.4.10.16-5.el7 将被 升级
---> 软件包 samba-common.noarch.0.4.10.16-18.el7_9 将被 更新
---> 软件包 samba-common-libs.x86_64.0.4.10.16-5.el7 将被 升级
---> 软件包 samba-common-libs.x86_64.0.4.10.16-18.el7_9 将被 更新
---> 软件包 samba-common-tools.x86_64.0.4.10.16-18.el7_9 将被 安装
---> 软件包 samba-libs.x86_64.0.4.10.16-18.el7_9 将被 安装
--> 正在处理依赖关系 libpytalloc-util.so.2(PYTALLOC_UTIL_2.1.9)(64bit),它被软件包 samba-libs-4.10.16-18.el7_9.x86_64 需要
--> 正在处理依赖关系 libpytalloc-util.so.2(PYTALLOC_UTIL_2.1.6)(64bit),它被软件包 samba-libs-4.10.16-18.el7_9.x86_64 需要
--> 正在处理依赖关系 libpytalloc-util.so.2(PYTALLOC_UTIL_2.0.6)(64bit),它被软件包 samba-libs-4.10.16-18.el7_9.x86_64 需要
--> 正在处理依赖关系 libpytalloc-util.so.2()(64bit),它被软件包 samba-libs-4.10.16-18.el7_9.x86_64 需要
--> 正在处理依赖关系 libpyldb-util.so.1()(64bit),它被软件包 samba-libs-4.10.16-18.el7_9.x86_64 需要
--> 正在检查事务
---> 软件包 libsmbclient.x86_64.0.4.10.16-5.el7 将被 升级
---> 软件包 libsmbclient.x86_64.0.4.10.16-18.el7_9 将被 更新
---> 软件包 pyldb.x86_64.0.1.5.4-2.el7 将被 安装
--> 正在处理依赖关系 libldb(x86-64) = 1.5.4-2.el7,它被软件包 pyldb-1.5.4-2.el7.x86_64 需要
--> 正在处理依赖关系 python-tdb(x86-64) >= 1.3.18,它被软件包 pyldb-1.5.4-2.el7.x86_64 需要
---> 软件包 pytalloc.x86_64.0.2.1.16-1.el7 将被 安装
---> 软件包 samba-client.x86_64.0.4.10.16-5.el7 将被 升级
---> 软件包 samba-client.x86_64.0.4.10.16-18.el7_9 将被 更新
--> 正在检查事务
---> 软件包 libldb.x86_64.0.1.5.4-1.el7 将被 升级
---> 软件包 libldb.x86_64.0.1.5.4-2.el7 将被 更新
---> 软件包 python-tdb.x86_64.0.1.3.18-1.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

================================================================================
 Package                 架构        版本                    源            大小
================================================================================
正在安装:
 samba                   x86_64      4.10.16-18.el7_9        updates      720 k
为依赖而安装:
 pyldb                   x86_64      1.5.4-2.el7             updates       49 k
 pytalloc                x86_64      2.1.16-1.el7            base          18 k
 python-tdb              x86_64      1.3.18-1.el7            base          20 k
 samba-common-tools      x86_64      4.10.16-18.el7_9        updates      466 k
 samba-libs              x86_64      4.10.16-18.el7_9        updates      271 k
为依赖而更新:
 libldb                  x86_64      1.5.4-2.el7             updates      149 k
 libsmbclient            x86_64      4.10.16-18.el7_9        updates      146 k
 libwbclient             x86_64      4.10.16-18.el7_9        updates      116 k
 samba-client            x86_64      4.10.16-18.el7_9        updates      646 k
 samba-client-libs       x86_64      4.10.16-18.el7_9        updates      5.0 M
 samba-common            noarch      4.10.16-18.el7_9        updates      216 k
 samba-common-libs       x86_64      4.10.16-18.el7_9        updates      182 k

事务概要
================================================================================
安装  1 软件包 (+5 依赖软件包)
升级           ( 7 依赖软件包)

总计:7.9 M
总下载量:1.5 M
Is this ok [y/d/N]: y
Downloading packages:
(1/6): pyldb-1.5.4-2.el7.x86_64.rpm                        |  49 kB   00:00     
(2/6): python-tdb-1.3.18-1.el7.x86_64.rpm                  |  20 kB   00:00     
(3/6): pytalloc-2.1.16-1.el7.x86_64.rpm                    |  18 kB   00:00     
(4/6): samba-4.10.16-18.el7_9.x86_64.rpm                   | 720 kB   00:00     
(5/6): samba-common-tools-4.10.16-18.el7_9.x86_64.rpm      | 466 kB   00:00     
(6/6): samba-libs-4.10.16-18.el7_9.x86_64.rpm              | 271 kB   00:00     
--------------------------------------------------------------------------------
总计                                               9.3 MB/s | 1.5 MB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在更新    : libldb-1.5.4-2.el7.x86_64                                  1/20 
  正在更新    : samba-common-4.10.16-18.el7_9.noarch                       2/20 
  正在更新    : libwbclient-4.10.16-18.el7_9.x86_64                        3/20 
  正在更新    : samba-client-libs-4.10.16-18.el7_9.x86_64                  4/20 
  正在更新    : samba-common-libs-4.10.16-18.el7_9.x86_64                  5/20 
  正在更新    : libsmbclient-4.10.16-18.el7_9.x86_64                       6/20 
  正在安装    : python-tdb-1.3.18-1.el7.x86_64                             7/20 
  正在安装    : pyldb-1.5.4-2.el7.x86_64                                   8/20 
  正在安装    : pytalloc-2.1.16-1.el7.x86_64                               9/20 
  正在安装    : samba-libs-4.10.16-18.el7_9.x86_64                        10/20 
  正在安装    : samba-common-tools-4.10.16-18.el7_9.x86_64                11/20 
  正在安装    : samba-4.10.16-18.el7_9.x86_64                             12/20 
  正在更新    : samba-client-4.10.16-18.el7_9.x86_64                      13/20 
  清理        : samba-client-4.10.16-5.el7.x86_64                         14/20 
  清理        : libsmbclient-4.10.16-5.el7.x86_64                         15/20 
  清理        : libwbclient-4.10.16-5.el7.x86_64                          16/20 
  清理        : samba-client-libs-4.10.16-5.el7.x86_64                    17/20 
  清理        : samba-common-libs-4.10.16-5.el7.x86_64                    18/20 
  清理        : samba-common-4.10.16-5.el7.noarch                         19/20 
  清理        : libldb-1.5.4-1.el7.x86_64                                 20/20 
  验证中      : samba-common-libs-4.10.16-18.el7_9.x86_64                  1/20 
  验证中      : samba-client-4.10.16-18.el7_9.x86_64                       2/20 
  验证中      : libldb-1.5.4-2.el7.x86_64                                  3/20 
  验证中      : samba-4.10.16-18.el7_9.x86_64                              4/20 
  验证中      : samba-client-libs-4.10.16-18.el7_9.x86_64                  5/20 
  验证中      : libsmbclient-4.10.16-18.el7_9.x86_64                       6/20 
  验证中      : pyldb-1.5.4-2.el7.x86_64                                   7/20 
  验证中      : samba-common-tools-4.10.16-18.el7_9.x86_64                 8/20 
  验证中      : samba-common-4.10.16-18.el7_9.noarch                       9/20 
  验证中      : pytalloc-2.1.16-1.el7.x86_64                              10/20 
  验证中      : samba-libs-4.10.16-18.el7_9.x86_64                        11/20 
  验证中      : libwbclient-4.10.16-18.el7_9.x86_64                       12/20 
  验证中      : python-tdb-1.3.18-1.el7.x86_64                            13/20 
  验证中      : samba-client-libs-4.10.16-5.el7.x86_64                    14/20 
  验证中      : libldb-1.5.4-1.el7.x86_64                                 15/20 
  验证中      : libsmbclient-4.10.16-5.el7.x86_64                         16/20 
  验证中      : samba-common-4.10.16-5.el7.noarch                         17/20 
  验证中      : libwbclient-4.10.16-5.el7.x86_64                          18/20 
  验证中      : samba-client-4.10.16-5.el7.x86_64                         19/20 
  验证中      : samba-common-libs-4.10.16-5.el7.x86_64                    20/20 

已安装:
  samba.x86_64 0:4.10.16-18.el7_9                                               

作为依赖被安装:
  pyldb.x86_64 0:1.5.4-2.el7                                                    
  pytalloc.x86_64 0:2.1.16-1.el7                                                
  python-tdb.x86_64 0:1.3.18-1.el7                                              
  samba-common-tools.x86_64 0:4.10.16-18.el7_9                                  
  samba-libs.x86_64 0:4.10.16-18.el7_9                                          

作为依赖被升级:
  libldb.x86_64 0:1.5.4-2.el7                                                   
  libsmbclient.x86_64 0:4.10.16-18.el7_9                                        
  libwbclient.x86_64 0:4.10.16-18.el7_9                                         
  samba-client.x86_64 0:4.10.16-18.el7_9                                        
  samba-client-libs.x86_64 0:4.10.16-18.el7_9                                   
  samba-common.noarch 0:4.10.16-18.el7_9                                        
  samba-common-libs.x86_64 0:4.10.16-18.el7_9                                   

完毕!

二、配置samba

samba配置文件位于/etc/samba/smb.conf
smb.conf文件含义如下:

# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
    workgroup = SAMBA   #samba的工作组,设置成 Windows 的工作组
    security = user     #安全选项,可以是 share|user|server|domain,安全级别递增
    passdb backend = tdbsam #定义口令类型,存在如下3中口令校验
    #smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码
    #tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
    #ldapsam:基于LDAP服务进行账户验证
    printing = cups
    printcap name = cups
    load printers = yes #设置在Samba服务启动时是否共享打印机设备
    cups options = raw #打印机的选项

[homes]   #共享默认会将用户的主目录共享, 这是不安全的, 可以将其注释
    comment = Home Directories
    valid users = %S, %D%w%S
    browseable = no #指定共享信息是否在"网上邻居"中可见
    writable = yes #定义是否可以执行写入操作,与"read only"相反
    inherit acls = yes

[printers]   #打印机共享
    comment = All Printers
    path = /var/tmp #共享文件的实际路径(重要)
    printable = yes
    create mask = 0600
    browseable = no
    guest ok = no #是否所有人可见,等同于"public"参数

[print$]
    comment = Printer Drivers
    path = /var/lib/samba/drivers
    write list = root
    create mask = 0664
    directory mask = 0775

[rootdir]   #自定义的共享文件夹
    comment = share some files
    path = /home/samba/     #共享的路径
    public = no             #关闭"所有人可见"
    writable = yes          #允许写入操作

根据需要修改配置文件对应项(修改时去掉#及其后面的注释)。

三、samba命令

pdbedit命令用于管理SMB服务程序的账户信息数据库,格式为pdbedit [选项] 账户。pdbedit命令中使用的参数以及作用如下所示:

命令作用
pdbedit -a 用户名新建Samba账户。
pdbedit -r 用户名修改Samba账户。
pdbedit -x 用户名删除Samba账户。
pdbedit -L列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit -Lv列出Samba用户列表详细信息。
pdbedit -c “[D]” -u 用户名暂停该Samba用户账号。
pdbedit -c “[]” -u 用户名恢复该Samba用户账号。

详细命令如下:

参数详细参数作用
-a–create新建samba用户
-r–modify修改samba用户
-x–delete删除samba用户
-L–list列出全部samba用户,读取passdb.tdb数据库文件
-v–verbose显示详细信息
-c–account-control=STRING账户控制值
-w–smbpasswd-style以smbpasswd格式输出
-u–user=USER使用的用户
-N–account-desc=STRING设置账户描述
-f–fullname=STRING设置全名
-h–homedir=STRING设置家目录
-D–drive=STRING设置家设备
-S–script=STRING设置登陆脚本
-p–profile=STRING设置配置文件路径
-I–domain=STRING设置用户域名
-U–user SID=STRING设置用户SID或RID
-M–machine SID=STRING设置设备SID或RID
-m–machine账户是一个设备账户
-b–backend=STRING使用不同的passdb作为默认后端
-i–import=STRING指定后段导入用户账户
-e–export=STRING导出用户账户到指定后端
–policies-reset恢复默认策略
-P–account-policy=STRING帐户策略的值(如最大密码有效期)
-C–value=LONG设置账号策略值
–force-initialized-passwords强制初始化passdb后端
-z–bad-password-count-reset重置错误密码
-Z–logon-hours-reset重置登陆时间
–time-format=STRING时间参数的格式
-t–password-from-stdin从标准输入获取密码
-K–kickoff-time=STRING设置开始时间
–set-nt-hash=STRING从nt-hash设置密码
-d–debuglevel=DEBUGLEVEL设置debug级别
-s–configfile=CONFIGFILE使用备用配置文件
-l–log-basename=LOGFILEBASE设置日志文件的基本名称
-V–version输出版本号
–option=name=value从命令行设置smb.conf选项
-?–help显示帮助信息
–usage显示简要的使用信息

四、创建用户

例:创建名为user的samba用户。
需用root账户运行以下命令:

[root@localhost user]# useradd user
[root@localhost user]# pdbedit -a user

设置完密码之后,输出:

new password:
retype new password:
Unix username:        user
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-3493698449-1122089174-3843279965-1001
Primary Group SID:    S-1-5-21-3493698449-1122089174-3843279965-513
Full Name:            user
Home Directory:       \\localhost\user
HomeDir Drive:        
Logon Script:         
Profile Path:         \\localhost\user\profile
Domain:               LOCALHOST
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          三, 06 2月 2036 23:06:39 CST
Kickoff time:         三, 06 2月 2036 23:06:39 CST
Password last set:    五, 03 6月 2022 12:15:23 CST
Password can change:  五, 03 6月 2022 12:15:23 CST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

五、设置SELinux安全上下文

创建用于共享资源的文件目录不仅要考虑到文件读写权限的问题,而且由于/home目录是系统中普通用户的家目录, 因此还需要考虑应用于该目录的SELinux安全上下文所带来的限制。 Samba服务程序配置文件中的注释就有关于SELinux安全上下文策略的说明, 我们只需按照过滤信息中有关SELinux安全上下文策略中的说明中给的值进行修改即可。 修改完毕后执行restorecon命令,让应用于目录的新SELinux安全上下文立即生效。

[root@localhost user]# semanage fcontext -a -t samba_share_t /home/user
[root@localhost user]# restorecon -Rv /home/user

输出:

restorecon reset /home/user context unconfined_u:object_r:user_home_dir_t:s0->unconfined_u:object_r:samba_share_t:s0

设置SELinux服务与策略,使其允许通过Samba服务程序访问普通用户家目录。执行getsebool命令, 筛选出所有与Samba服务程序相关的SELinux域策略。

[root@localhost user]# getsebool -a | grep samba

输出:

samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> on
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_load_libgfapi --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
tmpreaper_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off

根据策略的名称(和经验)选择出正确的策略条目进行开启。

[root@localhost user]# setsebool -P samba_enable_home_dirs on

六、关闭防火墙

1、打开“防火墙”。
打开“防火墙”
2、在“配置”处选择“永久”。
修改配置
3勾选"samba",重启系统。
samba防火墙设置

七、Samba 服务管理

1、启动Samba服务

[root@localhost user]# systemctl start smb

2、停止Samba服务

[root@localhost user]# systemctl stop smb

3、查看Samba服务

[root@localhost user]# systemctl status smb

4、开机自启Samba服务

[root@localhost user]# systemctl enable smb

5、停止开机自启Samba服务

[root@localhost user]# systemctl disable smb

八、Windows 访问共享目录

直接Win + R,或者在此电脑的地址栏里,输入\192.168.100.100,也就是你的 CentOS 主机地址,会弹出登陆窗口,输入刚刚设置的用户名密码就可以访问。注意这里输入的密码是samba设置的密码,不是登录 CentOS 系统的密码。因为在CentOS 7系统中,Samba服务程序使用的果然是独立的账户信息数据库。 所以,即便在 CentOS 系统中有一个samba账户,Samba服务程序使用的账户信息数据库中也有一个同名的samba账户, 大家也一定要弄清楚它们各自所对应的密码。

如果 Windows 下访问 Linux 下共享目录 , 提示没有权限或一直没有弹出登录窗口。

  • 确保 CentOS 防火墙配置正确或者是开放共享目录权限
  • 确保 Samba 服务器配置文件 smb.conf 设置没有问题
  • 确保 SELinux配置正确
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 CentOS 中访问 Windows 共享文件夹,您可以按照以下步骤进行设置: 1. 在 Windows 上设置共享文件夹: - 在 Windows 上选择要共享文件夹,并右键单击它。 - 选择 "属性",然后转到 "共享" 选项卡。 - 点击 "共享" 按钮,选择共享名称,并设置共享权限。 2. 在 CentOS 上安装并配置 Samba 客户端: - 打开终端,并使用以下命令安装 Samba 客户端: ``` sudo yum install samba-client ``` - 安装完成后,编辑 Samba 配置文件 `/etc/samba/smb.conf`: ``` sudo vi /etc/samba/smb.conf ``` - 在文件的末尾添加以下内容: ``` [shared_folder] path = //windows_ip/shared_folder_name guest ok = yes read only = no ``` 将 `windows_ip` 替换为 Windows 计算机的 IP 地址,`shared_folder_name` 替换为在 Windows 上设置的共享文件夹名称。 - 保存并关闭文件。 3. 挂载 Windows 共享文件夹CentOS: - 创建一个用于挂载的目录。在终端中执行以下命令: ``` sudo mkdir /mnt/windows_share ``` - 使用以下命令将共享文件夹挂载到 CentOS: ``` sudo mount -t cifs //windows_ip/shared_folder_name /mnt/windows_share -o username=windows_username,password=windows_password ``` 将 `windows_ip` 替换为 Windows 计算机的 IP 地址,`shared_folder_name` 替换为在 Windows 上设置的共享文件夹名称,`windows_username` 和 `windows_password` 替换为您在 Windows 上的登录凭据。 4. 检查挂载是否成功: - 运行以下命令检查是否成功挂载共享文件夹: ``` ls /mnt/windows_share ``` 如果成功挂载,您应该能够看到共享文件夹中的内容。 现在,您可以在 CentOS 上通过 `/mnt/windows_share` 目录访问 Windows 共享文件夹中的文件。 希望这些步骤对您有所帮助!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值