虚拟机 Centos Linux 安装samba(smb)

最近一直想在centos上搭建samba服务,使得可以在windows系统上访问centos上面的文件,于是就搜索网上的资源,直到今天晚上找到一篇非常详细的博客介绍了搭建过程,主要包括下面几个步骤总结一下:

1.环境准备: 在虚拟机上安装有Centos7

2.安装软件:

2.1 确保 Windows 和 Linux 系统在同一工作组:cmd输入net config workstation, 显示 工作站正运行于 NetBT_Tcpip_{0E9B6330-06FD-4A08-9E3C-C83BC2039251} (005056C00001)

2.2 安装samba:在root用户下输入 yum install samba samba-client samba-swat

2.3 检查是否安装成功: 输入rpm -qa | grep samba 验证是否安装

2.4 Samba文件配置:① 先cp etc/samba/smb.conf etc/samba/smb2.conf 备份文件;② 输入 vim /etc/samba/smb.conf,对smb.conf文件进行配置,先删除所有内容,然后配置如下:

[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = MySambaServer
security = user
map to guest = bad user
dns proxy = no

[data]
path = /home/data/
browsable =yes
writable = yes
guest ok = yes
read only = no

配置的内容注释如下:

[global]
workgroup = WORKGROUP             # 设定 SambaServer 所要加入的工作组或者域,需要与 Windows 工作组一致
server string = Samba Server %v   # 设定 SambaServer 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号
netbios name = centos-8           # 设置 SambaServer 的 NetBIOS 名称。如果不填则默认会使用该服务器的DNS名称的第一部分。netbios name和workgroup名字不要设置成一样了

security = user                   # 设置用户访问 SambaServer 的验证方式,一共有四种验证方式
                                  # 1. share:用户访问 SambaServer 不需要提供用户名和口令, 安全性能较低。
                                  # 2. user:SambaServer 共享目录只能被授权的用户访问,由 SambaServer 负责检查账号和密码的正确性。账号和密码要在本 SambaServer                     中建立。
                                  # 3. server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的                      Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用                      用户级安全模式作为替代的方式。
                                  # 4. domain:域安全级别,使用主域控制器(PDC)来完成认证。


map to guest = bad user           # 将匿名用户映射为nobody用户,这个是Samba4.0之前版本的 security=share,4.0之后改成了 security 和 map to guest
dns proxy = no                    # 设置 SambaServer 是否开启dns代理服务

[Anonymous]              # 共享文件夹配置 windows 显示 “Anonymous” 文件名
path = /srv/samba/shared          # centos 服务器中,共享目录路径
                                  # path用来指定共享目录的路径。可以用%u、%m这样的宏来代替路径里的unix用户和客户机的Netbios名,用宏表示主要用于[homes]共享域。                     例如:如果我们不打算用home段做为客户的共享,而是在/home/share/下为每个Linux用户以他的用户名建个目录,作为他的共享目录,                     这样path就可以写成:path = /home/share/%u; 。用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定                     要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用户来划分目录,而是以客户机来划分目录,为网络上每台可以访问                     samba的机器都各自建个以它的netbios名的路径,作为不同机器的共享资源,就可以这样写:path = /home/share/%m
browsable =yes                     # 允许该目录被显示在系统资源中
writable = yes                     # 用来指定该共享路径是否可写,是否是只读,如果有read only的配置,二者冲突会以 writable 为准
guest ok = yes                     # 意义同“public”,公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)
read only = no                     # 以只读方式共享,当与 writable 发生冲突时以 writable 为准

3.从 Windows 机器访问 Samba 共享

cmd输入 \\MYSAMBASERVER 进行访问,这里的MYSAMBASERVER 就是 smb.conf配置文件里的netbios name = MySambaServer


按照博客的步骤虽然安装了samba服务,但是在windows系统中只能显示linux中的目录,而看不到其中的文件,而且复制文件到linux中也不行,解决办法如下:

1.在命令行输入:

chmod -R 777 /home/data     // 这里的/home/data就是共享的路径

2.进入到/etc/sysconfig/selinux中,编辑config,将SELINUX = enforcing 改为 disabled

3.重启虚拟机

此时如果想要用VS Code编辑虚拟机的文件的话,还需要对共享的文件夹右键选择 映射网络驱动器,选择一个驱动器比如A,就会生成一个类似D盘的这个空间,然后vs code可以编写这个空间内的文件

posted @ 2022-10-12 15:51  轩邈、  阅读(325)  评论(0编辑  收藏  举报