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

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

作者: IT_man    時間: 2017-9-3 21:06
標題: Linux與Windows間共享資源 --- 架設 Samba 伺服器(或使用sshfs)
1、安裝及設定
0 B( x* f% ]& U9 ]/ W, J7 A分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。
# c, h+ u  E; ^' a2 R4 g& B
4 N. {% z8 Z7 D) w& |/ i% O2、Samba Server6 y8 n( f0 x  u$ i$ `
步驟1.安裝 samba 套件
9 [& z1 w/ m2 j0 v, m: W3 w' ]& W5 @# D6 F$ w
利用 yum 指令來安裝 samba 套件。
8 g( }6 }7 v  I( ]#yum -y install samba    //安裝 samba 套件9 g% L. m! q; F& f* d+ L

5 C1 q% A" B9 i" Z+ q***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件:
" w2 [: M0 U( ~" y  B#yum install samba-client samba-common cifs-utils5 m( Z, f. }4 B( J( F! k
/ ^0 t" e" _2 d
步驟2.修改 samba 設定檔 (smb.conf)
0 U7 J1 G, K) W, [$ D+ W# ~8 p* Q. K9 [- Q. c" `; d$ ^/ n% N
修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。0 x# q* M6 e% `. _
#vi /etc/samba/smb.conf  //修改 samba 設定檔
3 A7 S8 A2 z4 D4 {& @6 U) R/ w! }0 i6 |6 c1 o
global                                 //通用設定
7 p2 D4 m5 _: e# J
. c1 n$ L& p% C, v netbios name = Linux-smb            //顯示於 Windows 網路芳鄰的電腦名稱+ q$ h/ w/ |- Z( Y8 U8 E
! Z) R9 v+ V. H5 I
workgroup = WORKGROUP                  //顯示於 Windows 網路芳鄰的工作群組名稱3 I  e2 C) \5 @. }; |$ E

* a: j) J8 n/ E& h! n" a0 o3 E hosts allow = 127. 192.168.1.18        //允許此來源 IP 位址可存取 Samba 資源, M1 _) i6 c3 |4 ?& h( Z$ f6 `( Y
6 D" o0 B& T; b2 @% ]
hosts deny = ALL                       //除了上面允許的IP之外禁止其它IP存取Samba資源
9 `4 e8 i6 e1 E9 B0 ^3 H
" K9 e0 ]9 c7 B# H  r security = user                        //安全等級user需在Samba主機上擁有帳號者才可登入) o2 S& R, F. p0 |! _* q* X4 f5 ]

" M4 F" p$ v2 c9 D4 ` encrypt passwords = yes                //是否對密碼部份進行加密+ X, N  i( i& u$ F  Y6 y" f
7 {7 l6 w1 s& q+ g: h* V; F
display charset = utf8                 //Samba 上所顯示的編碼
' X% J2 @6 y7 f: Z9 R2 M  d  s6 K: y' ?
unix charset = utf8                    //Linux 上所顯示的編碼
5 D: c6 B" P' M! r" e" [
5 M8 v* o1 Y( i# t# @" { dos charset = cp950                    //Windows 用戶端的編碼 (可正確顯示中文)  n  J. @" }0 T, w2 \( ~. `8 Z5 @
4 X5 g% r; k! m
home                                   //分享設定,屆時顯示分享資料夾的名稱$ q& H/ d) A( g6 D9 Q

2 Q  W) i; s) `4 G0 o" t comment = Weithenn Samba Files Shares  //分享資料夾的註解
; V! ^8 t. W! x' b, E) D, B3 u& n4 F5 z) @! R7 ^! d
path = /home                           //分享路徑" v5 p1 {0 G) _% A1 d8 ^0 d% {( F; D
6 ^2 v/ x9 E/ ^
valid users = user1,@smbuser        //允許user1使用者及smbuse群組可存取資源0 d% \2 I( a6 A7 X. m$ |
2 s! {4 Y! C( `( M$ O" S# C5 N
public = yes                           //允許使用者登入後可看到此分享資料夾4 [" Z! n; I% j* y1 c+ r

7 d5 n9 B% f- n9 {' j2 p, P writable = yes                         //允許寫入
: [* p# d8 I/ a- I; x
8 H7 h; a, ?3 R0 @ create mode = 664                      //建立檔案的權限 (該檔案在 Samba 中權限為 664)
4 |6 H% _7 ~' ^) k6 Y6 e$ }. d1 s. ^' u6 m% i
directory mode = 775                   //建立資料夾的權限 (該資料夾在 Samba 中權限為 775)& R- u! X) [2 K) S+ }

6 i8 i) O0 G6 g+ h+ r) H8 q6 I1 d5 @% Y6 G% p! l4 B' R0 I
步驟3.建立 samba 帳號
4 E' h5 X# z4 V+ H. u; B. P" b% u- ~9 W( B$ J3 F# O- C
設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。
0 P' S3 V% ~+ v#smbpasswd -a user1  //建立 samba 使用者帳號 user1
1 v5 }5 s1 N/ f1 o, n) y
) H1 C+ }" G6 t New SMB password:        //輸入使用者帳號 user1 的 samba 密碼" ]; y, i7 b/ C) a0 L5 ~
! c# c1 ~( T% Q
Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼
! O! e, V' i+ a, J/ b" t+ x/ V' K1 |" x& R3 J
Added user user1.     //新增 samba 使用者帳號 user1 成功
' D* k- u% Z0 O2 w8 Z' }  P& _( {! B, S+ s/ L1 F( `
新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過
7 n3 Y- b$ `$ m#cat /etc/samba/smbpasswd  或者6 B3 X' I; y0 O  P, D5 Q; j& V
#cat /var/lib/samba/private/smbpasswd' X6 l/ K. y- c6 G" ~3 n- L! C
user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U          : LCT-41CAF287 :
6 R7 H" d+ f3 J2 x3 L
! d; [; o; y1 a; c' [, R. h( q步驟4.啟動 samba 服務
/ c$ [. o- U( x' L# H0 q
4 S9 @! t" d' u% Z在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。/ N7 s' g# k. f9 F. D
#chkconfig smb on/ n, z! Q3 ]$ k3 k# P# f
  b0 Z  D, x, B- d
使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。- |. f7 q* v$ c. t6 b
#chkconfig --list |grep smb7 q, D: i0 I! \' X+ s6 [& q& ?6 F, m4 P
. F0 s, B! E( l& Y
smb             0 : off   1 : off   2 : on    3 : on    4 : on    5 : on    6 : off
8 r( Q% z/ e8 T" v- k) O! P7 K4 `: B6 y4 K7 M
完成上述設定後便可以啟動 smb 服務% f, B9 a. ]- ^
#/etc/rc.d/init.d/smb start, Y) m( L) T* }9 Q/ @
, M5 ?5 `' `& b( ?7 M4 |
Starting SMB services:                        [OK] 1 K9 v+ N& c9 h0 V0 W8 N

' `0 ]. Z( g2 A- b' M. ` Starting NMB services:                        [OK]  ) r7 }6 ?+ ?6 O" [( l
" J" ?! x, d3 n* P. p  |8 s
檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。
7 m- k2 V1 y2 W$ N- |#netstat -tnl
- P) d0 ]. X- K; D2 Y- C+ |6 X$ u+ m1 H1 W6 u- D
Active Internet connections (only servers)6 }# Q6 ]0 e8 }' N0 z5 ~0 a
) ~4 Y* s& P" |% O: L1 l$ y
Proto Recv-Q   Send-Q   Local Address    Foreign Address    State- K/ r$ e. y4 A0 Z3 `8 j& S
2 O6 R8 [9 o$ ]( m& b) |
tcp        0        0     0.0.0.0:139          0.0.0.0:*    LISTEN
' @3 J3 \8 a9 p5 i6 Q6 O. w( c$ ?: Z
tcp        0        0     0.0.0.0:445          0.0.0.0:*    LISTEN7 b5 O8 a0 z0 |1 }5 w

( E) @% j7 |) G3 L/ N3、Samba Client* C. m. n* V8 k0 f' u3 y, D
以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。! U) M6 i% V+ z4 Y9 |" D" A6 L( b
; R1 V* V. d' K1 r6 M) e! {
Windows Client; N. W% Q: L0 d5 _4 n

% b/ B- n9 {" O9 i; P8 B8 m8 ]( Z上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:
& ~; u3 y* X3 E5 S# N" W檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。
8 B5 L4 i* f. N7 [驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。
: L4 Q1 h- t% _8 O( k) M8 Y: L8 _5 I
若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):0 Z: ^% C2 ?* G/ b& r
% x$ Q0 E. J* V& _( E+ m
方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)
5 R( x5 `$ j; c4 L. W net use w: \\Samba_Server_IP\home
. i; N: o- W# }; K; E  L8 N  H9 V& x, f
方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)
! s) a2 w' t3 T/ Q" ^ net use w: \\Samba_Server_IP\home /user:user1 123456
+ `" {* t$ Y* X7 u2 f- W. o  k' q' G8 h" R$ `9 ^4 s
CentOS Client! W2 i2 `) q, X% K/ ]

7 E6 H/ _; @& Z; ]若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。( Z5 T$ n6 A) f$ M. M, b

, A4 k  H" K$ y; W8 @方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)# ~: _5 |( W% j4 e% ?, ~3 C6 n
mount.cifs //Samba_Server_IP/home /mnt/home -o$ V  V) @5 Q: `  f- E
2 M0 l9 w9 c7 h, o5 T
方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)
9 ?# d8 ~6 r( b" R: \  Ymount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=123456
$ J5 G" M2 e  n+ M' H: v4 R: _
" s# Y- @" e- X+ B若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。  y. d/ Z4 _# C, A
umount.cifs /mnt/home

  X5 r; ~$ `4 V1 a( [* Dumount /mnt/home
; e' y/ S, R, {% o9 @9 \( ~2 C) u. f9 E+ }. \3 y4 \
4、CentOS 存取 Windows 分享資源
  B: @. w6 B" }" qSamba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:& N: Z' ~" a. J, q% a
" U3 W9 F! B8 F+ w  `4 k
Windows 電腦名稱: user1-XP% W" m' h' j# G: x; k7 Z
分享資料夾名稱: Shares) d! k, _8 z/ Q' B
可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)$ c2 Y6 q+ |  Q
可存取 Windows 分享資料夾的使用者密碼: 123456' A( T; U  m: v- u; s

* ?0 w; H" |1 Z* d1 d. cCentOS 掛載至本地端檔案系統: /mnt/shares& g/ T+ [0 O# H* c* X/ @: ~
CentOS 帳號密碼檔: /home/user1/secret.txt3 {5 j2 c6 [4 @8 i. t
安全性權限設定: chmod 600 secret.txt
2 T' l$ y$ b+ }% a
" p9 @' \8 g9 S9 j$ l2 F  l; y了解後我們修改檔案系統設定檔 /etc/fstab。
0 Z6 |- i: l% l( i2 F#vi /etc/fstab
: \0 C2 _) [# E# z$ }+ i
1 M5 P9 L- c( I4 P/ O: b. l LABEL=/1           /        ext3    defaults        1 1( X" s( z" ~6 u& _

; C1 S: `/ v, ]2 m* C LABEL=/home1      /home     ext3    defaults        1 2, E0 @3 L# l1 C$ e# f3 r% G& [
2 P8 x- @% K/ f. S8 W( t9 y
LABEL=/tmp1       /tmp      ext3    defaults        1 2
5 c$ `" ?: {9 j
5 V9 |) _0 G  z7 k. @, u! S LABEL=/usr1       /usr      ext3    defaults        1 29 j- B; H: N. Y

) L' ?! @6 o/ }' Y1 L LABEL=/var1       /var      ext3    defaults        1 2
/ Z1 B3 C! p5 x+ w9 S7 b; v- c+ @
tmpfs             /dev/shm  tmpfs   defaults        0 0
1 z2 k& O" n: W
4 ?" j/ U5 B* C4 O. V! h devpts            /dev/pts  devpts  gid=5,mode=620  0 0; z: }4 k- r6 T5 b. B3 Z
. O$ i* E; c9 `' T) R/ P3 H
sysfs             /sys      sysfs   defaults        0 0! ?6 @4 B' u  K( c

6 |/ ~2 u& f; ^7 d& z, N proc              /proc     proc    defaults        0 0
" x) K( ~8 v: x3 k2 n
# B  @2 A# M' S' a LABEL=SWAP-sda6   swap      swap    defaults        0 0
/ G: d: B( _. f5 v6 S
# T" W2 O8 m$ M$ H/ D# A //user1-XP/Shares  /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行
8 ?" y7 g1 ^0 \3 C+ N9 K) T( v0 ?- k
! ~: K: s' K' V建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:
  Q/ R; Z: ]  ^' g) [) C/ A% O#vi /home/user1/secret.txt
* R1 S8 u8 o% |% h
3 o. o6 ]0 P% W! H username=user1
! m# o9 U7 L( p  a) ^) \
, {6 h5 @% L* _! B; l  w4 r! K password=123456, z# F2 {% r' S! R/ H$ w: [
: Y: e" V! ]( H* @- K' @
設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。6 k2 o( |4 r9 D" H7 X
#mount -a     //讀取 /etc/fstab 更新
) L9 y. g& ^' H! z% ~- x6 u$ L6 y/ s: N9 B
#df -h        //檢查是否成功存取 Windows 資源
% O0 D3 i. h' a  s& G; [
8 G& `9 A; x, K1 [( C: n. Z Filesystem            Size  Used Avail Use% Mounted on" E# {3 J; b0 w( W% n* J

; l8 Z& ~; r. R/ { /dev/sda1             9.7G  2.3G  6.9G  25% /
* s+ Q4 X0 h/ c7 a2 i, s
& {) p) }  d' `$ e- S /dev/sda7             414G  211G  183G  54% /home
  T0 L2 n) Q6 z  v& M
! ]+ d6 B; L1 I% H /dev/sda5             4.9G  139M  4.5G   3% /tmp. k# K) o- z$ s1 J; @

: B7 I9 t8 F3 w* I/ X2 g3 ^ /dev/sda3             9.7G  2.3G  6.9G  26% /usr
9 S9 r) ^5 E6 I' u& M
; H: ?4 _& @# x! Z7 m9 _ /dev/sda2             9.7G  255M  9.0G   3% /var0 m4 Z) `3 Y% P

$ l& Z. p* f/ M; a tmpfs                 2.0G     0  2.0G   0% /dev/shm
) H/ l2 K# T, r- `- w1 n' @1 u( a! d5 P
//user1-XP/Shares  251G  236G   15G  95% /mnt/shares  //存取 Windows 資源成功

  k7 S3 R! c: U+ Z* a  P7 H
# s6 t( v3 d4 h
[Troubleshooting]( k) u* }; |% g
從client連到server端時出現error:  . v. n; N; [% Y# m9 f8 m4 V  E
samba mount error(110): Connection timed out
& B, u. }. j7 J; w一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 445
+ ^  S; l3 L( W, g5 {# I; z5 T

7 T5 n& L8 q8 t$ `  t) u至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:
" D6 c1 g& I+ X2 {/ C# K7 L

. ~. @1 f$ T" g' Q1 g
用 yum 查一下有什麼 sshfs 相關的套件:1 X/ b+ O1 z& R0 ?! G5 L0 s  k6 e+ [
# yum search sshfs
( W% W' J$ ~* Q! T4 ?6 o! `=====================================================================
; k, e/ C% d0 W$ `$ \fuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH
( E8 f5 F+ G. C/ Q: S0 t; V9 Z安裝sshfs:
- t* I1 O6 m# `7 O- V* o9 c2 n" k. X#yum install fuse-sshfs % n* t! e9 y& D6 @: @( O$ e' F
建立掛載目錄:6 B  P! ?3 t0 O* D3 A% C2 r
#mkdir /mnt/temp# c8 g" q! r( z# t1 {- G* q3 g. a
用sshfs 掛載遠端的目錄:
4 x, w- Z% z+ Z3 }; q" G: s: v2 D& f#sshfs -p 22 [email protected]:/root/  /mnt/temp     //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄& {1 i: k. }7 z2 X" H: G! m3 Q
[email protected]'s password:    //接著要你輸入遠端ssh root密碼. g' G( w# T; M" R. F7 h2 i7 V5 f# U
正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的
1 |+ s% g: e& x1 F如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便/ A' y6 r& J; s. @. B

& ^( |' v7 x: {9 X0 X* j帶上密碼而不用手動輸入密碼% Q. _; `7 Q2 j" \) e$ ?% _
#
sshfs -o ssh_command='sshpass -p my_password ssh' -o cache=yes,allow_other -p 10022 [email protected]:/root/ /mnt/temp) I! I* D# L; T( O. R6 B' F8 l
註: 如果掛載有問題,可以開啟 debug mode 觀察過程:
  J6 }" a& S3 t2 F, u5 xsshfs -p 10022 -o sshfs_debug -o debug [email protected]:/  /mnt/temp
) f" f) i7 I7 j) R% S
, E  K, g* M" _$ g% D% t% q
以一般帳號(非root)掛載時,出現error :8 S  h: h8 n' z  h% q
fuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限. d- ]3 i5 m: @; ^0 I5 u0 R2 l4 X: V
ls -l /bin/fusermount: _% h* ~$ k5 O3 e: s, T
-rwsr-x--- 1 root fuse 32368 May 11  2016 /bin/fusermount
6 d2 h+ Y2 E3 N, m8 b: \6 D故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse
3 C- `7 p1 M9 w- {* }

9 o9 J7 w5 L2 @: Q可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統     SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)
$ z" a8 o% h8 p) Z4 i* g3 d8 ~  c

5 i. N9 b3 @' @& }' w# 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.itech.casa/) Powered by Discuz! X3.2