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

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

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

[複製鏈接]
發表於 2017-9-3 21:06:35 | 顯示全部樓層 |閱讀模式
tid=66566&1、安裝及設定
: D* g* |' i) |2 b" l8 U. H分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。. z' Y9 i7 p2 r

8 y0 S0 l1 m1 I2、Samba Server3 U  p  h! j" h& A" j4 J( ?$ S
步驟1.安裝 samba 套件
4 O. l7 M: n* O" Y% Y
+ u" D1 d; Q  W6 t  W利用 yum 指令來安裝 samba 套件。
* f+ t; W$ h" O% j, X1 C+ h( @& P#yum -y install samba    //安裝 samba 套件: j  J6 [& O- Z- @6 }2 V& B$ m

" \- Y% `$ d/ t***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件:
/ n+ [' `7 R0 |& T1 L' T7 @#yum install samba-client samba-common cifs-utils
# v% R" I. y. T) w+ b% M
) |% Z/ X' `9 m! H; v1 ]- i0 W/ c步驟2.修改 samba 設定檔 (smb.conf)1 R" a$ Q5 P: N9 b4 N" [( `
3 ^; c" M6 h7 |* e# B
修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。
, ?! B6 q: r$ Z% t$ u: W6 C1 h#vi /etc/samba/smb.conf  //修改 samba 設定檔
! L1 W& Y  V5 B& Q! C- P- F' d+ h! E# f4 s7 Z
global                                 //通用設定6 s2 C) j! y2 a

* y" ?# q+ J4 `) h! w- ~9 J, K netbios name = Linux-smb            //顯示於 Windows 網路芳鄰的電腦名稱7 q! o/ m/ T5 \, e

1 G7 o" f8 L8 {8 r: m8 \ workgroup = WORKGROUP                  //顯示於 Windows 網路芳鄰的工作群組名稱, I* D: X3 m6 n+ [" X7 K

  Y* g1 U( ?) W6 J hosts allow = 127. 192.168.1.18        //允許此來源 IP 位址可存取 Samba 資源
  g5 X8 I5 H+ R+ w1 S& j4 D
4 d' @( N- |  v7 M  W: B- G hosts deny = ALL                       //除了上面允許的IP之外禁止其它IP存取Samba資源
2 z) m0 |6 J& ?/ m0 s! L1 d; @/ f) y- n/ U! p9 J
security = user                        //安全等級user需在Samba主機上擁有帳號者才可登入! j1 F! U* s% a
9 |: ~; J/ N) ?% q+ x; v9 ?
encrypt passwords = yes                //是否對密碼部份進行加密* P4 J* _$ n2 [; [4 X4 t2 w- ?# W
5 j1 ?: r' n$ U! h- x3 R2 o
display charset = utf8                 //Samba 上所顯示的編碼  D0 ^$ O  h+ E7 G+ [7 V

* G2 \$ I" R  m* m- y1 ] unix charset = utf8                    //Linux 上所顯示的編碼
4 Z6 H" r5 J+ O6 V! a) @  \5 S: \
6 |) i. f0 A/ N5 s* D! ] dos charset = cp950                    //Windows 用戶端的編碼 (可正確顯示中文)6 M' @3 U$ x( G' j) y9 O4 r
+ B4 y. O. ?6 I/ K1 A2 [
home                                   //分享設定,屆時顯示分享資料夾的名稱6 ?- f8 }2 @8 J

) Q8 }8 y: b2 o8 b: q) C3 M comment = Weithenn Samba Files Shares  //分享資料夾的註解; N! L0 x# g& J- A( W, R  k

" ~9 @2 ~: m3 [/ a1 q/ S2 W path = /home                           //分享路徑
/ a3 q' e, z/ [+ l
8 N3 D0 f4 M1 t% K1 u1 a2 q valid users = user1,@smbuser        //允許user1使用者及smbuse群組可存取資源
+ Y3 f, L, h: }% V2 K( ^! D2 o- a: B2 D% G6 B
public = yes                           //允許使用者登入後可看到此分享資料夾7 \& D, A0 ~- b% i
' i- i; R8 @, y/ _  \. k6 P, \5 ?4 b
writable = yes                         //允許寫入% c( B9 Q! W6 D' p. k" x
  {- `  ~: m# J
create mode = 664                      //建立檔案的權限 (該檔案在 Samba 中權限為 664)9 R2 l6 A' r, ~7 b. ^9 A" O6 @
) Z2 D; E7 N4 ?  K
directory mode = 775                   //建立資料夾的權限 (該資料夾在 Samba 中權限為 775): p: ]) g3 w' e8 u( c7 s

7 W+ I2 Z7 S+ P2 d$ i, |: C7 s$ [1 U
步驟3.建立 samba 帳號  }5 k" @9 g1 m! `) R

: }! h! Y' ?# U, ~) ?設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。
, ]; w. k0 u3 |4 M#smbpasswd -a user1  //建立 samba 使用者帳號 user1! O# l- \$ g1 M5 _- R7 N

/ y) c% z/ K+ W' b7 j( F1 [ New SMB password:        //輸入使用者帳號 user1 的 samba 密碼
' W- w3 |1 x/ F7 U
5 h6 ]7 ^8 v, k" s, M Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼8 a* B& k; j+ @" m5 z* {
" i2 H" P6 w9 l
Added user user1.     //新增 samba 使用者帳號 user1 成功
) k$ L& `0 H5 a
9 f! Y5 w0 F! @新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過
3 a1 X* V# ], [( g. ^# c#cat /etc/samba/smbpasswd  或者
( c, z" a; H. j- R$ N1 W#cat /var/lib/samba/private/smbpasswd- t* h. R/ g1 a
user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U          : LCT-41CAF287 :- R( p! C" C. i& o- h1 V1 @

7 {) V3 [5 i% V, E# u7 _, q* S0 t步驟4.啟動 samba 服務
/ }8 d4 |9 |* n7 ~& W2 V7 B& R9 ?, H; f3 L! Z1 u8 ^
在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。
4 V' E% L% ?: y, v8 h#chkconfig smb on
% Z; W" u* [0 ?2 o# h) q
1 O1 B! Z. }1 W# y6 }使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。
: z0 @, \  o5 ^/ w3 d2 \. y#chkconfig --list |grep smb
% L: e8 Q- t# s3 x. H: G- ]" A6 W. u' U
  R$ L7 `0 n4 @# y4 k( D2 P+ Y% j! A: k6 i smb             0 : off   1 : off   2 : on    3 : on    4 : on    5 : on    6 : off: v" f5 g% ], B

" t1 `. x$ n7 b. ]/ x完成上述設定後便可以啟動 smb 服務
# J& G. D  D) a#/etc/rc.d/init.d/smb start
0 I. B- t* ?0 t
2 `" j/ Z# m, D0 {$ e Starting SMB services:                        [OK]
% q5 n7 t9 t7 m& v4 W. {7 H% t
. E* ]! s" A) D& m/ x Starting NMB services:                        [OK]  2 a" Z' T8 W% P

4 M: q- r' K* R7 A; z: y檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。
6 W5 i- g. k, ]( Q0 i* t8 n#netstat -tnl$ P! b2 z6 m- W0 e* D6 m

3 {" L; \. z7 z& W3 E7 z+ a6 f6 E3 |& L3 R Active Internet connections (only servers)
. z# F0 f* w4 _7 \- O5 k( Q8 b& [/ u" G9 i* p- {! j* N
Proto Recv-Q   Send-Q   Local Address    Foreign Address    State
8 N9 ?) b0 s, a0 I4 ^0 V/ J/ B
* r- B9 z3 k' j3 a, w: Z tcp        0        0     0.0.0.0:139          0.0.0.0:*    LISTEN
8 f. K* b4 R3 n5 |: a. M' d/ z% J8 C5 Y2 _* w
tcp        0        0     0.0.0.0:445          0.0.0.0:*    LISTEN4 Q: B6 T; `( ]. N
- _! N/ g0 ^) f/ k7 z. l
3、Samba Client
$ |1 X' F: ~8 R2 j以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。
% [+ ~9 Q0 N7 R7 v  P0 M% C* X; ?$ m; n% B3 P* X
Windows Client
6 j) a/ V2 Q* G* X% j& L) S+ j4 L; ~
上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:
! ^2 W" X# e2 m) I& W+ n( J檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。
/ V; _" L% F  |* |驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。7 o: Y. N$ Z* H% x5 r$ G  I
4 w, U# q) `- \
若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):, s: I4 a6 K8 T0 A3 i, O

& E* C; t$ W3 I# r$ g方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)3 w1 ^8 s3 k" W
net use w: \\Samba_Server_IP\home+ B& j; V# B$ W& D: H
$ t+ t7 \1 g7 h/ i, H5 Q
方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)' v9 i8 }% Y6 d/ d4 ^$ D
net use w: \\Samba_Server_IP\home /user:user1 123456& n6 f6 O. `# ?7 W
) a$ y0 ]6 j4 g& i
CentOS Client( x3 o4 I$ s$ L: ~- Z- I7 `; d
+ h' @. S! \+ D
若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。9 X) R- C7 F5 G/ |" U% h4 o6 H

, X) {% M8 A  Z+ ^# h5 t2 U方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)- W# d7 ~9 V! Q
mount.cifs //Samba_Server_IP/home /mnt/home -o# r/ T- m( O2 F( C1 l" l- C+ h( M# e
8 a! B+ j3 X& w9 B' C; _
方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)/ c- d/ w7 k7 E% R2 P* _# J
mount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=123456' f  ^4 I$ P; R& r8 I0 T
) q- p* r: b/ @- o
若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。7 V, X8 `& k/ u/ d! _
umount.cifs /mnt/home
& b, {- ?) E8 a1 f9 \$ ~5 i
umount /mnt/home: U3 L& ~, s5 I2 X8 h
3 I5 Y  k2 Q' }
4、CentOS 存取 Windows 分享資源. E8 F5 Y/ W' F+ U7 a
Samba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:# A8 u& J& q9 B' p3 Z* G
! ]3 N( R, W' n- U0 c
Windows 電腦名稱: user1-XP5 u4 r$ ~7 ]/ g9 ], k
分享資料夾名稱: Shares  l$ r! |1 B" A5 W$ G+ A
可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)4 n5 Q3 m5 m. z, f; W: k. ~
可存取 Windows 分享資料夾的使用者密碼: 123456
) e8 n5 V+ v) M- v7 A" p$ y( p, e( P! Y, J% B1 A
CentOS 掛載至本地端檔案系統: /mnt/shares9 q* {" P9 Z  S  F: t
CentOS 帳號密碼檔: /home/user1/secret.txt$ g( O" [/ H' P$ f  y# X
安全性權限設定: chmod 600 secret.txt
6 J0 Y' O+ u6 g& @- D3 @$ K8 h
: O/ C5 _+ }7 A' x; a了解後我們修改檔案系統設定檔 /etc/fstab。
7 F0 C$ l& Z/ B) h2 D' v#vi /etc/fstab
) h6 z. j: t, w" _4 u* M4 T
1 e4 w; O6 p# p4 | LABEL=/1           /        ext3    defaults        1 13 h, u( K, p: e0 U6 U7 v3 w
" b# H3 ?) G4 n! n' G0 N' \) q
LABEL=/home1      /home     ext3    defaults        1 2+ {0 X9 f+ O" |0 R  o5 ?# I5 I. \
+ |! ?, a$ a& w# Q9 L/ l
LABEL=/tmp1       /tmp      ext3    defaults        1 2" r; j4 r" _. P" t

% B5 s  y9 W+ g! _4 x9 ]! w% w5 W) H LABEL=/usr1       /usr      ext3    defaults        1 2
- c- ?# j1 y$ w5 u. D
8 [% ^) p' z1 a4 B5 ] LABEL=/var1       /var      ext3    defaults        1 2& p6 X# S( o/ y# ?+ y) E" j

7 J' t3 u* c* _7 B) F, a, x8 P tmpfs             /dev/shm  tmpfs   defaults        0 0
/ v' t1 p1 H8 L5 L
2 W% E# r/ n5 r, t; R/ I devpts            /dev/pts  devpts  gid=5,mode=620  0 00 a5 I9 \( q; V$ c. {

/ {8 t. W, c1 V' ?7 x( [4 J sysfs             /sys      sysfs   defaults        0 0+ c" r4 w; M; k9 @( t1 j' ^% I; v4 o

6 ^7 \# b9 J3 e& T, x! m2 k proc              /proc     proc    defaults        0 0
$ n$ V! {! f2 C7 u- o' a$ [
9 \4 h' |0 V1 G' t9 J+ _) D LABEL=SWAP-sda6   swap      swap    defaults        0 0/ D4 r0 a& w- u- F% C' R

2 h2 B3 p- c! Q, z6 {. X# l //user1-XP/Shares  /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行" J6 `5 w- s; ^0 [8 g
/ |5 V( R6 d, z0 C& y
建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:6 \% c7 F: z6 |9 i$ Q
#vi /home/user1/secret.txt
8 x( w" ~2 L. j- P% t# f. _% c9 W8 T# q0 w) X4 Q2 g0 \! D
username=user1
7 u4 h" d8 v- `. `
0 l2 K: g( Q3 m% u4 s! p password=123456+ p# U5 J( O* L4 u
2 V2 L( W2 q7 H: e
設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。
# Y3 @! n% O  ^: W( `* E8 o#mount -a     //讀取 /etc/fstab 更新
2 C) f7 V+ g8 w8 h* {* n. G( g( J  _# R* g3 d6 j$ s+ h
#df -h        //檢查是否成功存取 Windows 資源
! k# M" P, m4 K- \/ _& b; T) I1 I
- a+ ~$ j% w) K! o6 A* O4 { Filesystem            Size  Used Avail Use% Mounted on
# ~& v2 Q7 Z3 z4 }# G# o+ |  n9 r& @2 c7 |
/dev/sda1             9.7G  2.3G  6.9G  25% /0 m3 S+ a9 M, m6 Q) Z

5 R; i9 |) \+ T /dev/sda7             414G  211G  183G  54% /home
) A$ s% [8 u  a+ ]- Z8 ]& }; [2 N7 a2 i7 f4 S. y7 Z$ {
/dev/sda5             4.9G  139M  4.5G   3% /tmp
0 t3 ?+ }% M/ v& K) X  W
' ]5 f% s3 L* w# H+ s# C3 w; c- ]5 X /dev/sda3             9.7G  2.3G  6.9G  26% /usr
$ H4 }% O2 n" ~/ f1 u$ I
. _' I  X7 m  m4 e3 p /dev/sda2             9.7G  255M  9.0G   3% /var
6 L+ @* O! t# e  X) J: m6 k% G* Z! O* O/ \* E# O" j
tmpfs                 2.0G     0  2.0G   0% /dev/shm7 N7 e- D+ r7 H8 v
: A8 `9 V  W: w- H( v( O. D) I2 z
//user1-XP/Shares  251G  236G   15G  95% /mnt/shares  //存取 Windows 資源成功

. Q# L  A% \* ?

' V1 Q" S  e: V[Troubleshooting]. r/ l  ]' D# W4 R# t  b
從client連到server端時出現error:  
5 N1 w: r/ o7 H5 s# |samba mount error(110): Connection timed out
1 |1 X: T% K8 x) C. p一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 445! N" e  S" h9 A8 E1 L: w
) b' [- r, C; @# v) H! q( e
至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:. }" Q0 ^0 C$ v" A

6 o# n4 s! `9 P4 t
用 yum 查一下有什麼 sshfs 相關的套件:
7 r9 k& K& q1 b$ ?9 L! }# yum search sshfs
0 a. `! {) q  X; |" H' W* v: N=====================================================================  o% H  Y  H) g5 k" y' o2 l
fuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH5 ?( Y1 W7 X* b; F4 U
安裝sshfs:7 x0 C( U. b2 H8 A6 F
#yum install fuse-sshfs - m! X' t/ h: a4 f: a
建立掛載目錄:
$ i5 }% Y2 @" P8 s" j: W1 m+ s#mkdir /mnt/temp
8 ~/ J7 H" k6 m5 v4 ~用sshfs 掛載遠端的目錄:
* z6 D$ L' L$ {' D. Z#sshfs -p 22 root@192.168.1.2:/root/  /mnt/temp     //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄. i! z9 t+ Q+ t0 u: m7 f; W
root@192.168.1.2's password:    //接著要你輸入遠端ssh root密碼
: y* t0 j7 B8 H1 Y1 U% E正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的
# v" d+ a6 {" t+ f' z# X) p  ?如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便% N1 R: {( p- H. Z( s% u
! B) Y3 z/ h5 A* b' [
帶上密碼而不用手動輸入密碼' }' [8 K7 q& G4 J* l& p
#
sshfs -o ssh_command='sshpass -p my_password ssh' -o cache=yes,allow_other -p 10022 root@192.168.52.4:/root/ /mnt/temp1 _6 ^- d5 B/ j
註: 如果掛載有問題,可以開啟 debug mode 觀察過程:
7 |' L, Q, w+ \  L' Msshfs -p 10022 -o sshfs_debug -o debug root@192.168.1.2:/  /mnt/temp
7 V1 _: e1 i2 ?- F% ]! i' U1 o. z2 Q

7 x8 q/ O) V: ^4 j$ q- X9 r( X; N以一般帳號(非root)掛載時,出現error :& t# i4 X& R% f0 d, G+ s
fuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限
: O/ U7 Y3 E' J2 d4 D9 O& C  x3 tls -l /bin/fusermount
5 L+ p: Z# e( J8 j-rwsr-x--- 1 root fuse 32368 May 11  2016 /bin/fusermount# `7 k( H/ q* p0 W( X
故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse
2 A& E1 ?& e* x$ z) b6 C+ }
- C; C0 j7 f* `* z
可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統     SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)3 W3 h; P+ `# R
2 M, k& H6 r. ]7 N
' V5 s& H' I& X7 \
回復

使用道具 舉報

發表於 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-3-24 12:34 , Processed in 0.095088 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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