52AV手機A片王|52AV.ONE

標題: Linux與Windows間共享資源 --- 架設 Samba 伺服器(或使用sshfs) [打印本頁]

作者: IT_man    時間: 2017-9-3 21:06
標題: Linux與Windows間共享資源 --- 架設 Samba 伺服器(或使用sshfs)
1、安裝及設定# i7 r* t9 y  W* S) Y
分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。' }% x% s; v8 H! e% P$ v; D

+ D1 c9 Y/ M  ~# D1 D2、Samba Server
- k( @0 d7 q/ A* w  Y步驟1.安裝 samba 套件
- {0 n3 B' j* x9 f5 C1 ?  q) F
, Z6 j( C3 q+ w& `  V' P利用 yum 指令來安裝 samba 套件。
$ Y5 I1 k( P$ _2 J3 \7 M#yum -y install samba    //安裝 samba 套件
0 }2 I  e+ E% O; h! M
' G; x6 k+ n1 f3 i4 V- C& j# i1 |, Z) a***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件:
0 T' x, c1 C% l5 G* I+ f#yum install samba-client samba-common cifs-utils6 D4 S1 e- q+ U0 x5 P' b$ o
& T" w" `  {& i4 o( g
步驟2.修改 samba 設定檔 (smb.conf)% V" K) r( |2 D  Z( y% n' C
! K7 ]8 n5 U6 w: a2 \$ {
修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。
, l" e& V2 Z7 i#vi /etc/samba/smb.conf  //修改 samba 設定檔
8 Z! v# T5 ~0 Q; U- {1 A1 f- n* I  o3 I. z
global                                 //通用設定$ r$ V3 n* w# t7 J3 T( F8 q

+ d7 M: v; Y6 j netbios name = Linux-smb            //顯示於 Windows 網路芳鄰的電腦名稱* g9 d4 B+ J* p+ u; x

* Z: b- R* z( g7 @) U9 { workgroup = WORKGROUP                  //顯示於 Windows 網路芳鄰的工作群組名稱
& {( i: ~+ m: i$ O: _/ x% k, j7 l! q/ I$ i! ?" f
hosts allow = 127. 192.168.1.18        //允許此來源 IP 位址可存取 Samba 資源( I; B7 Q' M! I) q# R4 H% M' s

3 P+ M2 k! i' P. L$ E* @ hosts deny = ALL                       //除了上面允許的IP之外禁止其它IP存取Samba資源
% M1 f; q. y2 H. ~, `
6 T1 o' D2 i% s$ n( l( i6 s- `" r0 o security = user                        //安全等級user需在Samba主機上擁有帳號者才可登入
+ l: h7 |# u1 E8 P
# G3 x% ]" D& Y encrypt passwords = yes                //是否對密碼部份進行加密8 ^' ]  J1 @2 C! K% K$ o6 U
3 F5 K' L# Y% P& i4 W0 w
display charset = utf8                 //Samba 上所顯示的編碼
1 C' y, F0 Z. d- q& a
. l7 F/ C- D) ] unix charset = utf8                    //Linux 上所顯示的編碼
( U% ?) B. q% T) {) u2 A' ?+ Q( c$ r2 x& f! y7 ]
dos charset = cp950                    //Windows 用戶端的編碼 (可正確顯示中文)
7 N, B, d4 R7 L7 s) O. B( ^0 U" [: \2 t+ \& q
home                                   //分享設定,屆時顯示分享資料夾的名稱
& e3 c5 i% G) g( y
7 Y/ E( _; v) N8 i3 q comment = Weithenn Samba Files Shares  //分享資料夾的註解4 h4 o5 E; W. d0 I* A. w% H
8 D% |( w, M9 r3 C) Z2 r& l
path = /home                           //分享路徑
1 o. g# ^" d7 T
. x+ V& S  A# ] valid users = user1,@smbuser        //允許user1使用者及smbuse群組可存取資源7 p, v# z4 d% E! R

0 c; i. o0 O/ [! [$ \& k/ ^ public = yes                           //允許使用者登入後可看到此分享資料夾6 e! U$ q8 B* n

5 n* ^* b8 \0 u writable = yes                         //允許寫入' x2 v& E0 y$ K8 F5 }* G( o; w

/ |9 x1 i/ J. a: U( q create mode = 664                      //建立檔案的權限 (該檔案在 Samba 中權限為 664)
- R! ?( R# C5 F- p6 q  q* P* b  x- h& D* Q) U. i. i3 s% E0 k/ g
directory mode = 775                   //建立資料夾的權限 (該資料夾在 Samba 中權限為 775)& G5 E+ ~* k% E2 v" H. w1 }

6 e  [, ]5 z! y! X0 q4 }
/ p& Y( K1 ^% R步驟3.建立 samba 帳號
2 g, Y: c& [% B& o5 {6 \" a: _5 w( d1 f( Y" o+ h
設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。/ w( c8 ]! D! g, _- N- P' V; s* I
#smbpasswd -a user1  //建立 samba 使用者帳號 user18 N. U. E6 X+ X# ?% c2 A7 ~* k  n
$ U  Z5 D1 ~6 L( l
New SMB password:        //輸入使用者帳號 user1 的 samba 密碼6 k. T5 w- h4 \7 u# ~
; b) M: ~6 K+ m  M) ^9 \* C% F" H
Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼9 k+ m8 O# J/ h8 }; y& x

, b6 O. E1 a, Z3 c Added user user1.     //新增 samba 使用者帳號 user1 成功# o8 k( w3 a7 w. M. ^/ e' I5 z

" ~: x" D( a; G( ?新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過# j3 |, N* ^) Y1 k8 a
#cat /etc/samba/smbpasswd  或者
6 }* V* G) S, x#cat /var/lib/samba/private/smbpasswd6 q. \2 V0 U; J+ q
user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U          : LCT-41CAF287 :/ m9 b: Y% q  m

$ u% l/ ]2 Q& X# t; _步驟4.啟動 samba 服務( ~2 _9 H$ C& X
. c0 ?6 E: `: {& J
在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。" q$ T: x+ T2 R8 V+ a9 }
#chkconfig smb on4 O  n. R" [# J
5 ^2 x1 \1 ^( C( A$ M# A
使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。2 ?  d/ [: w2 ^7 x5 W
#chkconfig --list |grep smb
' V1 K; w+ [! Y9 I- J! k7 N; v
! k, x! L0 [" Z; X& n+ V" [) P* F" m smb             0 : off   1 : off   2 : on    3 : on    4 : on    5 : on    6 : off
! M" a& j& A6 W2 o" E
+ `* H3 t/ c: T- m完成上述設定後便可以啟動 smb 服務- ^9 i7 E. Z( q5 L5 t; ]. X" d
#/etc/rc.d/init.d/smb start' j; h- ~- ~" _
3 L* g" b! Q# Y" u% C9 M
Starting SMB services:                        [OK] / X  M2 L8 l7 }$ P
, U0 x7 U$ Z2 f& b6 E. l. F
Starting NMB services:                        [OK]  0 c) u0 g/ j2 z2 n( A* h* ^

3 N9 ]2 s( `; B. U0 L! {" E( u檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。! v+ m) m+ `$ t8 V0 W7 i
#netstat -tnl9 r5 d# B! M+ k* [5 e* R8 v; ^. {

! ^0 k+ G0 j9 i  x; g% E Active Internet connections (only servers)* I0 p- Y/ _) ]: `& F' G* G7 o
6 A" g+ k* v" H1 ^8 v
Proto Recv-Q   Send-Q   Local Address    Foreign Address    State
' I& ~1 B8 Z8 m$ P; r& s
) |) `' k: I# Q& m- F0 ~/ { tcp        0        0     0.0.0.0:139          0.0.0.0:*    LISTEN
) b( w4 m2 Z' t- ^+ M+ m. Y8 P9 g; V$ b: Y' |) ?- m
tcp        0        0     0.0.0.0:445          0.0.0.0:*    LISTEN
) k( i0 Z! i) y6 u
  u. q. i4 j( V+ a" R2 O3、Samba Client
3 a" l0 f6 ?( \0 G: Y以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。
, X' D+ e3 |) A2 ?8 X% F" i/ V& g
' V2 r1 h& X! q9 S% I6 s' s8 xWindows Client8 o3 ?6 C) V" g- |) ?6 s1 S

* \, }' ?3 o$ _; ~上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:6 J9 h  ~1 y1 W6 v
檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。
8 S& C/ g+ Q4 F6 H$ U' N驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。
, C/ l  g: F4 `/ w8 _
" y7 T; p& ^0 C; g# {% w若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):# N- n0 s/ k& C0 G
5 q9 y6 l% {+ t6 K# U
方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)
$ `" l8 `. t5 h" c5 p) v; O5 u, V net use w: \\Samba_Server_IP\home# Z* N! r7 W0 U6 i0 @/ R: `
9 N+ n6 ^2 t% }  |1 g: T
方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)
# F0 o& \8 Z; \) T1 M net use w: \\Samba_Server_IP\home /user:user1 123456
- ^2 |$ @+ Y- l, V7 Y+ O3 G3 |# y* Y' C
CentOS Client
6 m( [, [, i: H! y
  W' Q9 }; M- C2 j" \6 N若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。
+ R" L' A, {2 A) m' n" `$ P. K. A, \$ A1 T9 d  M
方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)
- C: N/ u8 @+ ]7 ]& r/ G+ J" q, amount.cifs //Samba_Server_IP/home /mnt/home -o
7 ~4 v$ C6 |0 H" |2 t6 R! A7 ?# H" y+ k% r# D. }# b
方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)
9 Y+ z- x. H$ k/ N% Mmount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=123456
" J$ l: Z4 C+ B3 U2 P. v& T0 y  K- t3 l: i, F
若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。
. e; I) ~7 s- Q6 ^: ^6 g1 L7 Oumount.cifs /mnt/home

* L1 l, F) i8 `9 Y1 Mumount /mnt/home  }# S* X! C' }  s
" N: I! p0 y9 z( G
4、CentOS 存取 Windows 分享資源
( k1 l( O. k- o. z$ dSamba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:9 S, G4 @6 H0 C6 f; r. V: s
; y7 N$ _& A. s$ s7 {
Windows 電腦名稱: user1-XP. z, k# Z7 @6 G! R! Q
分享資料夾名稱: Shares. G$ W$ u  B) N7 o) E
可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)
0 I# z/ }; g0 d- e/ z: E可存取 Windows 分享資料夾的使用者密碼: 1234563 ]# h' x  A9 T5 p& X! i
1 _8 @. [2 M$ @( }+ U+ n# l! P
CentOS 掛載至本地端檔案系統: /mnt/shares, }4 r# j1 B4 U0 I0 E
CentOS 帳號密碼檔: /home/user1/secret.txt, G( y  Y$ \; C/ w  c
安全性權限設定: chmod 600 secret.txt. c% z6 C# Y# ]
: [. g9 u" P9 _/ X( E
了解後我們修改檔案系統設定檔 /etc/fstab。
! v/ O3 C% Q! B1 I! H#vi /etc/fstab4 I: X% X( s/ @! e
& [( R6 F* j  r6 M, D
LABEL=/1           /        ext3    defaults        1 1! J; `6 O3 D# M( q# d" r( L% w  t
- p' t2 c; W  E
LABEL=/home1      /home     ext3    defaults        1 2
. L' k# c2 B( {; q9 ^  R. e( A3 p2 b8 T" _
LABEL=/tmp1       /tmp      ext3    defaults        1 2
) A5 _8 M7 Q2 H1 W9 A7 ?& Z' w, D" C2 N5 O
LABEL=/usr1       /usr      ext3    defaults        1 2
/ y+ R! D* F  z& X5 `/ Z, O4 w1 t6 `0 P+ p1 X3 {+ m7 F
LABEL=/var1       /var      ext3    defaults        1 2
, i4 E& Q- a4 U6 {' j" i
" D3 P/ t, j  t# J$ S* l tmpfs             /dev/shm  tmpfs   defaults        0 0# }7 w: M/ |3 |0 A

* X8 K* n7 l9 E1 A* e( E: {! b devpts            /dev/pts  devpts  gid=5,mode=620  0 0- G4 U( M' P6 D

$ T# _* E+ ?) F& r sysfs             /sys      sysfs   defaults        0 0
& f' [- S- G$ o/ ^1 P. s/ V! i% g
& Z. r% Q# W( A) T6 x proc              /proc     proc    defaults        0 0
, t& J' `% L& o2 T3 Q+ H. L
) A" T4 U$ z" ^6 b& _. @! F LABEL=SWAP-sda6   swap      swap    defaults        0 0
% a$ ^- M9 o& T: r
* P) K) }. V/ Z+ ^' d- p' Z+ D //user1-XP/Shares  /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行. Q- L5 h, o+ ], {* Q, y4 \& U3 ~
, I  [  F6 Q8 O3 s4 R
建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:" \. N& b6 i( D. A
#vi /home/user1/secret.txt2 f* j% @4 v! l" Q( m! c  R/ ]( M

- r2 ?+ K! w& g username=user1
4 `" i! j& j2 `, R
/ g* t( D4 }2 b+ v  X) H- l password=123456( S3 B( [+ p, o1 }: w- @* q) s* k

4 E5 l6 `* o% Y設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。
" L' ~! L9 s7 N2 d- r  O#mount -a     //讀取 /etc/fstab 更新
4 ~$ u. W  Z7 T, U% P
% Q2 S7 U7 ^# H#df -h        //檢查是否成功存取 Windows 資源8 |; j2 P# E, s( l4 H

5 J9 g8 ^% b$ i4 v5 h6 o$ K Filesystem            Size  Used Avail Use% Mounted on+ a7 X, n3 D9 z' e) j. x  i# _

3 R( B0 D/ A$ z$ u/ ?3 [* v /dev/sda1             9.7G  2.3G  6.9G  25% /3 v! t8 Y/ n6 Y9 ?$ h
5 s. _7 L) y- L" M0 k/ f
/dev/sda7             414G  211G  183G  54% /home
; D  O; j0 p9 F
& o1 k) o8 Z3 \  Y) o. \1 U /dev/sda5             4.9G  139M  4.5G   3% /tmp
  `) [( u6 m3 h0 ~- W; j
. Z* n% b! @0 S& f0 o( K7 ]7 ? /dev/sda3             9.7G  2.3G  6.9G  26% /usr$ K9 R4 V  X1 o9 x. E

: l# `. _' w& t( b; R. o' o /dev/sda2             9.7G  255M  9.0G   3% /var0 i* e1 X, ~% W0 {
) |/ p& ]3 u' }+ s
tmpfs                 2.0G     0  2.0G   0% /dev/shm' s8 Y1 O! f( l$ V

& b& ?0 s, ^5 z //user1-XP/Shares  251G  236G   15G  95% /mnt/shares  //存取 Windows 資源成功
3 q- V; R% n8 Y& I
2 y3 \4 s; Y3 m: n
[Troubleshooting]
9 _! B: s; g' \- U從client連到server端時出現error:  7 i! d; H1 e5 F
samba mount error(110): Connection timed out
" f- o+ Y6 n4 i$ L一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 445
& _5 }$ d# W# C7 I& y$ c9 s) t
3 Z9 w# T5 f* H* P( v0 K2 I
至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:& S) u  f" h+ I) O3 C; q% [

& u8 Y1 B5 t+ K& G* X1 J! [: `
用 yum 查一下有什麼 sshfs 相關的套件:
, Q/ W' k' d& m# f7 V# yum search sshfs* L) C. U1 Q( P! [: Y* d* n6 _
=====================================================================
" D0 U; ~- q/ @fuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH' f" x3 w7 L6 f" L
安裝sshfs:/ @' r7 \) O0 w; ]
#yum install fuse-sshfs , u- C; R' a5 l9 o( w
建立掛載目錄:, Z7 e9 T; @, H- M" _7 U- p9 A
#mkdir /mnt/temp
$ h) e4 A6 E: B! [  Y用sshfs 掛載遠端的目錄:
! V  E  |6 g$ z( P  t2 }6 B4 q#sshfs -p 22 root@192.168.1.2:/root/  /mnt/temp     //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄" E( u  n9 m! J2 {
root@192.168.1.2's password:    //接著要你輸入遠端ssh root密碼! x5 b+ A4 f7 Y$ S! w
正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的
  t# k! j( C" L. C' N& b如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便% i0 T1 t# Q2 h. T
7 P" d+ L: `) P$ S
帶上密碼而不用手動輸入密碼
6 I2 X8 c# T. i) |#
sshfs -o ssh_command='sshpass -p my_password ssh' -o cache=yes,allow_other -p 10022 root@192.168.52.4:/root/ /mnt/temp% K1 p; k- D5 @7 M8 f, w
註: 如果掛載有問題,可以開啟 debug mode 觀察過程:
" n6 Z: I+ T0 i& l( Y: rsshfs -p 10022 -o sshfs_debug -o debug root@192.168.1.2:/  /mnt/temp
. B" c9 D" r+ A9 X# f

; o( j) C( Q  [, l% l1 K. K0 f0 N以一般帳號(非root)掛載時,出現error :9 W4 \9 S9 I+ U+ D
fuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限
, ~8 B5 Z! o* e/ d$ K4 z; p# cls -l /bin/fusermount( r1 o2 O+ A7 w
-rwsr-x--- 1 root fuse 32368 May 11  2016 /bin/fusermount
; N6 F( C( m- _: f, R故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse1 `- p& ]8 N& V9 l" a. v  e; ^
% }+ _6 V; A+ Z. r, q3 |5 `
可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統     SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)
6 J% B, }% ^6 a4 c+ v& H, C+ F5 W% f6 \

6 ?0 C/ K, u5 l4 a7 X0 t% @6 P
作者: king383    時間: 2021-3-10 21:39
now the best way is to use WSL (Windows Subsystem for Linux)
作者: hoteddy0507    時間: 2022-3-18 16:28
原來如此




歡迎光臨 52AV手機A片王|52AV.ONE (https://www.52av23.xyz/) Powered by Discuz! X3.2