tid=66566&1、安裝及設定; v2 L" J" u1 [1 T
分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。
3 {5 S# }9 ^: D+ X+ d2 A0 j; E
9 K5 D! O6 g4 L2 p" f& A( y3 `2 X2、Samba Server
+ Y5 X% T% D' J% D6 C n, y# b T步驟1.安裝 samba 套件5 W+ m6 [& N+ |8 P7 H! }2 k! ?
, G( P- v# v2 r* L1 J; }利用 yum 指令來安裝 samba 套件。
" [( K& P. Y$ }: O#yum -y install samba //安裝 samba 套件
/ V0 N' E3 j# P# x& Q/ ?; M* B
: b4 o1 d$ A- I- w* {. ]9 y; T. f***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件: # Z6 R% T! z, ~0 [4 |" ^7 _: l" K
#yum install samba-client samba-common cifs-utils
2 n' U: \6 ?+ C/ W: `' _8 W5 e) \- m/ a4 B# g* q
步驟2.修改 samba 設定檔 (smb.conf): c6 D! X6 W4 E
& _- V5 X% Q7 Z4 H: u- y
修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。
" ]& R; Z+ G) Z$ f+ y% D$ H#vi /etc/samba/smb.conf //修改 samba 設定檔' Z6 e6 o+ c2 _9 h
4 E' u+ C6 H. F# n# N9 u global //通用設定. S* O! A9 D3 }
, w9 X/ O+ z- B netbios name = Linux-smb //顯示於 Windows 網路芳鄰的電腦名稱
$ D3 ?8 e/ j# K! s- u4 _+ u- ^5 ?: z
workgroup = WORKGROUP //顯示於 Windows 網路芳鄰的工作群組名稱( q% T5 q2 M7 g1 I8 \3 `# T
2 o+ k9 T! i- Q8 _( B+ w
hosts allow = 127. 192.168.1.18 //允許此來源 IP 位址可存取 Samba 資源( b U- X# W+ m' m& d
9 }# W6 h7 ]/ f' {
hosts deny = ALL //除了上面允許的IP之外禁止其它IP存取Samba資源
: A, ?% N' }, I+ I# Y- m4 }, _6 D( p7 Q) y1 S! z6 r
security = user //安全等級user需在Samba主機上擁有帳號者才可登入# m/ Q- \7 t) U4 x$ C o7 W v
! B8 K' Q0 Y1 v. E# H, o encrypt passwords = yes //是否對密碼部份進行加密
9 z' h9 ` c+ o W: f- k$ ?, E" F0 L6 W: W: ]8 Z/ x- @* G
display charset = utf8 //Samba 上所顯示的編碼 U( q/ z( o/ Z! z
4 G. P8 `4 A, {0 g9 u/ M. D: y! P. k
unix charset = utf8 //Linux 上所顯示的編碼! @3 V- U2 y9 V$ b) |. S
" R$ Z7 y3 b6 d6 {8 A- r5 B4 ?* L dos charset = cp950 //Windows 用戶端的編碼 (可正確顯示中文)* C5 |6 k( _) ~5 Q1 S: R
/ x' Z( t* M' \ ]; `. o2 L
home //分享設定,屆時顯示分享資料夾的名稱7 V8 c1 A4 o9 B; R2 S
7 I D% M9 K4 L5 i' J; b+ ?# _$ x- f comment = Weithenn Samba Files Shares //分享資料夾的註解7 n* _- F! I2 T% e
5 W. C: ~: i. C& F5 M, J/ ?
path = /home //分享路徑
4 v. Y- I+ \/ M& H3 h' e. x
& R! Z9 v* r6 _/ G m2 W [- M valid users = user1,@smbuser //允許user1使用者及smbuse群組可存取資源
9 V* {* G2 L" Q: Y" A8 ^* U3 z1 B2 c5 z0 t! P
public = yes //允許使用者登入後可看到此分享資料夾) `" M }' _8 S' d+ v
* J$ O& ]/ a0 c
writable = yes //允許寫入
( w2 w0 F) ~! \% |% L2 ?* A" E' f+ B1 x2 ~0 T, z) m' g- [
create mode = 664 //建立檔案的權限 (該檔案在 Samba 中權限為 664)
- n6 o/ P) z+ ~2 w- v
; i# f9 i5 e5 ]% r directory mode = 775 //建立資料夾的權限 (該資料夾在 Samba 中權限為 775)8 q4 C# ?# T$ J3 M3 a
; K, Z- ^4 M6 ~# q. R6 e* }4 q
# O0 G% b/ j5 q0 e步驟3.建立 samba 帳號1 [8 O5 i5 U1 }2 j
7 g0 U& h# `2 T# E7 s% Y: G
設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。. x- ?5 H* l) A& U+ G; L7 d/ ~
#smbpasswd -a user1 //建立 samba 使用者帳號 user13 I; J: u% Y3 u4 i4 N
3 p# L$ s) S9 Q! \# u0 ]$ z; \/ G( F New SMB password: //輸入使用者帳號 user1 的 samba 密碼
/ }2 M( d# [8 r
6 D+ ^" u( t% F Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼5 h" _ m' Q2 A3 M. B" S. W
+ X4 {' X! z; g i2 o3 v4 v$ I Added user user1. //新增 samba 使用者帳號 user1 成功1 F9 Q O9 C& Y9 B6 k( U" B* H
! M5 x ? N$ c- Z/ w$ Q3 d9 c新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過+ R% Q) W- q, a6 {' H; M
#cat /etc/samba/smbpasswd 或者% E- {3 v6 r! Q; ]( S0 D
#cat /var/lib/samba/private/smbpasswd) {) B* \* Y6 t# i0 F+ g- L J8 U
user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U : LCT-41CAF287 :
, n, R5 [# i. U" H4 f% K
1 J, ~; Y& q, A* \* j. t步驟4.啟動 samba 服務5 ^8 z2 O' C" L6 x+ Z. r
4 B/ ?4 S, F4 @在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。- z0 {4 B" p1 d# H2 C
#chkconfig smb on
' u2 B2 b+ A. [* b- X0 E6 f
7 } a$ f+ R9 y: R3 {$ R' B使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。
! s. }1 Q% i% x& N9 D) o/ _#chkconfig --list |grep smb; @$ d' y- d/ }+ k; H8 v: q* {$ d* _/ |
* R5 v! H: N3 S3 h0 R/ ^' ? smb 0 : off 1 : off 2 : on 3 : on 4 : on 5 : on 6 : off& @# d( J; B7 `0 @ m' K
+ k- Q' ~6 n: J6 \0 Z完成上述設定後便可以啟動 smb 服務
8 Q. j! m: e, ^6 Y#/etc/rc.d/init.d/smb start! l6 V- V- D- w/ P$ G7 e
2 {7 j% M; w3 v1 L
Starting SMB services: [OK]
?9 j8 y" v! d! f
6 H3 H( u m3 E1 V) t& y1 ^ Starting NMB services: [OK] : T; x7 n% p' n% w( k ~, X! D
: B* s" |6 T) t# p, @檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。
: M9 e( R+ ]2 R. u#netstat -tnl
! `; j0 V, c0 Y0 u& u
d R8 D& |' \4 B8 Z1 |1 Z/ h Active Internet connections (only servers)
- Z' y; |% h9 N8 G" Q$ H) f f. o
% i( B% I; s0 d! f" @: q- [6 Y Proto Recv-Q Send-Q Local Address Foreign Address State/ e$ }7 q- z a1 n- ^) t, p
; X: N X: p% {+ O; d3 x4 U tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN$ f( t( f6 F a$ N* `6 ]( O, l
7 l% w5 S$ V, r H% z tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN
: Z, D* M; g! k# ?: X& b% ?
4 A5 O8 C: s. I5 I& a3、Samba Client) A$ h0 j: \, N1 N2 {) k
以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。& K- n9 p6 t$ j$ M4 a3 W) a
: V6 o1 P5 s5 h: h
Windows Client
, O; g2 N& m/ P7 D& T( Y$ U( @3 R6 D. v0 h
上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:
4 M) M8 z1 v, a+ D2 F# J檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。7 w- O: e, W0 D6 ?2 Y
驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。
( h/ ]$ X/ M) b0 P; k1 B( Y! W# E+ D6 ^, f- k, ^! ]
若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):
3 I4 v8 E0 h2 S: g3 K% D! U# O* k& M S- k
方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)5 r! }/ {3 A- e0 J
net use w: \\Samba_Server_IP\home
" G& Z1 N+ W0 k5 U. r. Q+ ^' c2 u, E" j. o
方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)
, H5 m3 @, E8 S* @% ^/ S; n' W/ E net use w: \\Samba_Server_IP\home /user:user1 123456
2 S* c! W, K- Z1 Z7 u
! ]4 Z* r, k7 X! r. NCentOS Client" c4 K( I7 i0 F. u- a/ T9 k
3 R7 j& f$ _) b) @8 w
若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。
9 E; E/ @) T6 h) n. N4 H" E
& f: o( M6 C k4 S方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)
. [, {7 H0 ~4 W. cmount.cifs //Samba_Server_IP/home /mnt/home -o
$ d, D y' u+ \7 }/ Q- x
8 J; u! R$ s/ H方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)
6 r3 A! M: x5 x3 qmount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=1234565 G& Y' Q$ }+ P5 q& B, {7 V
! }2 G5 C! A& o4 p' b2 }4 d- H9 O l0 l若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。
) e" a1 F2 Q" r6 {0 U5 Mumount.cifs /mnt/home或( n+ n9 B# Z5 f% K) S3 j. D
umount /mnt/home! ]' `5 R$ ]6 p7 W
% a. U) d0 Q& k1 U
4、CentOS 存取 Windows 分享資源
% [ F( }' @% g' D S+ ASamba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:; ^. h2 p$ L3 ]1 J
5 y- c2 v P: p
Windows 電腦名稱: user1-XP
: r/ X, B; L" H4 n分享資料夾名稱: Shares, ~& q" |% K0 i4 @
可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)4 E- I; r' S& y* k: B% k" y
可存取 Windows 分享資料夾的使用者密碼: 1234569 c& w- D. T: F' L- B( R
8 r& Q* a9 i n- y3 u5 n+ j
CentOS 掛載至本地端檔案系統: /mnt/shares- @$ y" X4 e& ], Y
CentOS 帳號密碼檔: /home/user1/secret.txt
9 h0 t1 z* h6 t, G5 \9 w安全性權限設定: chmod 600 secret.txt
: o3 N! t! X* H# |$ I% ?1 Y* p4 f4 b3 }# X6 k1 v
了解後我們修改檔案系統設定檔 /etc/fstab。5 B, C8 e& n) t9 C
#vi /etc/fstab2 o7 ?/ R) U2 n
" Y/ h8 j, v* W1 O8 c: n7 I, g/ K
LABEL=/1 / ext3 defaults 1 1& A& Q% f5 Q3 A4 z) |( G% e
' b* A. W; y1 j8 O1 b# c LABEL=/home1 /home ext3 defaults 1 2; D" p2 r; | U0 Q- z
- r! |: }- o- O$ o$ A) ^
LABEL=/tmp1 /tmp ext3 defaults 1 2
" l" f4 W7 v: I0 M+ R# C" V# k* m& L W3 m. A' `0 v5 \" M- X
LABEL=/usr1 /usr ext3 defaults 1 2* Z8 @& _0 j) t) k. H3 j
6 \) U I- J* T1 M3 w
LABEL=/var1 /var ext3 defaults 1 2
% J( K6 u4 V9 w" \
9 y* N, }( N3 m5 N4 _* Z tmpfs /dev/shm tmpfs defaults 0 0
' x8 p' d9 J" g2 l, m3 s5 w8 S4 Q$ d9 h/ Q4 H
devpts /dev/pts devpts gid=5,mode=620 0 0) i" X* u! ?/ \6 x* z5 I, b" ]6 L
; Q# e5 k; K4 i sysfs /sys sysfs defaults 0 0/ H2 D, [7 K! {2 G* }
7 Q; j- J" g+ {% x6 e9 Y proc /proc proc defaults 0 02 J: J+ b3 ?) p- y7 Q
; ]( v8 h) T% S- v6 W LABEL=SWAP-sda6 swap swap defaults 0 09 q/ d/ a, i; B& i) R
, o( D" Q5 W7 _7 H. f$ [ //user1-XP/Shares /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行
0 S) r# p, _# o0 f* A G* ^ t& G& y" J* q
建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:3 p' i; C J& U7 v$ A1 Z+ @9 @
#vi /home/user1/secret.txt
/ O5 f* p( m8 k/ r7 ?
) `! D, y4 ?( Y$ m/ _- P* H: d username=user12 |* k% V. I |* e! b* g4 _' Y
8 @, C6 D4 x* Z
password=123456( |+ ~) |( Z; O. k! A
1 V, @7 g1 t/ i
設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。
1 W# O* j x7 A% D9 k; q- |( Z#mount -a //讀取 /etc/fstab 更新. b' [/ `! J8 |) I
+ D& l) m4 o8 @* L/ A! w+ ]$ X1 m* P
#df -h //檢查是否成功存取 Windows 資源
! E2 [! [8 l- n) {: u/ p! u ]( `* ]) Y8 X% U W' i u
Filesystem Size Used Avail Use% Mounted on/ z5 D m- w8 B, h4 Y
+ K8 v6 `5 F9 @* r5 b- I
/dev/sda1 9.7G 2.3G 6.9G 25% /
1 x' @4 g# h2 M8 u) s& k+ T6 x$ H6 j! e# {
/dev/sda7 414G 211G 183G 54% /home
0 h- i W1 J7 N
: t K6 G |" F# Y /dev/sda5 4.9G 139M 4.5G 3% /tmp `9 [ H" `9 ^5 q
% S# M% {, P0 ^5 D+ i% I /dev/sda3 9.7G 2.3G 6.9G 26% /usr, v9 A" h, ?& ?8 A/ {
2 R# ^5 ?2 Z7 l/ x /dev/sda2 9.7G 255M 9.0G 3% /var' ~2 \1 K. ^3 @
' q3 l% @* D3 T' y5 i tmpfs 2.0G 0 2.0G 0% /dev/shm5 Z/ @0 i( E9 s1 Z2 ]/ W+ J
4 c3 w: g6 Y/ E% D
//user1-XP/Shares 251G 236G 15G 95% /mnt/shares //存取 Windows 資源成功
6 Q- I+ V9 l% Q$ i4 O/ q
# P0 b, I+ g% ?2 V2 X* x3 A9 n[Troubleshooting]
6 }) Y& U- I+ H X9 C6 L從client連到server端時出現error:
" T- ?/ e. o" K1 I2 wsamba mount error(110): Connection timed out1 w. |8 k0 ]! u4 d
一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 445: ~7 K( r. l1 K8 c2 `: y" P' g
# ]- a: I3 O) w7 A- C* ^9 A
至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:
$ }$ L/ [8 A/ s1 N, g; B; W- N( w6 H8 b' z9 l2 c8 @/ j
用 yum 查一下有什麼 sshfs 相關的套件:% M( w/ |' T' I
# yum search sshfs2 b( m+ [7 W U r5 }
=====================================================================0 K) d* A! ~ N) M5 t3 w
fuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH y* Q0 k$ w& @
安裝sshfs:5 I5 E0 q! F* e+ g0 G# f& c
#yum install fuse-sshfs 2 I& k7 g x$ U
建立掛載目錄:6 t* m" ~, H5 x
#mkdir /mnt/temp
5 Q7 Z+ t5 X. n; s1 |- n! [" Z用sshfs 掛載遠端的目錄:
: T, t: L: _- O$ `' x$ `#sshfs -p 22 root@192.168.1.2:/root/ /mnt/temp //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄4 N0 {9 S0 l+ |, |
root@192.168.1.2's password: //接著要你輸入遠端ssh root密碼
1 k7 ?, V1 b4 x+ V& N x正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的. `. m* P! S* c# e. q$ p3 t0 N) v
如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便* B# d) m3 X7 m# q. O& y
% Y8 O1 E" ~( [' V+ r帶上密碼而不用手動輸入密碼0 U& c% F5 u6 q0 r
#sshfs -o ssh_command='sshpass -p my_password ssh' -o cache=yes,allow_other -p 10022 root@192.168.52.4:/root/ /mnt/temp
) L/ @7 o k5 k+ P' f8 c2 @& x註: 如果掛載有問題,可以開啟 debug mode 觀察過程:
; ~' R) j7 T! v/ Z: i% `7 j8 T. csshfs -p 10022 -o sshfs_debug -o debug root@192.168.1.2:/ /mnt/temp! k( j0 c7 R: C% v
: T- q I, L5 r& F5 L: [以一般帳號(非root)掛載時,出現error :
e. z; r1 r% X4 Gfuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限# [) K1 J: t9 t4 U9 q
ls -l /bin/fusermount2 g4 v! U; w/ c* |
-rwsr-x--- 1 root fuse 32368 May 11 2016 /bin/fusermount
, J3 G7 \5 q5 ?9 B, N故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse
2 c# R2 r% I o- O' m3 l: ~2 W$ i' P& M# H! d F9 J1 f
可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統 SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)3 ^3 @4 s. M! U0 m( w
* Q8 k- v" C3 K
) R! F( r& G0 M |