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

 找回密碼
 立即註冊
查看: 2373|回復: 2

[linux指令] Linux與Windows間共享資源 --- 架設 Samba 伺服器(或使用sshfs)

[複製鏈接]
發表於 2017-9-3 21:06:35 | 顯示全部樓層 |閱讀模式
tid=66566&1、安裝及設定+ x4 R6 D3 ]" R: V. O, j
分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。
3 e9 `4 {4 x4 J: T7 v" X) N) ]) R5 n* I9 y  q
2、Samba Server
8 M, `/ m1 C; w步驟1.安裝 samba 套件( _. l) n4 x; l9 ]: S8 `
9 Y1 {; J$ o' N4 k! H
利用 yum 指令來安裝 samba 套件。
  M" s3 M' ]& E) I- j#yum -y install samba    //安裝 samba 套件$ ^9 k- f$ @" J& x8 \6 J$ i) B
/ n5 \- ]: I% X6 A1 Z8 B1 x' C$ ]
***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件: . Z  Y/ N* i, f3 K* _8 R! k0 ^; `
#yum install samba-client samba-common cifs-utils' L1 j: C/ @6 `! g3 S) X

( P* l8 g' w+ T7 \+ s. e步驟2.修改 samba 設定檔 (smb.conf)
3 D5 d& q' y; R, U' F
- D! i4 I: j$ o/ v. Z' s0 i) H修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。
/ J: q# A- o$ ]% s$ {#vi /etc/samba/smb.conf  //修改 samba 設定檔8 T7 ^: ~! \/ v: _7 ^& ]- A' g) m
, V3 e: F; @& Z- q! v
global                                 //通用設定
- x/ q, n# Q& g% @" a' }2 M
7 B0 }( s, i- {6 ]8 H+ C netbios name = Linux-smb            //顯示於 Windows 網路芳鄰的電腦名稱
  q) A) j, G- O3 Q9 k
  u& M+ Q7 Q8 q' ] workgroup = WORKGROUP                  //顯示於 Windows 網路芳鄰的工作群組名稱2 g- T/ k! a6 h- n; z. _
- I, K0 m) y# Y" j
hosts allow = 127. 192.168.1.18        //允許此來源 IP 位址可存取 Samba 資源
7 h0 z* V, l# `) ?8 A! W& n+ M: D3 @8 u9 W
hosts deny = ALL                       //除了上面允許的IP之外禁止其它IP存取Samba資源3 z( t, Y1 t2 i6 l) w$ T

" Z5 |4 i" K, V3 t9 y5 J security = user                        //安全等級user需在Samba主機上擁有帳號者才可登入
1 B, g2 s+ m* A8 `/ ~- m! x. L+ |
encrypt passwords = yes                //是否對密碼部份進行加密# W6 x& ^& `1 S
) {7 p% K& K5 l+ _  Q3 t
display charset = utf8                 //Samba 上所顯示的編碼
- f5 K, H8 U: }3 B& W2 j4 c
/ c+ `, Z3 V' v6 A' p0 }" q6 _; ~3 E  { unix charset = utf8                    //Linux 上所顯示的編碼
) w; n! I* m& h0 B0 [" P+ v
, p7 l8 N; n9 e8 r- T0 l dos charset = cp950                    //Windows 用戶端的編碼 (可正確顯示中文)" A4 L, J0 o7 P! m( Y$ l
1 v6 B! A, g& {; `5 y6 g
home                                   //分享設定,屆時顯示分享資料夾的名稱
! f& M* I& r! r1 x# j
( j4 f4 F( O" e( j- j1 p! F comment = Weithenn Samba Files Shares  //分享資料夾的註解
7 ^9 M9 Y  @9 H9 e' _8 D& H
2 T( F6 o! \2 F% |5 x6 M path = /home                           //分享路徑
' @* t3 k6 c( H: A; c
4 h! U+ p& w5 E valid users = user1,@smbuser        //允許user1使用者及smbuse群組可存取資源3 u! P: b" d3 a, ~+ k
6 Y8 Y+ X! e6 z, H
public = yes                           //允許使用者登入後可看到此分享資料夾" l! |1 {( o/ p2 e. }
8 J! |" r- u+ J+ X3 s$ N
writable = yes                         //允許寫入
* d: b# h- b6 x6 ~; @2 U0 D6 ?  G8 M* D3 g
create mode = 664                      //建立檔案的權限 (該檔案在 Samba 中權限為 664); L1 h4 {, ~; L4 s8 x
6 ]# ^: {- @: v& Z7 _8 _* Y
directory mode = 775                   //建立資料夾的權限 (該資料夾在 Samba 中權限為 775)
, ?# D* M. p5 R8 ]" a: e2 ^2 v( L7 K: }5 q; {1 x
  z5 Q3 x5 H. t/ H7 J' a2 K
步驟3.建立 samba 帳號
9 W9 ]- W% v, ]* g7 g+ w" Y' d) ^6 S3 ^3 B) A: w& Q
設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。
7 w3 `% _/ f: w" x# C5 Y#smbpasswd -a user1  //建立 samba 使用者帳號 user1
4 c2 H2 @" \$ P+ p; E7 y( J' }, n9 z
New SMB password:        //輸入使用者帳號 user1 的 samba 密碼$ w7 F+ T3 R2 y1 b

, n2 }% D0 J2 m  U  ?4 [6 O Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼
/ T' r6 w/ |; p5 H/ s& h
* t  _0 j0 A  C9 v, e. j9 R Added user user1.     //新增 samba 使用者帳號 user1 成功
7 [# X7 Z% \# p' f4 w
; f1 `# X* M& M; N/ s' ^/ ?新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過; w! C2 y3 L3 J6 \0 j2 z
#cat /etc/samba/smbpasswd  或者9 A" L/ Q# y8 G8 n+ a
#cat /var/lib/samba/private/smbpasswd
/ d  p" Z# ~* c; {+ `) U# `5 k user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U          : LCT-41CAF287 :1 X8 u, r5 }! `% _; z2 Y# D5 m
& R4 T7 |0 {5 d0 U% ?5 @; P
步驟4.啟動 samba 服務: s" X. I. A/ |! G+ X0 w

; |. m! A, K% @8 r, G/ W; D& c  }在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。
7 q' H: e4 S5 M" K1 v#chkconfig smb on* B/ E# \9 X" o4 t" R" c4 Q! x

) o  Q5 C  }' M' y6 O2 _! u使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。) Y7 l; k0 c! q
#chkconfig --list |grep smb
$ q) R( K* b% c" r, s* [0 A/ j/ s% m8 {8 G1 Z7 [& t
smb             0 : off   1 : off   2 : on    3 : on    4 : on    5 : on    6 : off8 Q/ V" R$ [9 n) O1 Z
6 ]4 J; ?; r" A6 U( t5 X0 ?# }
完成上述設定後便可以啟動 smb 服務
+ R8 J8 I7 J1 w7 Y' U#/etc/rc.d/init.d/smb start  F; F! k4 a+ \% n

7 E1 \2 g' H% U" ]" v Starting SMB services:                        [OK] ; `7 Q+ x" n( q5 Q- [% L9 ~9 N

' B' F& g8 M: Z3 S! ^ Starting NMB services:                        [OK]  
5 A$ W9 r. n3 ]% n+ w, k) Z* |; F$ z
檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。
" M9 Z' k" W# o) n$ M. s: j; Y#netstat -tnl3 _5 d9 z0 `( h. f* v- E- v$ \8 K: \3 A
2 ~! w. `* O# ~6 E" g7 ^' E
Active Internet connections (only servers)) z( h& r0 T3 h8 `. R. R4 A9 N
- Y, c, ~! N8 c8 S0 S+ }4 k4 Z
Proto Recv-Q   Send-Q   Local Address    Foreign Address    State" o* r6 A# L' Q( [: M# |

) w$ m; u2 Q& j6 f% D tcp        0        0     0.0.0.0:139          0.0.0.0:*    LISTEN+ v, O; p% o/ g9 A
$ h6 z4 F. Q9 g8 I0 a; E6 v
tcp        0        0     0.0.0.0:445          0.0.0.0:*    LISTEN: |. f1 u$ ?: p, i6 z

" S1 {( {4 p8 y: A  i, i3、Samba Client0 V- M% Z3 r( }/ k# ]# l& ?+ C
以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。4 _$ ?) n+ E: P

$ J0 k3 }; Q; h! a/ x, R/ vWindows Client  O8 ?, q8 O, z8 `. c

7 ?6 }2 `  P1 O6 y上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:$ S' b" j( x! [- x* n% d9 n
檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。
0 G4 [  k& S5 m/ R. S/ y7 @驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。, Z- @5 G7 a% g0 I- i# }
% T! d0 c3 l7 L, e
若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):
0 h$ H; L' B# ^/ ~5 u8 {  z
+ q9 P) V5 G% |9 H方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)
8 |2 e; Z) l: Z) T net use w: \\Samba_Server_IP\home
4 ?; x2 p, G( G+ {
1 Y8 q( q! b. W& \4 K7 G/ D方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)! i; z  f  S. {9 O
net use w: \\Samba_Server_IP\home /user:user1 123456
0 j1 B/ i5 k2 f1 W) F4 ~6 Q: e9 C# n: Y
CentOS Client$ _! \. ~' v8 e5 B, ?  M4 y
7 X( ^7 q. L( g9 t
若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。
; S5 i7 m% y( b5 x
# y5 W0 r1 ~# w4 H8 u6 p% T8 E方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)
9 T9 r: z: _6 r. S! e' @mount.cifs //Samba_Server_IP/home /mnt/home -o7 ~1 X6 ^7 I9 ^2 f: w" H, J
) N- |% z$ n; b- m
方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)
: b& s0 w7 }4 F% U3 [mount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=123456
- @& G8 E0 s/ f5 Y$ k9 h2 q. B; y% R( s& K4 ]5 V8 B3 [
若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。! k7 L# F& g4 D" {* P8 Z+ B7 C
umount.cifs /mnt/home
% v7 Z. w. c8 _' n1 W  S
umount /mnt/home
- V( M) C) S7 U- z0 i  L4 M* @4 P8 G  j" g) ?) m- b
4、CentOS 存取 Windows 分享資源
/ ~5 U9 n) @9 ISamba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:3 ]; L$ z7 X& K& b  a' V
, q% G, ~1 R$ Q
Windows 電腦名稱: user1-XP, y- d! D3 P" V% K2 }7 r  @
分享資料夾名稱: Shares6 M  Y- X! C) r, p  v9 {. A
可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)" S$ Z$ n* }  ~4 x/ z
可存取 Windows 分享資料夾的使用者密碼: 123456. ^; t! [3 l1 S3 f- A* r3 y" C0 }: n

9 t/ d- B0 S7 ~6 S! ECentOS 掛載至本地端檔案系統: /mnt/shares
* w# {/ ^# O2 J8 p; H1 pCentOS 帳號密碼檔: /home/user1/secret.txt+ L' Y. U# @# e8 q' |" L; C4 F) t5 S
安全性權限設定: chmod 600 secret.txt) C5 e6 U# Y6 x6 I; z

8 q* k1 M% z! P0 b# v% {了解後我們修改檔案系統設定檔 /etc/fstab。
, Z! y: o8 {1 L8 P2 D+ @+ T#vi /etc/fstab& J) ~% D' W5 d' L& e* P5 `8 |
+ @) C% l! I4 I, z( o) c
LABEL=/1           /        ext3    defaults        1 1
. w6 T& [" N2 E3 a4 r3 p  ~# r! _4 K. h. y
LABEL=/home1      /home     ext3    defaults        1 2
+ h  J. d  _  c! ~& |
# \) P7 Y( l4 F( i+ p) y" `# H% } LABEL=/tmp1       /tmp      ext3    defaults        1 20 }" g# h8 w0 k: v! F
% v0 r" I) d3 k* Q
LABEL=/usr1       /usr      ext3    defaults        1 2
) r0 G1 r3 W0 d, @$ u+ E9 U1 f+ f' p! k7 c, T  \/ d3 O
LABEL=/var1       /var      ext3    defaults        1 2! `. Z2 J/ u/ v* G. i7 _
7 z" Y7 B, S7 m4 B
tmpfs             /dev/shm  tmpfs   defaults        0 0
+ B" L) O. F  Q; `+ P: h" L% G" X* N
devpts            /dev/pts  devpts  gid=5,mode=620  0 0! i; v1 Q; G$ q; H3 F$ k8 _

: [2 I- A# c, m$ H* g sysfs             /sys      sysfs   defaults        0 0. g$ X' i- i9 h+ ]: C2 G3 w$ K) x4 G

+ B* B2 g# D+ B6 w( M* p; z9 d proc              /proc     proc    defaults        0 0
( y% l8 |) k/ M, C5 \& g& U* x; Z+ I7 h- }' m
LABEL=SWAP-sda6   swap      swap    defaults        0 0, |/ W/ l7 w. t, k" E
9 c. d+ h4 Y. J1 y1 c3 H
//user1-XP/Shares  /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行
: F6 u( i8 B4 e- w- ^
: r$ E3 R: ~3 a4 w6 d+ v6 k6 z建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:! f7 ?. b! w! R! L6 g5 [
#vi /home/user1/secret.txt
9 A# t8 e8 |8 D: ]  h1 v' T9 ]* ]6 p$ J
username=user1* L. y+ N# ~2 Y3 b' ^0 x6 _
- R. M$ i/ Z. t. k5 p0 E" A
password=123456% [( Z7 q* U  ]+ O  A; l: W0 I1 G
) i7 |% X+ f. {0 k
設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。
  J- D) _7 G% Q: e#mount -a     //讀取 /etc/fstab 更新0 Y/ Q6 M# a  r6 z7 g* Z

& H( u8 H% {; r5 X#df -h        //檢查是否成功存取 Windows 資源. @# w! s1 A, d
1 \5 t( ?% p- e: d
Filesystem            Size  Used Avail Use% Mounted on8 n8 E2 d6 d4 V* [+ M& {: V$ i
/ w+ I5 ], a5 v8 ^
/dev/sda1             9.7G  2.3G  6.9G  25% /
" J9 D; e: v' Q; @6 Y1 p5 B! v3 m7 ~! N9 X9 T
/dev/sda7             414G  211G  183G  54% /home
9 W8 Y. F, O( t( f1 r2 U- A2 i7 ~' e% P& C7 r
/dev/sda5             4.9G  139M  4.5G   3% /tmp  F' k3 q8 n: N3 J7 D- d

; G5 W$ P9 ?  f2 c% J  \ /dev/sda3             9.7G  2.3G  6.9G  26% /usr
2 B- c) o/ Z: n, p
/ X! B' O+ y; R /dev/sda2             9.7G  255M  9.0G   3% /var" I$ D2 d( E2 R+ c* r$ ?9 L0 V

. p. T# @% r9 m& N5 b, z8 K0 R tmpfs                 2.0G     0  2.0G   0% /dev/shm
; o  P* m& _7 A1 f% Q+ G: X6 V8 d: {- Z2 U
//user1-XP/Shares  251G  236G   15G  95% /mnt/shares  //存取 Windows 資源成功
2 R" U! I- \' X' }( T6 l# p/ s
1 Q* a3 M% h0 P
[Troubleshooting]
4 A& T0 @2 R# f, k從client連到server端時出現error:  
0 Z8 v2 d3 b- o9 D4 }samba mount error(110): Connection timed out, D. w( g, [" o0 Q6 y3 S6 y% l
一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 4459 V/ \0 b( K. K: V' P
7 d! H. H# O& W* B  q5 ]
至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:, U( V( f% R; T

! g; t: G4 H! J; z
用 yum 查一下有什麼 sshfs 相關的套件:
  i8 a* K; p/ `/ a0 u. G. t# yum search sshfs% _: W7 O1 m3 I
=====================================================================
% r5 w, \/ [( i( r; p" {1 Efuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH# T7 ~/ L5 w: R8 t) O  ]1 C
安裝sshfs:
( A) ^1 e2 j3 k% Z6 ~7 F#yum install fuse-sshfs
" e' ~) q5 w3 F0 t/ y建立掛載目錄:
. [5 x( Z1 _' A  I; }2 u. M. H#mkdir /mnt/temp0 }! u$ c' A, f2 U  \, j+ |- P
用sshfs 掛載遠端的目錄:
+ T* T& h, x$ N- Z8 q: Q8 g#sshfs -p 22 root@192.168.1.2:/root/  /mnt/temp     //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄
( ]& x2 h: ^$ Yroot@192.168.1.2's password:    //接著要你輸入遠端ssh root密碼
1 z* _; G' V, D9 p3 z! y1 B正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的6 U2 P' M* K5 i3 {6 g* A4 Q0 i; Z5 y
如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便+ S, A4 ^! Q( A5 k* @& k' ]9 l  A

4 Y& t3 j0 p; H# w8 O+ f7 _帶上密碼而不用手動輸入密碼, s8 r# s$ L/ I0 ]9 y% 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% H$ R4 {) I( Q$ f
註: 如果掛載有問題,可以開啟 debug mode 觀察過程:, M0 C7 }/ `% {
sshfs -p 10022 -o sshfs_debug -o debug root@192.168.1.2:/  /mnt/temp* H1 }0 L8 G  o2 f

! c! b7 N4 O2 B5 V7 f$ _1 N& {' Z6 L以一般帳號(非root)掛載時,出現error :
+ _  Y7 r; e9 c' m4 Kfuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限" T7 J7 p6 D" i
ls -l /bin/fusermount
7 b2 @: _4 a% V8 i-rwsr-x--- 1 root fuse 32368 May 11  2016 /bin/fusermount
/ x9 @$ P+ x& |& U7 B" I8 o. \故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse7 V# @3 C& n* F& c$ r

: G7 ^; _$ u5 \  f8 J& Y可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統     SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)& l) r3 @/ f' \
3 B1 ]% h1 M  |

, q* G  Z: y) B3 v3 g
回復

使用道具 舉報

發表於 2021-3-10 21:39:32 | 顯示全部樓層
tid=66566&now the best way is to use WSL (Windows Subsystem for Linux)
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則



中文酷站排行榜

本區塊內容依據『電腦網路內容分級處理辦法』為限制級網站,限定年滿18歲以上或達當地國家法定年齡人士方可進入,且願接受本站各項條款,未滿18歲 謝絕進入瀏覽。為防範未滿18歲之未成年網友瀏覽網路上限制級內容的圖文資訊,建議您可進行網路內容分級組織ICRA分級服務的安裝與設定。 (為還給愛護 本站的網友一個純淨的論壇環境,本站設有管理員)

QQ|小黑屋|手機板| 52AV手機A片王

GMT+8, 2026-2-5 00:55 , Processed in 0.074935 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回復 返回頂部 返回列表