Windows10共享CentOS文件系統(Samba的使用)

電腦上裝了CentOS虛擬機,爲了方便的拷貝文件,於是決定使用Samba來共享CentOS的文件系統,給Win10做個映射。

關於Samba的作用可以去自行了解,這裏不再C&P了。

  1. 環境準備

確認Linux上安裝了Samba,CentOS上都是以rpm包的形式安裝的,所以先檢查一下:

[root@nick ~]#  rpm -qa | grep samba
samba-client-libs-4.9.1-10.el7_7.x86_64
samba-common-4.9.1-10.el7_7.noarch
samba-common-libs-4.9.1-10.el7_7.x86_64
samba-common-tools-4.9.1-10.el7_7.x86_64
samba-4.9.1-10.el7_7.x86_64
samba-client-4.9.1-10.el7_7.x86_64
samba-libs-4.9.1-10.el7_7.x86_64

確保smb服務正確開啓。因爲是基於CentOS 7.5,所以使用Systemd來管理所有service:

[root@nick ~]# systemctl status smb
● smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled)
   Active: active (running) since 二 2020-05-19 08:07:10 PDT; 2 days ago
     Docs: man:smbd(8)
           man:samba(7)
           man:smb.conf(5)
 Main PID: 2994 (smbd)
   Status: "smbd: ready to serve connections..."
    Tasks: 6
   CGroup: /system.slice/smb.service
           ├─ 2994 /usr/sbin/smbd --foreground --no-process-group
           ├─ 2999 /usr/sbin/smbd --foreground --no-process-group
           ├─ 3000 /usr/sbin/smbd --foreground --no-process-group
           ├─ 3001 /usr/sbin/smbd --foreground --no-process-group
           ├─38114 /usr/sbin/smbd --foreground --no-process-group
           └─38190 /usr/sbin/smbd --foreground --no-process-group

5月 19 08:07:10 nick systemd[1]: Starting Samba SMB Daemon...
5月 19 08:07:10 nick smbd[2994]: [2020/05/19 08:07:10.236369,  0] ../lib/util/become_daemon.c:138(daemon_ready)
5月 19 08:07:10 nick smbd[2994]:   daemon_ready: STATUS=daemon 'smbd' finished starting up and ready to serve connections
5月 19 08:07:10 nick systemd[1]: Started Samba SMB Daemon.

爲了保證以後每次虛擬機開啓,可以設置讓服務自動啓動,通過上面的status信息可以看到“ Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled)” 我已經enable了:

[root@nick ~]# systemctl disable smb
Removed symlink /etc/systemd/system/multi-user.target.wants/smb.service.
[root@nick ~]# systemctl enable smb
Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.

通過提示信息容易理解,所謂自動使能,其實就是給smb的service文件建立一個軟鏈接到 /etc/systemd/system下,Systemd作爲Linux 7.X的1號進程,會自動加載 \etc\systemd\system 中的文件。

  1. 共享目錄

爲了方便尋找,我在根目錄下創建了我的共享文件夾 \workspace
/etc/samba/smb.conf 中添加要共享的文件系統以及權限:

[workspace]
    comment = Share files between my win10 and centos 
    path = /workspace/
    writable = yes
    public = yes
    guest ok = yes
    browseable = yes

保存後需要重啓smb.service:

[root@nick ~]# systemctl restart smb.service

之後需要開啓用戶驗證的方式,需要給samba創建一個用戶,用戶名需要在系統上已經存在:

[root@nick ~]# useradd nick
[root@nick ~]# pdbedit -h
[root@nick ~]# pdbedit -a -u
Username not specified! (use -u option)
[root@nick ~]# pdbedit -a -u nick
new password:
retype new password:
Unix username:        nick
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-3939207639-918327093-2640217915-1000
Primary Group SID:    S-1-5-21-3939207639-918327093-2640217915-513
Full Name:
Home Directory:       \\nick\nick
HomeDir Drive:
Logon Script:
Profile Path:         \\nick\nick\profile
Domain:               NICK
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          三, 06 2月 2036 07:06:39 PST
Kickoff time:         三, 06 2月 2036 07:06:39 PST
Password last set:    五, 22 5月 2020 07:39:36 PDT
Password can change:  五, 22 5月 2020 07:39:36 PDT
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@nick ~]# ls
ad.log  anaconda-ks.cfg  date.sh  dockers  go_workspace  ifcfg-ens33  ifcfg-ens33-bak  mongorpm  mytar  original-ks.cfg  python_workspace  yumrepo
[root@nick ~]#
[root@nick ~]# pdbedit -L
nick:1001:

之後可以用samba自帶的一些命令檢驗配置,非常方便:

[root@nick ~]# smb
smbcacls    smbclient   smbcontrol  smbcquotas  smbd        smbget      smbpasswd   smbprint    smbspool    smbstatus   smbtar      smbtree
[root@nick ~]# smbstatus

Samba version 4.9.1
PID     Username     Group        Machine                                   Protocol Version  Encryption           Signing
----------------------------------------------------------------------------------------------------------------------------------------
38190   nick         nick         192.168.172.1 (ipv4:192.168.172.1:57237)  SMB3_11           -                    partial(AES-128-CMAC)
38114   nick         nick         192.168.1.1 (ipv4:192.168.1.1:57182)      SMB3_11           -                    partial(AES-128-CMAC)

Service      pid     Machine       Connected at                     Encryption   Signing
---------------------------------------------------------------------------------------------
workspace    38190   192.168.172.1 五 5月 22 06時47分27秒 2020 PDT -            -
workspace    38114   192.168.1.1   五 5月 22 06時46分56秒 2020 PDT -            -

Locked files:
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
--------------------------------------------------------------------------------------------------
38114        1001       DENY_NONE  0x100081    RDONLY     NONE             /workspace   .   Fri May 22 06:46:55 2020
38190        1001       DENY_NONE  0x100081    RDONLY     NONE             /workspace   .   Fri May 22 06:47:26 2020
38190        1001       DENY_NONE  0x100081    RDONLY     NONE             /workspace   .   Fri May 22 06:47:26 2020
38190        1001       DENY_NONE  0x100081    RDONLY     NONE             /workspace   .   Fri May 22 06:48:19 2020

[root@nick ~]# smbtree
WORKGROUP
SAMBA
        \\NICK                          Samba 4.9.1
                \\NICK\IPC$             IPC Service (Samba 4.9.1)
                \\NICK\workspace        Share files between my win10 and centos
                \\NICK\print$           Printer Drivers

可以看到Samba默認給所有IP都開啓了監聽服務,兩個網關的機器都可以訪問,使用 \NICK\workspace\192.168.1.131\workspace\192.168.172.128\workspace 都可以訪問。

  1. 踩坑進行時

在“此電腦”上右鍵“映射網絡驅動器”或者“Windows徽標鍵+R”直接輸入**\NICK\workspace** ,提示“您可能沒有權限訪問網絡資源”。
需要關閉Linux的防火牆,Linux上使用firewalld代替iptables,所以把firewalld給stop掉就可以。我沒有設置成自動啓動,因爲smb服務開啓的端口如果放在網絡中還是不安全的,之前的勒索病毒就是通過掃描系統的這幾個端口入侵主機的。我就每次需要傳遞文件時關閉一下防火牆,不麻煩。
之後還是報相同的錯誤,查了查是發現SELinux的訪問控制策略阻止了網絡連接。

[root@nick ~]# getenforce
Enforcing
[root@nick ~]# setenforce Permissive
[root@nick ~]# getenforce
Permissive

總的來說Samba服務還是很好用的,不過因爲開啓的端口容易被攻擊,所以還是需要加強安全策略的,不應該直接把防火牆給整個關掉。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章