tid=66566&1、安裝及設定! x/ i& c7 A$ ~/ }; H
分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。
, M: q1 h2 J' {, Z4 W. T$ V( Z% U; o' a9 e7 k" I
2、Samba Server
6 I7 i; ?8 u* h$ o步驟1.安裝 samba 套件
# r U5 w; ] w! a. f1 X. F+ m# ?0 D) S8 E
利用 yum 指令來安裝 samba 套件。
/ ~& A, a2 g+ P" ]& B4 }4 T- ~: C#yum -y install samba //安裝 samba 套件5 A$ l: S: f2 s* n0 k
4 E# i! A1 p3 i9 ?- f* d***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件: % `$ z: [* [6 e& O C \
#yum install samba-client samba-common cifs-utils
9 \/ B7 W. X) ?
) x$ m& j, t: C$ w+ r# m& E. Z. T步驟2.修改 samba 設定檔 (smb.conf)
$ i2 r/ w, Z/ J" z/ O$ o: C" D# u
" m2 I0 f2 G) o. s7 ^修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。9 `! m1 X5 ~; d! n$ M' X2 V
#vi /etc/samba/smb.conf //修改 samba 設定檔
$ e0 q6 l9 |! o q& Z/ n3 \3 D: a/ G0 d& R$ @3 J2 L- b
global //通用設定) z" @- n1 e' O2 U
/ U2 d- e3 l( W
netbios name = Linux-smb //顯示於 Windows 網路芳鄰的電腦名稱8 j: r$ L* x Z- G: Z4 |9 D
4 Z# Z% u" L0 X2 ]4 @
workgroup = WORKGROUP //顯示於 Windows 網路芳鄰的工作群組名稱0 M0 O0 Y4 j9 L* P9 B
4 ], Q$ T0 }: d5 {6 _ hosts allow = 127. 192.168.1.18 //允許此來源 IP 位址可存取 Samba 資源5 }7 v- h. X& }1 r2 L1 p: z' R
, F& t1 ~1 _- s3 f, C5 b9 { hosts deny = ALL //除了上面允許的IP之外禁止其它IP存取Samba資源
& c# z6 b) F- J# W7 M* u0 U) `& ?( { x
security = user //安全等級user需在Samba主機上擁有帳號者才可登入
$ ~/ b/ z9 P! e' T! c5 P+ c9 n
; f' v3 P3 O. B9 I+ j6 T" } encrypt passwords = yes //是否對密碼部份進行加密
8 d+ u( J2 f, f9 \- Q9 b& n$ k( _* g+ x0 g- ^5 J$ g
display charset = utf8 //Samba 上所顯示的編碼
( |5 Q/ U# _% c h$ D7 @0 Z( ?7 a9 x, r8 t1 \5 ^
unix charset = utf8 //Linux 上所顯示的編碼 |0 }7 V0 }; {$ I. V& {
& S3 a$ N3 n! T
dos charset = cp950 //Windows 用戶端的編碼 (可正確顯示中文), t4 _1 y% ~/ O" i9 t9 [
. W. n, q9 f/ N0 ]6 H; L. W( {
home //分享設定,屆時顯示分享資料夾的名稱4 M) ~6 N; s( d* O* T7 g, H4 x
5 I0 i2 ?: V0 i7 E- _
comment = Weithenn Samba Files Shares //分享資料夾的註解
& G1 @8 I; g* f$ v7 Y: n+ _% M- Z2 S- O6 F
path = /home //分享路徑6 w( X' r. O4 n
% ^8 D0 @8 f* Z, ]( F. z valid users = user1,@smbuser //允許user1使用者及smbuse群組可存取資源8 y1 u1 ~5 _2 ~8 r* Q9 S8 G
% {5 G* j1 `& F2 k" b7 O% g
public = yes //允許使用者登入後可看到此分享資料夾
* M1 W8 |2 Q W! G' U) {0 \/ P
2 w, r I: n7 N2 j5 n3 N writable = yes //允許寫入
" a5 H3 d4 G, I4 C) I2 \) c, o! H1 B0 [, U: K
create mode = 664 //建立檔案的權限 (該檔案在 Samba 中權限為 664): T5 X% I3 ~; ~- g1 ]' h8 {
% _+ o) a4 m7 _7 j" O u directory mode = 775 //建立資料夾的權限 (該資料夾在 Samba 中權限為 775)
$ _0 f7 u) v8 w0 i6 g. c' K5 z3 k" o6 r
! _4 V, z5 Z5 B# h# [步驟3.建立 samba 帳號
9 V4 ^% V0 {* X" G3 t3 T1 p& u
7 M# M* F- `7 D, F7 J6 {設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。" S# b& b( ~+ f8 E8 p' H
#smbpasswd -a user1 //建立 samba 使用者帳號 user1
1 \9 q `1 C0 X5 _3 @" M$ D3 s9 ?% i: g' G+ C G
New SMB password: //輸入使用者帳號 user1 的 samba 密碼+ i3 C8 U. w y" C
7 W1 q8 c$ `# K: g7 q
Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼
) [" C _ ?! E" j; M0 c( e# ^! X7 d8 i5 O" q. G0 e; B
Added user user1. //新增 samba 使用者帳號 user1 成功. z4 L+ E4 i& R% B
% s' f, j9 N5 |' y
新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過3 ~* B0 O* f' U" L8 _
#cat /etc/samba/smbpasswd 或者
( z% O2 P- ^ _5 ?+ r#cat /var/lib/samba/private/smbpasswd$ N; N& i! @7 |
user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U : LCT-41CAF287 :
* h5 @2 Q5 A& q3 b7 \9 I7 R P
5 N# B8 E: W: _, |- Q$ ?步驟4.啟動 samba 服務
) F* E' g5 ~8 U3 z8 D$ K3 L1 C" J; r$ X+ P: l1 ]6 L
在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。. h# h6 F. Q8 M/ _. z/ A* }
#chkconfig smb on
8 q# ?3 V# _; i+ u9 e/ |* {) g. \8 l$ p+ t: P
使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。: W& ] g. e0 P* q ^5 X' Y0 V1 E
#chkconfig --list |grep smb% J$ {" l# _! \
4 N; X& v" X: S0 o5 C X ~7 b6 e
smb 0 : off 1 : off 2 : on 3 : on 4 : on 5 : on 6 : off! S9 R; ?# c$ B' B6 \. W% @
# [1 @# u3 |5 R- t% Y完成上述設定後便可以啟動 smb 服務9 D* `' `0 h" M, n- G
#/etc/rc.d/init.d/smb start: r) w0 O/ T! A; S: v
2 X |* u$ {- S+ t4 v2 R `* n
Starting SMB services: [OK] . R' `9 L& o" n* J. \
9 O6 R7 T# L% w0 q1 y
Starting NMB services: [OK] 9 M( m" J2 e2 X1 l- O# Q3 P
- `+ O# j8 Y; B/ P' S
檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。
& V7 \ m. v, _, e#netstat -tnl
, `3 R0 m8 `' E+ A8 ^3 u, z% p+ A! @, V4 }: \
Active Internet connections (only servers)
" x' j7 R6 O" H0 {! a; r
2 a, D7 s7 x7 @! W7 ~4 E Proto Recv-Q Send-Q Local Address Foreign Address State
* o( R, U0 w0 ?5 p$ K5 v% x% f1 B4 a+ V9 O5 }8 ^
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN
$ Y( f, A5 _! B* h/ G' o- V; g
% b/ Q' ?7 _" y" X F j tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN4 K5 U: v0 a- m3 d# T
2 k3 B! E ]) M ^3、Samba Client
# m" k3 C& q0 w1 w以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。
) ^' c& q7 q% ^/ E) }$ v+ q& N
/ L+ G7 c; r$ ^2 f% { gWindows Client, ?: s8 Q( C6 o$ Z$ |" r R' ~
' a% R0 S2 k+ B1 [6 o8 ]! m
上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:
, a9 V! C5 k! e( j! w6 _7 F檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。7 e5 m( I- t' t, w
驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。3 x2 E p" p2 l ] b
1 Y/ Z/ M/ L) Y2 i若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):* ?+ k8 c5 F4 z2 r- ~3 y7 P$ ?6 Q
# K5 E0 e9 E! q. K
方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)' Z( O1 `3 e9 G8 t0 V9 U
net use w: \\Samba_Server_IP\home
/ D8 r W+ R |. }+ e% @- N
1 L0 r; O0 i! S& Q$ Z9 m p方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)3 |2 f4 y, [& u6 e
net use w: \\Samba_Server_IP\home /user:user1 123456) ^4 d/ D9 _9 V6 \+ i
5 b( r. j0 X6 r# K4 f6 B* K0 u
CentOS Client
1 c0 L& G) f- E0 L; R. T& u8 e0 H
6 j' P% m0 j0 {* P) g: X若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。
7 T$ ? O3 A6 X6 Y4 l% h5 g; f6 z9 U9 G2 E" |1 u2 a: `- N5 Z
方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)) C2 T9 a+ Z3 j
mount.cifs //Samba_Server_IP/home /mnt/home -o
) `( E* E, M( r- c" E7 S2 O: }' b& P y A4 x# Y
方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)
/ R" u% U8 ^2 W' zmount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=123456
: g" N+ w/ T) I5 C/ u2 w# d" ^
4 o- C8 X3 r% O) k' Q2 J. x5 `若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。$ m3 M5 `2 d( h" Z5 M3 p
umount.cifs /mnt/home或
( Y' z7 Y& V* S( h Rumount /mnt/home/ S; m" ]% I8 N( ]6 |
8 l. D7 j- [' r& J0 B( ~) q4、CentOS 存取 Windows 分享資源. s$ M6 z% h7 o& e) V; {
Samba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:
) g' |) j. X7 N! `( v7 A% O/ O# ]1 i& w) X+ e& o8 m
Windows 電腦名稱: user1-XP8 G; [) b7 u. c
分享資料夾名稱: Shares& e: Z( |, V, y* o, K
可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)" C5 k7 E# n4 E4 z- \5 L5 S9 x- S9 G* a( N
可存取 Windows 分享資料夾的使用者密碼: 123456
+ p( u' N% @6 m$ u% P$ m3 H# \5 a
R9 g: l& z' D# [1 UCentOS 掛載至本地端檔案系統: /mnt/shares$ D8 v/ d( H2 e& p: r
CentOS 帳號密碼檔: /home/user1/secret.txt
+ J9 s9 G# H7 x0 s7 W安全性權限設定: chmod 600 secret.txt+ Q# |6 N& H, X$ D. q7 r- }" m
, \8 u: \# A" J: p" F1 n: L了解後我們修改檔案系統設定檔 /etc/fstab。' f2 B( {% p( f( j! S& Q9 \
#vi /etc/fstab
& O' Y8 R7 u# [4 ?; `0 l1 a2 M/ j; A5 @9 s
LABEL=/1 / ext3 defaults 1 1( Z. g5 F% h6 g1 M8 y. X) B
7 d# Z% @7 T. C! @7 O; }
LABEL=/home1 /home ext3 defaults 1 2$ e4 e( a% z5 ^$ i: X
! a* ~" p- i: o8 A- l
LABEL=/tmp1 /tmp ext3 defaults 1 25 y' J& R7 I1 _, `' d- v
1 Y( z! U9 ~2 n! E' o
LABEL=/usr1 /usr ext3 defaults 1 2
" K+ [7 t7 y! S t5 C
P1 i" L: M( _+ G2 P$ G8 }1 G LABEL=/var1 /var ext3 defaults 1 2) h+ }+ n/ G4 }, K
3 X& C$ Z9 X& M, O7 R
tmpfs /dev/shm tmpfs defaults 0 0- p: n# T' B2 }3 O: I& m
3 ]: c) h c; Y devpts /dev/pts devpts gid=5,mode=620 0 0
& v* O* I8 { Q8 s3 j4 |' Y+ M* N$ E: z5 a# m( g L8 d. { \
sysfs /sys sysfs defaults 0 0
$ P' k$ @6 v g# m; X$ G* w# n! b1 E( g
proc /proc proc defaults 0 06 u% V, m U: B
$ Q. G& p; d: I. V' N5 J9 E LABEL=SWAP-sda6 swap swap defaults 0 0
# A' N3 w& m, @4 y
( c; H& u9 Y6 ?$ l; Y0 h$ L2 z' c //user1-XP/Shares /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行1 Q* c9 B9 h! K( A
8 F9 K4 |9 Z: c" {1 u
建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:0 l' m; D3 o2 G; w$ F- ?0 c$ m7 y! a
#vi /home/user1/secret.txt. f6 M z/ X+ B$ S
* K% \6 o4 `% \. n* R
username=user1- U7 F5 Z' t0 x& S" g0 J/ @
4 \2 W# u Y4 x- y7 F
password=123456. T) K8 G6 E- L
. p* @( ~' m+ g) g
設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。' ]2 U* k+ y) |" n% O
#mount -a //讀取 /etc/fstab 更新
" k1 z" F7 U k8 y" P& d6 w: B* G; t6 T7 t* V
#df -h //檢查是否成功存取 Windows 資源* K0 i+ r5 n/ R1 f) y6 m) Z3 r) K. X
/ f" p0 E5 D' n8 k- X1 V7 s Filesystem Size Used Avail Use% Mounted on
1 W! g6 N" w r; E7 ]; `( k8 ~# }) P1 V
/dev/sda1 9.7G 2.3G 6.9G 25% /$ E6 F% c: B: c1 z) u: A) K, O
% `1 D* O+ \; `8 }' @ /dev/sda7 414G 211G 183G 54% /home
1 J) d" Q9 }4 T" _5 r
+ n$ [: \7 A( k: y /dev/sda5 4.9G 139M 4.5G 3% /tmp
& x& O7 ?/ g/ A2 f% z
6 [$ ` ]5 u+ x: ]2 ` /dev/sda3 9.7G 2.3G 6.9G 26% /usr `3 q3 u( s9 ?( ~2 u
% ~4 v0 X' ^ u/ G [
/dev/sda2 9.7G 255M 9.0G 3% /var
1 f7 y' N: {8 e, K8 C) @1 W& K; m" R% M6 o8 o3 M1 w
tmpfs 2.0G 0 2.0G 0% /dev/shm
2 b. q+ m0 ?1 `( j9 g
. H( K/ s2 b* q //user1-XP/Shares 251G 236G 15G 95% /mnt/shares //存取 Windows 資源成功; A2 k1 `$ ~6 h5 v: M0 p
0 I8 _5 q# I; M' K0 M; ~/ ^ ~! W
[Troubleshooting]( b' U; v x3 k7 l
從client連到server端時出現error:
5 c6 x3 p* p; {& @, ]% Hsamba mount error(110): Connection timed out0 X3 A1 K% g) s5 w& ~
一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 445
. k( ]' G+ C# l) q; `6 `1 P+ m4 w: d" }1 w' C6 e: N
至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:
: i) \. J! i7 n& E; W T
# k0 j( c7 u. r) a7 t9 y用 yum 查一下有什麼 sshfs 相關的套件:
# ?) m6 S. Y' ~+ l: ]/ v# yum search sshfs
% P. x- @" n! Q$ ]* X=====================================================================; u' C3 k; z, P
fuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH
0 X" E% p# K* A) S% ]安裝sshfs:
' I$ i9 m% _2 ]7 h; T#yum install fuse-sshfs / C# B9 n a" Z6 [3 t( b, S1 V" f8 o
建立掛載目錄:
, i. g6 B: q! u$ _: x+ |# d#mkdir /mnt/temp* n& ^0 {& z" n! B) i) s) f7 x& [
用sshfs 掛載遠端的目錄:
! R) l: f7 ]4 u$ y#sshfs -p 22 root@192.168.1.2:/root/ /mnt/temp //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄
8 b8 b* w6 l9 x. B# Proot@192.168.1.2's password: //接著要你輸入遠端ssh root密碼
9 n* f& p( m. ?1 E正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的; K; U) N# W6 D0 P) _
如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便0 b4 |7 d) A( k$ | K/ J
9 F6 Z" f8 t/ Z6 ?% w4 U
帶上密碼而不用手動輸入密碼; W) S6 P- D* ?5 }# `
#sshfs -o ssh_command='sshpass -p my_password ssh' -o cache=yes,allow_other -p 10022 root@192.168.52.4:/root/ /mnt/temp
. q5 l. K' _" X6 s5 T6 Q0 _註: 如果掛載有問題,可以開啟 debug mode 觀察過程:
# E! N' H# e0 i2 I& Q* Ysshfs -p 10022 -o sshfs_debug -o debug root@192.168.1.2:/ /mnt/temp
8 T# s1 g6 _) c( @! }, t
7 B; b2 W$ H/ b2 g( o以一般帳號(非root)掛載時,出現error :
& c( w: _7 N' V3 s4 ffuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限- Z7 C& u5 d5 r8 B+ }
ls -l /bin/fusermount% ?7 D( ]1 E7 i/ H0 H' H' {5 h
-rwsr-x--- 1 root fuse 32368 May 11 2016 /bin/fusermount5 i' m- _% d0 `4 m9 E
故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse
: n$ A$ u9 |% d' S6 U' f% q. z3 N$ v% ^8 E% ?) P/ u2 u& l8 \5 Q# K% _
可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統 SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)( T3 f( ]9 \/ C
. P! e O' c" t% O: b4 [/ h: U$ X5 f! q0 C; x+ A
|