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

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

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

[複製鏈接]
發表於 2017-9-3 21:06:35 | 顯示全部樓層 |閱讀模式
tid=66566&1、安裝及設定
9 K2 m4 B3 l( t- K, H( {' N; a分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。; R% o$ _8 E! v3 k1 o$ F3 P4 r/ U
& e4 a# R' r6 E0 i! o1 u
2、Samba Server
$ l. ]7 j& E- R; g& n步驟1.安裝 samba 套件
1 g! R$ D: Y2 g: j- U- ]
0 O# ]( ?% {0 T: G# }利用 yum 指令來安裝 samba 套件。
% N/ g# O% B7 ?4 U#yum -y install samba    //安裝 samba 套件( ?# ?. U  H2 \: B5 K6 q2 ~: ]$ t( d
2 b* T. {$ d8 x- }
***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件:
; t5 Y" B0 ^4 Y#yum install samba-client samba-common cifs-utils
$ X0 s" \2 x& B5 A! E. Z' V& ?
( K" {6 A" h' b8 T( q步驟2.修改 samba 設定檔 (smb.conf)0 E  D3 z1 w* h( S

+ o4 q4 G1 O4 ~修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。
4 h. ~  b4 N$ C% k* R  P#vi /etc/samba/smb.conf  //修改 samba 設定檔
& V6 c1 G0 O0 ?. q
* K  r6 y7 y! |: K- t0 n global                                 //通用設定) Y9 ^5 J7 s# \2 V( Q3 }
' j0 W) o8 C: u) ~! c
netbios name = Linux-smb            //顯示於 Windows 網路芳鄰的電腦名稱- i" G+ c$ ^" q$ ]

9 l9 n3 E+ b9 \1 ~- W2 U workgroup = WORKGROUP                  //顯示於 Windows 網路芳鄰的工作群組名稱& p/ \; [* i+ Y

0 ?% \- r* A1 j2 {  z4 H hosts allow = 127. 192.168.1.18        //允許此來源 IP 位址可存取 Samba 資源( I7 X1 ]9 E: z. _6 e% R
) |5 f/ x9 F+ y7 i; q5 S" X
hosts deny = ALL                       //除了上面允許的IP之外禁止其它IP存取Samba資源
' N$ B. d  ]6 t+ C
! `6 s+ |8 w% ~2 ^6 C* \ security = user                        //安全等級user需在Samba主機上擁有帳號者才可登入0 i: V4 i) E) O1 r

2 M. k+ m. c+ s) M encrypt passwords = yes                //是否對密碼部份進行加密0 @6 T% A3 b1 v( B0 n7 M+ E: B
3 ~% Y2 |0 t0 j9 `+ P& o/ I
display charset = utf8                 //Samba 上所顯示的編碼
+ n- F* H- L: M) U. w
5 y; D) G' }  {# |* Y  B# y: r1 O unix charset = utf8                    //Linux 上所顯示的編碼
- q$ ~1 h  ?# h* R
( i9 o& I1 Z% `* `. F# P' ] dos charset = cp950                    //Windows 用戶端的編碼 (可正確顯示中文)
0 q5 e& j/ r! s1 t! Y) [) b' G9 F" G
4 b; r. u  d1 Y7 d home                                   //分享設定,屆時顯示分享資料夾的名稱
# t9 T! v( r% Z4 z, r3 i. p% w
- C2 u* h! H) ^- f" w comment = Weithenn Samba Files Shares  //分享資料夾的註解
" p2 j4 a6 _+ E1 i" T0 z
9 h( M& C2 u: H3 V! E9 }' y path = /home                           //分享路徑
, ~; u) s$ s# p3 a# l( L$ }4 B( Y
) `  H' h/ n5 C, X* J/ e valid users = user1,@smbuser        //允許user1使用者及smbuse群組可存取資源+ ?- C) [; N7 p6 g2 G) T: N5 |

; a* m% \& H$ u public = yes                           //允許使用者登入後可看到此分享資料夾
- E& ]0 V1 s( a! S0 _" A5 q+ O6 P, J/ t. ^, s& P, I/ ?) K
writable = yes                         //允許寫入7 b4 t  @% r) u8 b1 M

% n7 A, Z( A! o% e7 N0 v+ Q create mode = 664                      //建立檔案的權限 (該檔案在 Samba 中權限為 664)
& l5 I" f2 W" ]. r- v* t* h
$ M7 I, H' F3 d& G6 S2 F directory mode = 775                   //建立資料夾的權限 (該資料夾在 Samba 中權限為 775)
; C$ G+ k  y: M! L6 q4 A( B  n! w2 A+ }3 h

/ ^$ e5 z1 Y! l4 N步驟3.建立 samba 帳號
" S0 D$ [1 z4 |5 u& d1 o% G8 ]  ~' N: T# I- V/ D
設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。: H. Z# Y% E5 s
#smbpasswd -a user1  //建立 samba 使用者帳號 user1
$ Z  q0 H; u9 y. s0 B- A* b/ Y' W# I7 b" \( C4 a/ U% ?$ I
New SMB password:        //輸入使用者帳號 user1 的 samba 密碼7 a: k0 Q1 q$ m! P: t: h
' o7 S+ j' w' I: G" b
Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼! n7 R' q+ P, Z/ u% i* |
& L8 F( L/ S/ e. k
Added user user1.     //新增 samba 使用者帳號 user1 成功8 p7 @9 f) x0 G/ d/ p- u5 R
/ U1 _; @6 F' R) r' R
新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過
* p( l2 y4 D$ Y8 S5 g#cat /etc/samba/smbpasswd  或者1 g& j' X. v3 _& F& a$ E$ P
#cat /var/lib/samba/private/smbpasswd
" \' J7 k7 k3 G( ?3 P4 T8 Z& s2 [ user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U          : LCT-41CAF287 :( A$ J! w% b2 T) [" Z) H6 a- ?
, y3 n/ b$ o3 v: q, A4 ?* n
步驟4.啟動 samba 服務: y5 P8 r# V/ r" Q# a3 a4 q
$ {/ a7 h" }- T& B8 X
在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。' F6 K1 R  Z; z* c* R3 X0 [
#chkconfig smb on1 a; [% O8 `) R6 D
. e0 F$ `; i/ a9 e- b% D3 [
使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。1 A7 A: Z9 n2 ^% p, _
#chkconfig --list |grep smb0 g0 _: `( ~7 M4 y  Y+ G0 T, l& |. x

5 @. x3 @1 g( l0 g1 t% j smb             0 : off   1 : off   2 : on    3 : on    4 : on    5 : on    6 : off+ }) ?# k/ V, J- |0 Z/ b

1 J$ J, _* ~# C8 U* C完成上述設定後便可以啟動 smb 服務
: ?: T. i& _+ D7 c. x( @( K5 V) k6 l, {#/etc/rc.d/init.d/smb start; J) _4 X2 E9 V5 E7 `- W! {5 `
7 s! {% E! y  ]3 n& z; @( Z8 G
Starting SMB services:                        [OK] : ^7 q0 C7 T* B9 h

" R# |5 Z; w* k Starting NMB services:                        [OK]  & |/ I, c  D- ]/ F8 J' _
' K! X7 S3 p; X7 S. ~
檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。
: S/ g! c( `/ [8 A+ M#netstat -tnl
# u5 ^5 D& ]" E) N9 I
& j1 D& S5 S1 a/ V8 [. s" T Active Internet connections (only servers)6 w% X: d3 v6 o+ g$ s7 K

6 q- b$ q5 f9 N3 q+ ^8 V Proto Recv-Q   Send-Q   Local Address    Foreign Address    State
9 |; o" P7 r$ {* I' P  |2 C  d: k* `1 w$ k. c
tcp        0        0     0.0.0.0:139          0.0.0.0:*    LISTEN) ^. j% B) l2 Q: ]/ I- e$ t, N! F3 a
) ^0 {9 }2 s' G2 S- y5 V% w
tcp        0        0     0.0.0.0:445          0.0.0.0:*    LISTEN, F. _6 t4 h7 f8 K
2 E3 j8 q; M/ ^2 X2 }
3、Samba Client! _% K7 W4 o" w0 h2 _" A
以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。- e, y+ ^0 {1 _$ m3 x

( w6 @) B+ n. l7 U4 n2 `5 L. F, w! kWindows Client$ G) b' h8 w" C% F, m5 }
, G4 ]$ }' A3 I% n0 \0 |
上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:
- n- M/ J, s: l, [檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。( G3 i! k' O9 U& c. p: P
驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。6 H. X* ^! w) i; v- M

. d2 Z1 |- n+ F3 [9 `* f; E! \若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):
5 T! R- D; D( X  w9 C
+ L; D1 _9 ?0 T' t: Y$ e方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)" s# v3 }; T* ?( _8 Z# X# ?
net use w: \\Samba_Server_IP\home$ f0 c9 b2 z. B' u# }. d

; A& D  u& L4 z4 i1 o方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)
( t1 a+ l/ _. ~1 e+ ` net use w: \\Samba_Server_IP\home /user:user1 123456+ G8 B( a* R, y6 D6 G

( h+ S' Q" S. d, j3 MCentOS Client
2 m+ n: X% {6 h, v2 c
' k1 _5 w, c  q3 D/ o$ x若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。
8 U6 c9 V% a( c6 b+ k/ O* H2 }0 H% P6 f2 K- U3 n2 r0 b
方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)7 ~2 }0 f1 k3 B4 j& O
mount.cifs //Samba_Server_IP/home /mnt/home -o! C  h  Z+ n% d( G* H6 [+ G

% K2 e9 ], F) n, n* g* ]% G方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)
- D! {* L1 S4 X( e+ X' O/ h0 [mount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=123456: Z9 x8 V/ E" ?1 m

5 w. p" D4 J7 Z% z若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。! B( c5 ]/ A+ {3 |4 |
umount.cifs /mnt/home
/ M8 [! y! u, |4 C: {" d
umount /mnt/home7 I0 E0 ?" R- l0 D

$ y& g% x" _/ S" p4、CentOS 存取 Windows 分享資源! j# |0 K" R: @# u! y' c
Samba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:
$ ^  a; o# }3 d  Z9 k( n% S) K3 m! W! ?' O1 w2 y
Windows 電腦名稱: user1-XP& _. T; o4 n7 s" I* g* o
分享資料夾名稱: Shares5 j9 U; o+ J! d% P9 k+ ]( l  V4 M
可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)
9 t3 o, Z# P8 S- o" J. m可存取 Windows 分享資料夾的使用者密碼: 123456
1 n" U6 d4 R3 F- A  l8 G, G& u" R; T
9 {- P- Q$ ^0 [9 g! JCentOS 掛載至本地端檔案系統: /mnt/shares
% W& T1 `0 L+ S# \* [CentOS 帳號密碼檔: /home/user1/secret.txt
! z5 q5 J8 F7 r9 a  c; H安全性權限設定: chmod 600 secret.txt
6 S# Y" e1 Z5 }5 ]% N7 J
# i7 d" T( a# f& j了解後我們修改檔案系統設定檔 /etc/fstab。
! T6 h1 M! I8 u/ x/ t# e#vi /etc/fstab3 J5 {) ^$ ?! a: p
. m5 r! z9 M( @. H
LABEL=/1           /        ext3    defaults        1 1
' ?- n5 A! c$ U* Z+ ^0 p: W
+ o2 I1 ~) ~4 a LABEL=/home1      /home     ext3    defaults        1 25 ~2 S7 K) l/ M. q- q4 K) \

) x3 L+ n( A; w LABEL=/tmp1       /tmp      ext3    defaults        1 2, z6 t1 F, X. h$ h& H; k
. p. ?* j7 D+ J9 k/ j
LABEL=/usr1       /usr      ext3    defaults        1 2
3 ]: J9 [: b( W: a$ c: M2 {
. C1 Z) z/ |; S4 k( b2 t LABEL=/var1       /var      ext3    defaults        1 23 T! l/ h+ N7 B' B/ w
, V) ^4 p0 ^( S. k; N6 v- z/ g2 ~
tmpfs             /dev/shm  tmpfs   defaults        0 0
9 ], I4 [: g2 ^, ?
9 T; ?# u6 E1 Y2 c! j6 p devpts            /dev/pts  devpts  gid=5,mode=620  0 0# Y: D& ^: Z1 r, t7 v
/ n! r2 m1 x% F0 u2 _; C
sysfs             /sys      sysfs   defaults        0 0; m2 l4 F; F% L. i7 Q
* X) e& K3 w8 m. J3 G! m% W
proc              /proc     proc    defaults        0 0
3 D8 X1 W1 a$ q0 N  _8 W; `, _! n) B) Q7 c  u0 T/ K
LABEL=SWAP-sda6   swap      swap    defaults        0 0
- `0 L  j: u, U/ ~. Z" F9 I
4 R! o# d2 r1 e9 P1 I! l //user1-XP/Shares  /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行. F. U: A' V. i  a! ^& ]

" b+ Y9 c4 z' R8 S8 H建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:
+ J' d" l' B; _: e#vi /home/user1/secret.txt. S; d$ M. m; K1 d2 u' @
6 }/ y/ }/ }3 P  K7 A! E
username=user1
" c6 O: q9 ^, N1 A3 \3 M7 F7 A* e7 k" R# B6 w
password=1234560 e+ _5 |: O. u* c+ }( @

. i8 V( g! @+ @  B. L# v$ F  x設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。3 x4 F. K% ~, C) |2 g
#mount -a     //讀取 /etc/fstab 更新
  i6 b5 d; N# c3 P
+ D9 p: R; R3 k' @/ H$ w#df -h        //檢查是否成功存取 Windows 資源
& A9 _# L1 ^! ~9 _* o/ X* p, a" H$ U  _) j+ _& m. P  V: ?
Filesystem            Size  Used Avail Use% Mounted on
/ \3 n* n" ~$ u8 {; ~" t" l
- b. k3 V8 Q( \8 q; X& {7 f3 v: h /dev/sda1             9.7G  2.3G  6.9G  25% /
0 K6 B: o0 L) S% R) ^. |6 a1 M7 }# ^5 Y6 }; B( P+ y( r
/dev/sda7             414G  211G  183G  54% /home5 f* ]* K* |1 E( ?; m, |- Z# A

5 `8 Z2 F* a4 B/ H  z /dev/sda5             4.9G  139M  4.5G   3% /tmp
  O( Z. j1 S1 y9 p, [  E8 m- M
/dev/sda3             9.7G  2.3G  6.9G  26% /usr
  d+ P+ R# T5 w, \  I' h1 q7 Z7 k
/dev/sda2             9.7G  255M  9.0G   3% /var
$ T% }! g! d, z5 Q
, s4 a3 d; W8 ]# j' q tmpfs                 2.0G     0  2.0G   0% /dev/shm
$ G: y; T" x  l
1 t: H4 e: u0 H/ B. e$ X //user1-XP/Shares  251G  236G   15G  95% /mnt/shares  //存取 Windows 資源成功

  W; G( T! T- v( v- |; ]- u; U; d% ~

% K7 ]1 g0 e& y3 E8 b/ k& t; Z[Troubleshooting]6 \: N% v/ K/ o5 @; [
從client連到server端時出現error:  
' |' d7 h' l: y+ {! F3 |- m4 Psamba mount error(110): Connection timed out
( x/ h" O: o: R" b一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 4451 [! J4 Y- W9 [" Z
  c2 E1 w) Q- H8 v$ s
至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:
, Y+ K) ^6 i9 p- h: L+ t/ A. V

6 K7 l; E# B6 ?9 z' A2 Z# \; r
用 yum 查一下有什麼 sshfs 相關的套件:: W9 O' c6 {5 U2 p7 D* b
# yum search sshfs4 g9 H# q2 A" @1 v
=====================================================================7 G  b- ~0 U# A2 h! a- o, K# M
fuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH+ k" V( j0 G+ F9 B& G
安裝sshfs:
. J( H" B- p6 W4 X0 ^3 y#yum install fuse-sshfs
8 t; ~$ F0 B2 ?$ ?建立掛載目錄:
# d! ~0 j2 D3 z! h+ g#mkdir /mnt/temp
, W9 q4 R. M! u3 V1 F" [用sshfs 掛載遠端的目錄:
7 d" ?' Z% k1 o) G; S9 a+ G#sshfs -p 22 root@192.168.1.2:/root/  /mnt/temp     //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄
7 }7 R/ \# w3 ^  w" jroot@192.168.1.2's password:    //接著要你輸入遠端ssh root密碼; o2 S/ `& d$ j- f7 n
正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的
# P7 x3 d6 X4 b如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便
2 ~4 k, N" k1 d+ l9 K
/ i6 M* t7 ^' Z5 ~" q5 N帶上密碼而不用手動輸入密碼
' A# v7 O( r1 R4 a) b; B#
sshfs -o ssh_command='sshpass -p my_password ssh' -o cache=yes,allow_other -p 10022 root@192.168.52.4:/root/ /mnt/temp# N6 {8 M! E5 o9 c/ D* V
註: 如果掛載有問題,可以開啟 debug mode 觀察過程:
  g: ?9 U) H* |sshfs -p 10022 -o sshfs_debug -o debug root@192.168.1.2:/  /mnt/temp6 m0 C0 {; P) I
- {- [+ X  R2 e2 x. {
以一般帳號(非root)掛載時,出現error :
) f5 D/ ~" `) l1 z+ sfuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限
) |* k- j' b, x% V  L$ L% _ls -l /bin/fusermount
& |! G$ R* n( R% m' g8 Z3 {-rwsr-x--- 1 root fuse 32368 May 11  2016 /bin/fusermount
* e# E, ]/ p5 x3 h故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse
/ `+ m1 q. \" J; y/ h
# C! _# G# |( q" @. o  `0 ]# I) G
可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統     SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)
+ N7 q+ C$ {  N' f' Z* W3 H3 u" u) v( S9 ~' V, F
- ^; x0 B1 ~( M. R8 p" F
回復

使用道具 舉報

發表於 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-23 15:31 , Processed in 0.083398 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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