tid=66566&1、安裝及設定8 P3 O8 `! G8 V+ i" E+ j
分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。6 o" r. i$ G A, l8 i; T
' Y5 o5 `" \& n/ v+ ?% f: d# M6 F
2、Samba Server
9 O8 F% ] C* a2 |# F7 J8 y步驟1.安裝 samba 套件( k( ?5 S; n( k* X# [ F7 Y6 A
# ]; I& y, G1 @0 P& s' o
利用 yum 指令來安裝 samba 套件。
1 L: i2 i3 `, P, l$ \#yum -y install samba //安裝 samba 套件. u" w7 }; _( M- `
( D3 R; F8 U4 \. l: r1 ^4 O
***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件: 7 [6 S3 |! x9 a1 t1 E$ N
#yum install samba-client samba-common cifs-utils% R% o# p, V B0 _- u* [" M' H: Z
' @8 J6 A2 G, F G& u6 ?5 t K* G8 g
步驟2.修改 samba 設定檔 (smb.conf)
0 d' e% k& M/ h3 L4 T
% p3 p; d% e# W2 N; H修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。
8 B( f7 N9 t/ ?# R) _5 A#vi /etc/samba/smb.conf //修改 samba 設定檔
. b- S) W7 P2 C, q
+ H8 |; o& x0 H/ X global //通用設定
5 A3 g$ P [* ]+ @8 {
, l) R6 G" J' P. ~+ f netbios name = Linux-smb //顯示於 Windows 網路芳鄰的電腦名稱$ P' K3 r4 h+ C& l7 e+ N
: `: T. i: e& ], J. l" \7 E workgroup = WORKGROUP //顯示於 Windows 網路芳鄰的工作群組名稱6 J6 x0 F4 p- u5 k9 @7 R7 ]
Y2 V( J) C; B1 I
hosts allow = 127. 192.168.1.18 //允許此來源 IP 位址可存取 Samba 資源
0 G" s! i# U& ]5 H! k5 u4 N$ u" u: X& b$ r. O
hosts deny = ALL //除了上面允許的IP之外禁止其它IP存取Samba資源8 w8 a! b* G2 }8 B
2 H8 W: D3 ^; i/ D. ]7 E g security = user //安全等級user需在Samba主機上擁有帳號者才可登入
! e$ B# _1 j1 F, x$ T
- i' ^: E( G& Q# ~/ f3 h& M encrypt passwords = yes //是否對密碼部份進行加密
" r+ }2 e( Y N0 R9 N
# P; W! s: w% y! K& z' D7 d+ U display charset = utf8 //Samba 上所顯示的編碼$ P6 D9 v7 b/ S( X0 N
' r% B3 a0 ~% p5 A
unix charset = utf8 //Linux 上所顯示的編碼9 x$ ?( O' o$ Y# w. @, P6 a
: ~* x2 i3 R/ e. w# L3 K dos charset = cp950 //Windows 用戶端的編碼 (可正確顯示中文)
1 \5 C; f Z8 a2 G q
+ X6 r! i" y. ~$ D5 ~ | home //分享設定,屆時顯示分享資料夾的名稱
+ m! d- Z3 ~0 S8 r/ W9 n
* P' i* H! y3 _ comment = Weithenn Samba Files Shares //分享資料夾的註解
: k1 Y1 S- k3 B9 o: W0 c0 Y- }) {) X5 u* r8 U
path = /home //分享路徑
* A6 g7 k/ Y% h& m. @6 P
/ F6 e2 w# N6 \ valid users = user1,@smbuser //允許user1使用者及smbuse群組可存取資源, i; C" [% e( y0 P" t: c1 s/ _# O
0 I% z+ V- k# O2 J" Z
public = yes //允許使用者登入後可看到此分享資料夾
H* `, R8 p( a9 E4 L4 g& ]- s" ?) K/ z0 N; `) A9 R, }! q1 o
writable = yes //允許寫入
3 C' r0 ~# {0 f& f
0 @) ]# d) S: z1 O create mode = 664 //建立檔案的權限 (該檔案在 Samba 中權限為 664)5 f8 s1 o6 \% a8 V _1 N3 T
' C% U2 Z; {" c, [) S directory mode = 775 //建立資料夾的權限 (該資料夾在 Samba 中權限為 775)# K7 D- k; m" B9 w- n3 o% I
/ ]& `% T( {3 y* {& L3 i! G
7 D) `; O8 ]5 z* J/ u7 g% q
步驟3.建立 samba 帳號9 u& e6 Y8 M" [% a' N X2 J
3 L, x3 [& o1 j0 g設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。
9 b) c% w) b% }, F: [#smbpasswd -a user1 //建立 samba 使用者帳號 user1+ z% u9 ?* I% c. G9 S7 N4 C2 Q% G
7 R: a% r2 B! u% K
New SMB password: //輸入使用者帳號 user1 的 samba 密碼
: i7 \2 V$ \/ o8 w0 \0 ~, U2 S% h! C/ z/ Z- o0 K0 A) L4 a9 V/ L
Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼/ y7 e- r7 X; [! r( f. ~/ O
0 Z& N6 }/ W& O6 o9 e! v3 s1 {
Added user user1. //新增 samba 使用者帳號 user1 成功0 j' X0 c3 Z# k( b9 H
! _3 d) Q$ z5 s O o新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過
" b# E6 a* Z$ j; O; z \& r: G#cat /etc/samba/smbpasswd 或者
1 L$ ?: ~/ G4 `2 B/ U, n#cat /var/lib/samba/private/smbpasswd
) s" j% O+ J& B- d6 z* S, {& w user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U : LCT-41CAF287 :
/ |& J a ^; e# W7 C/ D
" h! h" k' t ^ W C步驟4.啟動 samba 服務
, b' j9 r% v9 y" C9 i' p; S8 Y. q$ e( w4 T
在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。
8 ?' q: r' i( z#chkconfig smb on
" G4 @9 Q8 M5 Q1 Z! W1 ^1 d
/ y$ U. r7 i$ N$ c# Y; I使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。" M% g+ f, Z$ x& i
#chkconfig --list |grep smb* `5 y5 r! j; x& ?, z t9 a5 L
; x8 r( z9 c8 q* m& M% H" k
smb 0 : off 1 : off 2 : on 3 : on 4 : on 5 : on 6 : off6 x# u ~1 z% a, y
8 {" Z5 H# o5 v( L4 n0 R0 p9 P
完成上述設定後便可以啟動 smb 服務
, [* d+ ?' u0 h0 ^. \#/etc/rc.d/init.d/smb start
$ T/ G! O+ S2 u$ N6 j6 m5 R% n5 y) z4 U: C9 H+ _% g6 S# n
Starting SMB services: [OK]
! Q7 h3 u8 D& y3 x5 p1 K
4 w+ A& L3 i7 z& Q Starting NMB services: [OK]
; ]* w6 s! t& |7 v$ p/ e. W; z1 E
檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。
; j$ R+ G+ B" ~* R3 n. K#netstat -tnl( F! ]- `7 y5 Q0 L# p
$ {: r+ S' h3 ^% D B. V Active Internet connections (only servers)9 ^# q, _$ v0 P( {' l) J. U
6 F5 H: f. e7 g) [# m# a8 J
Proto Recv-Q Send-Q Local Address Foreign Address State" B9 o9 L( f% u" F- x
, W6 s1 R {' c# m, [7 k3 m$ T
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN' K2 X6 a/ M( m/ J0 W8 L0 p- m1 ?
4 m, n4 C) a4 ]% U tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN+ [8 Z$ ]# f" e8 Y2 k' C
- L4 G! r# `% m% p
3、Samba Client6 P& r: Y% V# k! T6 H8 y
以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。+ |1 q6 _" [) B6 H" t& z# F* W
* v/ d; B$ o" Y0 q \
Windows Client
6 W$ |+ p6 _6 c. R; I+ F! b
; w* o) v/ i+ e8 r3 {+ ~9 }上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:( X8 R+ F" }8 X/ Z* m% c; C
檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。# R; _ n) s/ r7 P! T/ B3 \
驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。
, G6 D% e/ Q% D4 o$ ]* m
' x& ~+ Z, {+ j1 B4 \# x" V若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):
' r0 j( m4 Z: C6 K& {) Z) b. U- {) R( M; Z# e2 t) w! R
方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)
/ f2 w# W+ a- H* B ^8 ? net use w: \\Samba_Server_IP\home
, c6 x) k. |" R% K7 i, g0 u( w5 M1 H) a' `% \
方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)( `, D+ _; n+ k% h+ ~
net use w: \\Samba_Server_IP\home /user:user1 123456/ S" P# a' m2 q0 ]
6 ~8 ?. {) ^: w2 n6 `
CentOS Client
, L+ W. x+ D, O$ k$ W# s+ b/ {2 ^/ k7 e7 Z
若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。
6 q( M4 j5 M: A1 g0 z6 d
4 _5 }/ g# P# I% P% o# O5 {% s0 t方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)0 F" y; q( K! D) {7 L3 k6 b* N9 A
mount.cifs //Samba_Server_IP/home /mnt/home -o
! c. ^: F4 k: B2 P3 z+ x+ [( j/ f+ j( m, q* O W: k! e8 `3 ^
方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料). m$ S8 {6 o: X/ n9 A3 c
mount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=123456
4 ]: ?. {! p4 Z c
2 B2 }9 |' a' }+ m: B! W若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。
7 J) E6 a' x' ` o# qumount.cifs /mnt/home或2 ^1 w ?8 K2 e1 P8 }
umount /mnt/home
4 p% {- p* Z" Y, ]
% S4 \0 t% E* v% T4、CentOS 存取 Windows 分享資源
7 ?; B5 x& r& F) q; {/ qSamba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:
0 P5 q4 |! b: {% {
3 Z @, c/ X, p/ Z6 N' N* [Windows 電腦名稱: user1-XP
0 X5 _1 O& q: p7 T8 p W+ z' d( J! L+ B分享資料夾名稱: Shares
- M. L \% B: o可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)8 n0 s2 X6 k$ J1 |$ ?
可存取 Windows 分享資料夾的使用者密碼: 123456 b) m2 G* g! T
* O3 F, T8 ?8 z T! q( F
CentOS 掛載至本地端檔案系統: /mnt/shares! P4 D: d- H! {+ P4 ^+ k6 x
CentOS 帳號密碼檔: /home/user1/secret.txt
) r. d- c1 d( d' ]( c; `8 l) j% F) O安全性權限設定: chmod 600 secret.txt3 w2 ?" M) _' h4 u9 ~8 r+ z
5 I4 O: j6 k! k) J |了解後我們修改檔案系統設定檔 /etc/fstab。; C# f) ?+ d) j. R" z
#vi /etc/fstab9 a4 X1 J# ~" H2 s
. A' ~1 x9 {0 E# a LABEL=/1 / ext3 defaults 1 15 a3 Z7 Q$ b$ u: `- y5 b9 M
( n7 [6 ^" k2 u, k' X$ `4 h0 {) Z
LABEL=/home1 /home ext3 defaults 1 2
7 t/ k6 u* G6 B
) k8 }( Y5 o; d* ]/ j) C7 F LABEL=/tmp1 /tmp ext3 defaults 1 2
k. }2 Z: e5 \( i* z% l2 ^
! P- L2 U+ d* K4 a LABEL=/usr1 /usr ext3 defaults 1 2
$ d. N. U1 q9 {- D) Z6 L d; P H4 n: j$ `* {2 a: E8 r6 l! f
LABEL=/var1 /var ext3 defaults 1 2
' ~1 b, g4 F/ ^4 ~8 l( Y* B- B6 Y- h$ c% }) r
tmpfs /dev/shm tmpfs defaults 0 0
" ]5 r5 _/ R" h5 C/ R6 C. V; r* d/ d, ~5 ?: i6 B
devpts /dev/pts devpts gid=5,mode=620 0 00 b/ w& @0 `+ y( _1 _. c
7 U2 Z/ Q3 W6 \% C7 C
sysfs /sys sysfs defaults 0 0# d2 r( u* r8 f% T, j6 ^
H- z* ]* F2 E: \2 Y3 v& ]
proc /proc proc defaults 0 0
2 r8 {; q" ?% n$ n! ^, k: P9 v- `0 G) k) R- ?$ S5 f* g
LABEL=SWAP-sda6 swap swap defaults 0 0
0 \" S! n X, ] E0 t' y; M! L2 L; _3 @5 S
//user1-XP/Shares /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行" ?+ |6 p# ?2 F: V! n% u- T
2 V% o. i. E" X" Y9 Z$ N
建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:" v3 d" h9 I2 V, G4 _2 @2 `4 t( h
#vi /home/user1/secret.txt: ^ F' s3 s( X" Z ?7 }& T
7 _5 H- ?' S7 H7 W/ Q2 w7 i. W+ z username=user1( q9 D+ Y" z7 t/ f
2 b# o* E2 E: k1 f* E, Z$ ^' E
password=123456
0 u% N- h5 {% a( o5 n- b
) y5 f" H$ f2 l# }+ j( f設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。+ c! [6 _; d$ F( d+ [6 K
#mount -a //讀取 /etc/fstab 更新
; s8 l7 U5 N+ o+ p" j! [
8 B- v4 T a4 m$ P#df -h //檢查是否成功存取 Windows 資源
$ f6 b! \9 g I2 f% i
; T, w1 r! ]$ t/ L0 Y. G6 q Filesystem Size Used Avail Use% Mounted on4 T* _" \9 Y% [
1 Y' D/ G0 P& d q$ }$ y! A2 r* E. V
/dev/sda1 9.7G 2.3G 6.9G 25% /; z3 F$ U& I3 u; c
3 r% Z2 f6 m; N. Q8 j
/dev/sda7 414G 211G 183G 54% /home
8 j$ ~' @0 j! K, Q0 Y w! ~
3 M3 F0 \# B9 D3 I% T& S /dev/sda5 4.9G 139M 4.5G 3% /tmp l$ M- T6 o6 F( T. e) d
) l4 l9 ^" u# R
/dev/sda3 9.7G 2.3G 6.9G 26% /usr
: f6 U7 L3 ~8 O/ a) W% H% L" W4 n* N; _
) R/ q8 Y* h/ t8 X, g7 T0 s: t! J /dev/sda2 9.7G 255M 9.0G 3% /var. D6 r* K+ F5 z
1 z9 G. {# Q, M6 W4 j
tmpfs 2.0G 0 2.0G 0% /dev/shm7 c6 |) [7 `' X/ }$ [
7 V, k9 C2 h8 y3 T8 d
//user1-XP/Shares 251G 236G 15G 95% /mnt/shares //存取 Windows 資源成功5 |: \2 H- I* ^& ^+ w
+ q4 y9 |/ r* y9 O8 ^) N1 ]
[Troubleshooting]
) ?- x8 j! J ^0 T* T從client連到server端時出現error:
& A. T, |5 z+ I( F+ W# \( rsamba mount error(110): Connection timed out
* `% g. {5 ~" O# `: ^) m; o一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 445: J4 k/ O1 P {: ^
( T, C, { c4 Z. G2 g0 y
至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:
4 _/ z; k9 |! x. G2 @3 k7 T' z/ [( R- u8 E# B
用 yum 查一下有什麼 sshfs 相關的套件:
6 J" T a, K- k1 x$ I# N# yum search sshfs
0 k2 @: U: e( g4 |/ g! q( b/ q=====================================================================
; t* g& [# r2 Sfuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH: Z4 v. B& H2 u+ g" M
安裝sshfs:0 g3 Y9 X6 g; M
#yum install fuse-sshfs 0 i1 o2 K( O2 i( D; a$ Y
建立掛載目錄:
. e2 q: J$ ~( o0 w' u/ R, D#mkdir /mnt/temp
, g# y- C, S, X5 S! _ q, H用sshfs 掛載遠端的目錄:4 K1 b# K% w& x! ^: `
#sshfs -p 22 root@192.168.1.2:/root/ /mnt/temp //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄
6 P0 p- {1 B+ Aroot@192.168.1.2's password: //接著要你輸入遠端ssh root密碼( m% y* K( n/ G- a2 A8 r2 Z
正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的
/ |: m0 Y3 v- r x如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便& Z& o/ C9 V# b
) S" X. v4 z: Y! u
帶上密碼而不用手動輸入密碼
* h F7 }; d0 N5 p#sshfs -o ssh_command='sshpass -p my_password ssh' -o cache=yes,allow_other -p 10022 root@192.168.52.4:/root/ /mnt/temp% M( T2 C' v7 R# i' D2 @
註: 如果掛載有問題,可以開啟 debug mode 觀察過程:
$ K( f4 C$ h# K" w* v* Qsshfs -p 10022 -o sshfs_debug -o debug root@192.168.1.2:/ /mnt/temp8 e1 m& {, B L; j+ q7 U
9 Q C) z; ~0 h. B' c) C; [
以一般帳號(非root)掛載時,出現error :/ \8 _* O3 L6 D ^: `
fuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限
, Z b+ X& p, B. [* J. l: f2 Y% f" pls -l /bin/fusermount* Z; d3 ?* L9 O; O. Y8 Q/ f5 ]
-rwsr-x--- 1 root fuse 32368 May 11 2016 /bin/fusermount
3 _8 i8 n6 B& g2 y故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse- C$ p* k5 ?# e
5 A5 z& ]& H' o- n
可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統 SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)9 S0 z$ D M" O6 o0 C7 n
' Y# [( U% L/ Q( Y! S
& k) w9 q# e M# R0 w1 D0 @5 r; u
|