電腦上裝了CentOS虛擬機,爲了方便的拷貝文件,於是決定使用Samba來共享CentOS的文件系統,給Win10做個映射。
關於Samba的作用可以去自行了解,這裏不再C&P了。
確認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 中的文件。
爲了方便尋找,我在根目錄下創建了我的共享文件夾 \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 都可以訪問。
在“此電腦”上右鍵“映射網絡驅動器”或者“Windows徽標鍵+R”直接輸入**\NICK\workspace** ,提示“您可能沒有權限訪問網絡資源”。
需要關閉Linux的防火牆,Linux上使用firewalld代替iptables,所以把firewalld給stop掉就可以。我沒有設置成自動啓動,因爲smb服務開啓的端口如果放在網絡中還是不安全的,之前的勒索病毒就是通過掃描系統的這幾個端口入侵主機的。我就每次需要傳遞文件時關閉一下防火牆,不麻煩。
之後還是報相同的錯誤,查了查是發現SELinux的訪問控制策略阻止了網絡連接。
[root@nick ~]# getenforce
Enforcing
[root@nick ~]# setenforce Permissive
[root@nick ~]# getenforce
Permissive