Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件。SMB(Server Messages Block,信息服務塊)通信協議是微軟(Microsoft)和英特爾(Intel)在1987年制定的協議,主要是作為Microsoft網絡的通訊協議,是一種在局域網上共享文件和打印機的一種通信協議,它為局域網內的不同計算機之間提供文件及打印機等資源的共享服務。SMB協議是客戶機/服務器型協議,客戶機通過該協議可以訪問服務器上的共享文件系統、打印機及其他資源。通過設置“NetBIOS over TCP/IP”使得Samba不但能與局域網絡主機分享資源,還能與全世界的電腦分享資源。后來微軟又把 SMB 改名為 CIFS(Common Internet File System),即公共 Internet 文件系統,並且加入了許多新的功能。
Samba最大的功能就是可以用於Linux與windows系統直接的文件共享和打印共享,Samba既可以用於windows與Linux之間的文件共享,也可以用於Linux與Linux之間的資源共享,由於NFS(網絡文件系統)可以很好的完成Linux與Linux之間的數據共享,因而 Samba較多的用在了Linux與windows之間的數據共享上面。
NFS針對 Unix-Like系統的機器間文件的共享;
CIFS針對windows系統間文件的共享;
SAMBA針對Unix-Like系統和windows系統間文件的共享;
因為SMB協議是基於客戶機/服務器型的協議,所以一台Samba服務器既可以充當文件共享服務器,也可以充當一個Samba的客戶端,例如,一台在Linux 下已經架設好的Samba服務器,windows客戶端就可以通過SMB協議共享Samba服務器上的資源文件,同時,Samba服務器也可以訪問網絡中 其它windows系統或者Linux系統共享出來的文件。
在早期,SMB運行於NBT協議(NetBIOS over TCP/IP)上,使用UDP協議的137、138及TCP協議的139端口,后期SMB經過開發,可以直接運行於TCP/IP協議上,沒有額外的NBT層,使用TCP協議的445端口。如果你要使用Linux和早期的windows系統共享文件,請確認你的windows系統下是否安裝了NetBIOS協議。
NetBios, NetBios over TCP/IP, SMB 之間的關系可以查看這個網址https://www.cnblogs.com/pipci/p/10144840.html
Samba是一套程序,其中最重要的兩個進程是nmbd和smbd:
smb:提供SMB / CIFS服務(文件共享和打印)的守護進程,使用SMB協議與客戶進行連接,完成用戶認證,權限管理和文件共享任務。
nmb:提供NetBIOS名稱服務的守護進程,可以幫助客戶端定位服務器和域,相當於WindowsNT中的WINS服務器,如果只是單純的共享文件可以關閉這個服務,這樣就不用在防火牆中開發137、138端口,但是在Windows中“桌面”上的“網絡”里不會在顯示共享的主機,只能通過“運行” 打開 \\IP 的方式連接到共享的目錄。
SAMBA所需的軟件:
1、samba:這個軟件主要包含了SAMBA的主要服務程序(smbd及nmbd),SAMBA相關的文件,以及其它與SAMBA相關的logrotate配置文件及開機默認選項文件等。
2、samba-common:這個軟件主要提供了SAMBA的主要配置文件(smb.conf),smb.conf語法檢驗的測試程序(testparm)等。
3、samba-client:這個軟件則提供了當Linux做為SAMBA Client端時,所需要的工具指令,例如Smbmount命令用於Linux下掛載Windows共享文件等。
一、samba相關軟件安裝
-----------------------------------------------------------------------
[root@CentOS7 ~]# yum install samba #同時會一起把samba-common軟件一起安裝
[root@CentOS7 ~]# yum install samba-client
-----------------------------------------------------------------------
二、查看nmb和smb服務的狀態,並設置開機啟動
1、查看服務狀態,如果沒有啟動啟動他
------------------------------------------------------
[root@CentOS7 ~]# systemctl status smb.service #查看
[root@CentOS7 ~]# systemctl status nmb.service
[root@CentOS7 ~]# systemctl start smb.service #啟動
[root@CentOS7 ~]# systemctl start nmb.service
------------------------------------------------------
2、設置服務器開機啟動
------------------------------------------------------
[root@CentOS7 ~]# systemctl enable smb.service
[root@CentOS7 ~]# systemctl enable nmb.service
------------------------------------------------------
三、Samba服務器配置
在安裝了Samba服務軟件后,會自動在Linux系統中生成一系列的配置文件,了解它們的用途是配置Samba服務器所必須的。
1、主要配置文件 /etc/Samba/smb.conf
這是Samba服務的主配置文件,文件由一系列段和選項構成.一個段由一對方括號中的段名開始,直到下一個段名結束,主要由全局設置(Global Settings)和共享定義(Share Definitions)兩部分組成。其中全局設置定義了對影響整個Samba系統運行的全局選項,用於設置整個系統的規則,如果在其他段中沒有再對這些選項進行重新設置的話,就以全局選項為主:共享定義則是對系統中共享資源進行定義,該部分可以由多個段組成,其中常見的包括:用戶主目錄段,共享目錄和打印機段,每個段中可以再定義詳細的共享選項。smb.conf文件的格式如下所示:
----------------------------------------------------------------------------
#======================= Global Settings =======================
[global] #全局選項
#======================= Share Definitions =======================
[homes] #共享選項
[printers] #共享選項
-----------------------------------------------------------------------------
smb.conf配置文件中使用;號和#號作為注釋符,凡是使用這兩個符號開頭的行都會被Samba視為注釋行而忽略處理,這個配置文件中,大小寫是沒關系的,因為Windows不分大小寫。配置文件中選項的格式如下所示。
-------------------------
選項名稱 = 選項值
-------------------------
四、常用的全局選項及說明如下所示
先說一下samba定義的變量:
%S = 當前服務名(如果有的話)
%P = 當前服務的根目錄(如果有的話)
%u = 當前服務的用戶名(如果有的話)
%g = 當前用戶說在的主工作組
%U = 當前對話的用戶名
%G = 當前對話的用戶的主工作組
%H = 當前服務的用戶的Home目錄
%v = Samba服務的版本號。
%h = 運行Samba服務機器的主機名
%m = 客戶機的NETBIOS名稱
%L = 服務器的NETBIOS名稱
%M = 客戶機的主機名
%N = NIS服務器名
%p = NIS服務的Home目錄
%R = 說采用的協議等級(值可以是CORE, COREPLUS, LANMAN1, LANMAN2,NT1)
%d = 當前服務進程的ID
%a = 客戶機的結構(只能識別幾項:Samba,WfWg,WinNT,Win95)
%I = 客戶機的IP
%T = 當前日期和時間
1、workgroup
該選項設置Samba服務器所屬工作組名稱,通過網上鄰居可以從該工作組中找到該Samba服務器。默認設置如下:
workgroup = WORKGROUP
-------------------------------------------------------
2、wins support
該選項設置Samba服務器是否作為WINS服務器。如果要啟用該選項,則不能設置wins server選項,默認設置如下:
# wins support = no
選項默認都是被注釋掉了
-------------------------------------------------------
3、wins server
該選項指定WINS服務器的IP地址或主機名。默認設置如下:
; wins server = w.x.y.z
選項默認都是被注釋掉了
-------------------------------------------------------
4、interfaces 和bind interfaces only = yes
如果服務器有多個IP地址或網絡接口,可以使用interfaces選項把IP地址或網絡接口列出來。如果bind interfaces only選項設置為yes,則表示Samba將綁定(監聽)interfaces選項所設置的IP地址或網絡接口,只通過這個些IP地址或網絡接口提供服務,默認設置如下:
; interfaces = 127.0.0.0/8 eth0
; bind interfaces only = yes
上面兩個選項默認都是被注釋掉了
-------------------------------------------------------
5、dns proxy
該選項設置是否啟用DNS代理功能,默認設置如下:
dns proxy = no
-------------------------------------------------------
6、log file
該選項用來設置Samba日志文件的存放位置和文件名稱,默認設置如下:
log file = /var/log/samba/log.%m
這個選項中的.%m是Samba配置文件的保留變量,表示客戶端的NetBIOS名稱。
-------------------------------------------------------
7、max log size
日志文件最大能達到多少Kbytes,如果超過該限制,則Samba自動在當前的日志文件名后面加上“.old”然后創建一個新的日志文件繼續寫入。如果為0,則表示沒有大小限制。默認設置如下:
max log size = 1000
-------------------------------------------------------
8、syslog only
設置Samba只通過syslog進行日志記錄。默認設置如下:
# syslog only = no
默認這個選項被注銷掉
-------------------------------------------------------
9、syslog
syslog的日志級(0,err)(1,warning)(2,notice)(3,ifno)(4或以上,debug)。默認設置如下:
syslog = 0
-------------------------------------------------------
10、server role
服務器角色。定義Samba將以何種模式操作。可能的值是“獨立服務器”、“成員服務器”、“經典主域服務器”、“經典備份域控制器”、“活動目錄域控制器",默認設置如下:
server role = standalone server
-------------------------------------------------------
11、passdb backend
密碼數據庫格式,之前samba服務器的用戶信息都是以數據文件信息存放,為了加快速度, 目前密碼文件已經轉為使用數據庫了! 默認的數據庫格式為tdbsam ,存放在/var/lib/samba/private/passdb.tdb,早期使用smbpasswd命令來管理用戶密碼, 后來使用 TDB 數據庫,因此建議使用新的 pdbedit 指令來管理用戶數據smbpasswd仍然可以使用。默認設置如下:
passdb backend = tdbsam
-------------------------------------------------------
12、obey pam restrictions
在Samba中集成PAM的訪問控制功能。默認設置如下:
obey pam restrictions = yes
-------------------------------------------------------
13、 unix password sync = yes
當用戶改變samba加密的密碼時,SAMBA會試着更新UNIX用戶密碼。默認設置如下:
unix password sync = yes
-------------------------------------------------------
14、passwd program
這個就指定更改密碼的命令。默認設置如下:
passwd program = /usr/bin/passwd %u
-------------------------------------------------------
15、passwd chat
更改密碼時的對話。默認設置如下:
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
-------------------------------------------------------
16、pam password change
為samba打開pam改變密碼控制機制的支持。默認設置如下:
pam password change = yes
-------------------------------------------------------
17、map to guest
這個配置的意思是將所有samba系統主機所不能正確識別的用戶都映射成guest用戶。默認設置如下:
map to guest = bad user
-------------------------------------------------------
18、usershare max shares
最大用戶共享數量,0表示禁用用戶共享。默認設置如下:
usershare max shares = 100
-------------------------------------------------------
19、usershare allow guests
是否允許guest用戶訪問,這相當於在共享定義中設置guest ok = yes選項,最終以共享中的設置為准。
usershare allow guests = yes
-------------------------------------------------------
以下是smb.conf配置文件中沒有提到的,但是可以通過testparm -v 命令查看到默認設置,如果不符合自己的實際設置,可以在配置文件中加入相應
的選項。
-------------------------------------------------------
20、netbios name = CENTOS7
設置Samba Server的NetBIOS名稱,在“網上鄰居”中顯示的主機名,如果不填,則默認會使用該服務器的DNS名稱的第一部分。
-------------------------------------------------------
21、server string = Samba 4.8.3
設定 Samba Server 的注釋,可以是任何字符串,也可以不填。宏%v表示顯示Samba的版本號。
-------------------------------------------------------
22、hosts allow = 127. 192.168.1. 192.168.10.1
設置允許連接到Samba Server的客戶端,多個參數以空格隔開。可以用一個IP表示,也可以用一個網段表示。這選項也可以
在共享段起作用,只對某個共享的目錄單獨起作用。
hosts deny 與hosts allow 剛好相反。
ALL 表示所有用戶,例如:hosts allow = ALL
EXCEPT 表示排除,例如:允許除192.168.1.100以為的所有主機訪問,格式為 hosts allow = ALL EXCEPT 192.168.1.100
-------------------------------------------------------
23、max connections = 0
max connections用來指定連接Samba Server的最大連接數目。如果超出連接數目,則新的連接請求將被拒絕。0表示不限制。
-------------------------------------------------------
24、deadtime = 0
deadtime用來設置斷掉一個沒有打開任何文件的連接的時間。單位是分鍾,0代表Samba Server不自動切斷任何連接。
-------------------------------------------------------
25、time server = yes/no
time server用來設置讓nmdb成為windows客戶端的時間服務器
-------------------------------------------------------
26、security = user
設置用戶訪問Samba Server的驗證方式,一共有四種驗證方式。
1. user:Samba Server共享目錄只能被授權的用戶訪問,由Samba Server負責檢查賬號和密碼的正確性。賬號和密碼要在本Samba Server中建立。
2. domain:域安全級別,使用主域控制器(PDC)來完成認證。
3. auto:這是Samba中的默認安全設置,Samba會通過服務器角色參數(如果設置)來確定安全模式。
4. ads:在此模式下,Samba將充當ADS領域中的域成員
在samba4中share 和 server驗證方式已被棄用
-------------------------------------------------------
27、encrypt passwords = yes/no
是否將認證密碼加密。因為現在windows操作系統都是使用加密密碼,所以一般要開啟此項。不過配置文件默認已開啟。
-------------------------------------------------------
28、username map = /etc/samba/smbusers
用來定義用戶名映射,比如可以將root換成administrator、admin等。不過要事先在smbusers文件中定義好。比如:root = administrator admin,這樣就可以用administrator或admin這兩個用戶來代替root登陸Samba Server,更貼近windows用戶的習慣。
-------------------------------------------------------
29、guest account = nobody
用來設置Samba中guest用戶對用的系統用戶名。
-------------------------------------------------------
30、load printers = yes/no
設置是否在啟動Samba時就共享打印機。現行幾乎都是網絡打印機了,默認關閉就可以,這里也不討論打印機的問題。
-------------------------------------------------------
31、 smb ports = 139 445
指定服務監聽SMB流量的端口。
五、常用的共享選項及說明
在該段中指定了一個通過Samba進行共享的目錄,定義用戶訪問該目錄的各種設置。如下所示:
[共享名稱]:這個共享名稱很重要,它是一個代號而已,用戶在“網上鄰居”中所看到的共享目錄名
comment = 任意字符串
說明:comment是對該共享的描述,可以是任意字符串。
path = 共享目錄路徑
說明:path用來指定共享目錄的路徑。可以用%u、%m這樣的宏來代替路徑里的unix用戶和客戶機的Netbios名,用宏表示主要用於[homes]共享域。例如:如果我們不打算用home段做為客戶的共享,而是在/home/share/下為每個Linux用戶以他的用戶名建個目錄,作為他的共享目錄,這樣path就可以寫成:path = /home/share/%u; 。用戶在連接到這共享時具體的路徑會被他的用戶名代替,要注意這個用戶名路徑一定要存在,否則,客戶機在訪問時會找不到網絡路徑。同樣,如果我們不是以用戶來划分目錄,而是以客戶機來划分目錄,為網絡上每台可以訪問samba的機器都各自建個以它的netbios名的路徑,作為不同機器的共享資源,就可以這樣寫:path = /home/share/%m 。
browseable = yes/no
說明:browseable用來指定該共享是否在“網上鄰居”中可見。
writable = yes/no
說明:writable用來指定該共享路徑是否可寫。
read only = yes/no
說明:設置共享目錄為只讀,這個選項和writable是互斥的,最好不要兩個同時出現如果同時出現,那么最后出現的那個設置為主要的設置。
available = yes/no
說明:available用來指定該共享資源是否可用。
admin users = 該共享的管理者
說明:admin users用來指定該共享的管理員(對該共享具有完全控制權限)。在samba 3.0中,如果用戶驗證方式設置成“security=share”時,此項無效。
例如:admin users =bobyuan,jane(多個用戶中間用逗號隔開)。
valid users = 允許訪問該共享的用戶
說明:valid users用來指定允許訪問該共享資源的用戶。
例如:valid users = bobyuan,@bob,@tech(多個用戶或者組中間用逗號隔開,如果要加入一個組就用“@+組名”表示。)
invalid users = 禁止訪問該共享的用戶
說明:invalid users用來指定不允許訪問該共享資源的用戶。
例如:invalid users = root,@bob(多個用戶或者組中間用逗號隔開。)
write list = 允許寫入該共享的用戶
說明:write list用來指定可以在該共享下寫入文件的用戶。
例如:write list = bobyuan,@bob
public = yes/no
說明:public用來指定該共享是否允許guest賬戶訪問。
guest ok = yes/no
說明:意義同“public”。
create mask = 0700
說明:指定用戶通過Samba在該共享目錄中創建文件的默認權限。0600代表創建文件的權限為rw-------
directory mask = 0700
說明:指定用戶通過Samba在該共享目錄中創建目錄的默認權限。0600代表創建目錄的權限為rwx------
更多設置參考官方文檔:
https://www.samba.org/samba/docs/man/
六、配置文件生效與檢驗
1、與大部分程序配置文件一樣,smb.comf文件被修改后並不會立刻生效,需要重啟smbd和nmbd服務。在完成配置文件我們需要用testparm命令來驗證文件的格式是否正確,命令如下:
[root@CentOS7 ~]# testparm
參數
-v:查閱完整的參數設置,連同默認值也會顯示出來
------------------------------------------------------
[root@CentOS7 ~]# testparm #進行檢測
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: The "syslog" option is deprecated
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK. #如果格式沒有問題將不會看到任何錯誤信息,如果這行的前面有Unknown parameter encountered:字樣的提示就說明有錯誤。
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions #回車后將會顯示smb.conf文件當前的配置內容
# Global parameters
[global]
printcap name = cups
security = USER
workgroup = SAMBA
idmap config * : backend = tdb
cups options = raw
----后面的省略----
--------------------------------------------------------
如果輸出中沒有任何錯誤或警告信息,表示文件格式沒有問題。否則,輸出結果中將會給出錯誤的地方以及錯誤的原因。
2、重啟服務
---------------------------------------------------------
[root@CentOS7 ~]# systemctl restart smb.service
[root@CentOS7 ~]# systemctl restart nmb.service
---------------------------------------------------------
七、Samba用戶管理
Samba的用戶是與操作系統的用戶聯系在一起的,在創建Samba用戶前,必須先添加一個與之同名的操作系統用戶。也就是說Samba的用戶必須是操作系統中已經存在的用戶,但兩者的密碼可以不相同。在來說下用戶在Windows系統下通過Samba訪問Linux系統的權限問題,當我們需要通過Samba所提供的功能來進行Linux的訪問時,Linux上面的文件或目錄是否可讀寫還要取決於Linux系統上的用戶是否對該文件可讀寫,所以在Windows上訪問Samba服務器時,要看Samba對應的用戶對Linux系統的文件是否可讀寫,同時Samba配置文件也會限制讀寫權限。例如:當Samba用戶A要對Linux上面的T文件進行寫的時候,smb.conf的配置文件中的共享設置要具有可寫的權限,A用戶對應的Linux用戶也要對T文件有寫的權限。
Samba用戶通過pdbedit命令進行管理。命令用法如下:
[root@CentOS7 ~]# pdbedit 參數
參數:
–a username:新建Samba賬戶。
–x username:刪除Samba賬戶。
–L:列出Samba用戶列表,讀取passdb.tdb數據庫文件。
–Lv:列出Samba用戶列表的詳細信息。
–c “[D]” –u username:暫停該Samba用戶的賬號。
–c “[]” –u username:恢復該Samba用戶的賬號。
舉例:
---------------------------------------------------------------------------
[root@CentOS7 ~]# pdbedit -a root #創建root用戶
new password:
retype new password:
Unix username: root
NT username:
Account Flags: [U ]
User SID: S-1-5-21-581854895-1790122719-2797274960-1000
Primary Group SID: S-1-5-21-581854895-1790122719-2797274960-513
Full Name: root
Home Directory: \\centos7\root
HomeDir Drive:
Logon Script:
Profile Path: \\centos7\root\profile
Domain: CENTOS7
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: 五, 21 12月 2018 11:45:14 CST
Password can change: 五, 21 12月 2018 11:45:14 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@CentOS7 ~]# pdbedit -L #查詢目前已經存在的Samba帳號
root:0:root
[root@CentOS7 ~]# smbpasswd root #通過smbpasswd命令修改帳號密碼
-----------------------------------------------------------------------
如果要添加額外的Samba用戶帳號,若該帳號原本不存在,則先使用useradd添加系統帳號,再通過pdbedit -a命令添加Samba用戶帳號。
八、用戶映射
由於Samba用戶必須要與操作系統用戶同名,出於系統安全或使用習慣的考慮,我們可以把上面的root用戶映射為administrator用戶或admin用戶,映射后就無需在添加administrator或admin用戶了,也可以防止Samba用戶通過Samba帳號來猜測操作系統用戶的信息。映射后的用戶其權限和密碼都和root一樣,映射步驟如下:
1、編輯smb.conf文件,在[global]部分添加用戶映射文件(該文件由用戶手動創建,可以把他放在系統可以訪問的任何位置),添加內容如下所示:
username map = /etc/samba/smbusers #一般文件都放在這里
2、手動創建用戶映射文件/etc/samba/smbusers ,該文件的格式如下:
Samba用戶帳號 = 需要映射的用戶列表
列表中的用戶名之間以空格進行分割,如下所示。
[root@CentOS7 ~]# vi /etc/samba/smbusers
root = administrator admin
3、重啟mbd和mbd服務
添加上面的選項可能有問題Centos7 1810測試,就是添加完以后即使允許不需要密碼訪問,也得先提供密碼登錄。Debian9.5就沒問題
九、配置實例
1、不需要密碼的共享,我們有時候需要將某個目錄共享給所有人訪問,要求/home/share1目錄所有人都可以讀寫,/home/share2目錄所有人只讀,我們需要先把這兩個目錄的權限給成777,這樣任何人才可以對目錄進行操作,smb.conf配置文件如下:
-----------------------------------------------------------------------
#======================= Global Settings =======================
[global]
workgroup = WORKGROUP
netbios name = SAMBA-CENTOS7
dns proxy = no
security = user
passdb backend = tdbsam
map to guest = bad user #這行很重要決定任何用戶是否可以訪問
load printers = no
#======================= Share Definitions =======================
[share1]
comment = guest
browseable = yes
path = /home/share1
available = yes
guest ok = yes
writable = yes
create mask = 0700
directory mask = 0700
[share2]
comment = guest
browseable = yes
path = /home/share2
available = yes
guest ok = yes
read only = yes
-----------------------------------------------------------------------
十、防火牆設置
Samba中默認會啟用多個端口,這包括數據傳輸的TCP端口139,445,以及進行NetBIOS名稱解析之類工作的UDP端口137,138,我們如果只是為了傳輸數據可以只開放445端口,前提是smb ports = 的選項中有445端口,我們也可以配置smb ports = 445 ,這樣Samba就只監聽445端口,這樣配置完在Windows中“桌面”上的“網絡”里不會在顯示共享的主機,只能通過“運行” 打開 \\IP 的方式連接到共享的目錄。防火牆具體的配置命令這里就不說了。
查看smb ports選項默認設置的端口:
[root@CentOS7 ~]# testparm -v | grep port
查看Samba監聽的端口號:
[root@CentOS7 ~]# ss -tlunp | grep mbd #ss命令是netstat命令的替代
可以直接關閉防火牆:
[root@CentOS7 ~]# systemctl stop firewalld.service
十一、SeLinux設置
SeLinux會影響到Samba的訪問,最直接的方法就是關閉他。
1、查看SeLinux狀態
[root@CentOS7 ~]# sestatus
2、臨時關閉SeLinux
[root@CentOS7 ~]# setenforce 0
3、永久關閉SeLinux,需要重啟機器
編輯/etc/selinux/config文件,將SELINUX的值設置為disabled,下次開機SELinux就不會啟動了
十二、Linux客戶端上訪問
Linux客戶端上訪問Windows系統或Samba服務器上共享資源的方式主要有兩種,可以使用smbclient程序訪問共享資源,也可以使用mount命令把共享目錄掛載到本地目錄上使用。
1、smbclient是Samba所提供的一個類似於FTP的客戶端程序,使用smbclient鏈接到共享的資源后,可以使用ls,get,put等類似於FTP的命令對共享資源進行操作,首先要安裝smbclient程序:
---------------------------------------
[root@CentOS7 ~]# yum install samba-client
---------------------------------------
smbclient命令的格式如下所示:
smbclient [選項] //[address]/[共享目錄]
該命令常用的選項及說明如下所示
-I=IP: 連接指定的IP地址
-L=Host: 獲取指定共享資源列表
-p=Port: 指定要連接的共享資源服務器端口號
-U=Username: 指定連接共享服務器使用的用戶帳號
-N: 不要求輸入密碼
-?:顯示命令的幫助信息
-V :顯示命令的版本信息
例如要查看共享服務器192.168.1.30上的共享資源列表,命令如下:
----------------------------------------------------------------------
[root@CentOS7 ~]# smbclient -L=192.168.1.27 -U administrator
Enter SAMBA\administrator's password: #要求輸入administrator帳號的密碼
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk 遠程管理
C$ Disk 默認共享
IPC$ IPC 遠程 IPC
windd Disk
Reconnecting with SMB1 for workgroup listing.
Connection to 192.168.1.27 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Failed to connect with SMB1 -- no workgroup available
----------------------------------------------------------------------
通過上面的查看可以看到共享的資源為windd
通過smbclient命令登錄到共享主機資源,命令如下:
----------------------------------------------------------------------
[root@CentOS7 ~]# smbclient //192.168.1.27/windd -U administrator
Enter SAMBA\administrator's password:
Try "help" to get a list of possible commands.
smb: \>
----------------------------------------------------------------------
在smb: \>下面其實就是在 //192.168.1.30/windd這個目錄下,我們可以使用ls,get,put等命令進行數據的傳輸,常用命令如下:
? :列出所有可以使用的命令
cd :遠程共享主機上切換目錄
del :刪除某個文件
lcd :本機主機上切換目錄
ls :查看當前所在目錄的文件
get :下載文件
put : 上傳文件
rm : 刪除文件
exit :退出
2、通過mount命令掛載共享目錄到本地。
在使用smbclient命令一點也不方便直觀,其實除了smbclient為,Linux客戶端也可以像NFS一樣使用mount命令把遠程的共享文件夾掛載到本地的目錄上進行使用。掛載后對共享文件夾的訪問就像操作本地目錄一樣方便。首先需要安裝cifs-utils軟件包(以及cifs-utils依賴的軟件包):
---------------------------------------------
[root@CentOS7 ~]# yum install cifs-utils
---------------------------------------------
掛載命令如下:
[root@CentOS7 ~]# mount.cifs //[address]/[folder] -o user=[username] [mount point]
[root@CentOS7 ~]# mount -t cifs //[address]/[folder] -o user=[username] [mount point]
[root@CentOS7 ~]# mount -t cifs //[address]/[folder] -o domain=[domain_name],user=[username] [mount point]
[address]是windows的IP地址,[folder]是windows下的共享目錄,[username]是window下的設置folder共享時的用戶,如果該用戶使用域管理(如企業或組織用戶),需要設置domain ;[mount point]是Linux系統上的掛在點,mount.cifs命令可以取代mount -t cifs命令。
掛在舉例:將共享文件windd掛載到linux系統的/mnt目錄,共享用戶為administrator
---------------------------------------------------------------------
[root@CentOS7 ~]# mount.cifs //192.168.1.27/windd -o user=administrator /mnt/
Password for administrator@//192.168.1.27/windd: ******** #這里要求輸入共享用戶administrator的密碼
[root@CentOS7 ~]#
---------------------------------------------------------------------