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

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

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

[複製鏈接]
發表於 2017-9-3 21:06:35 | 顯示全部樓層 |閱讀模式
tid=66566&1、安裝及設定+ e; N' T  h, Q
分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。6 \* J- f$ a* `# j3 }; V- x
+ t$ G. M0 |; r
2、Samba Server
; n) H/ n: v3 N- }$ f步驟1.安裝 samba 套件
3 I9 `1 a, N- S8 M- ]( Z- m; @0 h( r! R% F8 l# P# B8 r7 P
利用 yum 指令來安裝 samba 套件。$ q" W) _* w( p
#yum -y install samba    //安裝 samba 套件
3 C: W) z. E- Q  n1 @, M
: l6 D5 O0 a4 `9 c***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件:   E% c5 X& S5 y$ E& X
#yum install samba-client samba-common cifs-utils/ b+ f0 h" S3 ?& n* g
% h: g2 i3 x6 ^5 b4 C
步驟2.修改 samba 設定檔 (smb.conf)
  [6 C# U5 K2 K0 d  q( H/ u5 Z& D! ]# N& ~& H2 c7 t# J8 [: m
修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。' O5 L0 o0 m1 D% g
#vi /etc/samba/smb.conf  //修改 samba 設定檔
5 m9 U. ~& j9 g3 o
% @1 {- P1 B. S5 f0 E global                                 //通用設定  n. w% R4 x3 ?  m6 o. R: l

1 z7 W6 ]. Q8 C0 X, _ netbios name = Linux-smb            //顯示於 Windows 網路芳鄰的電腦名稱: b* E' m4 X5 O& ^3 g$ `5 I
! K9 F, E! K/ z0 }9 s
workgroup = WORKGROUP                  //顯示於 Windows 網路芳鄰的工作群組名稱
+ b: {2 T" z' R5 c% U
# n) y$ q) e+ i5 `. z hosts allow = 127. 192.168.1.18        //允許此來源 IP 位址可存取 Samba 資源9 D* ]2 _% J6 T# `0 k
. Z3 W. h, Z6 B" {" T
hosts deny = ALL                       //除了上面允許的IP之外禁止其它IP存取Samba資源
+ D5 `2 U+ l' q) ^
# L8 ~- n& z0 |3 |5 b security = user                        //安全等級user需在Samba主機上擁有帳號者才可登入8 X" U4 O0 w# t* j0 f. e) j
! ^0 c1 V# m7 h9 X
encrypt passwords = yes                //是否對密碼部份進行加密
" E$ U, _% V$ [; C" ]9 k/ u7 M9 }8 Q/ p
display charset = utf8                 //Samba 上所顯示的編碼9 U$ s$ y6 N$ n, h
9 |1 B9 O3 i' v" u# U# V
unix charset = utf8                    //Linux 上所顯示的編碼; B. t1 s  @- u3 K
3 W/ T9 q. `8 C- ?' A, }# m
dos charset = cp950                    //Windows 用戶端的編碼 (可正確顯示中文)
6 ?- T( ]$ P4 d# f9 A* s1 t; C0 I
2 L8 o6 ~( X- z0 |- G8 i home                                   //分享設定,屆時顯示分享資料夾的名稱
+ c/ E$ W  i, g, P: j. ~- s, H' f/ i- |8 n8 A! U( t
comment = Weithenn Samba Files Shares  //分享資料夾的註解
$ u4 R" T7 I7 S5 O. r) v  }% S! |$ @2 M* ]+ g9 a5 j% d
path = /home                           //分享路徑
2 w1 S8 M- ], U: f) ~
  \& {7 o- Y4 h& R: C( o  y valid users = user1,@smbuser        //允許user1使用者及smbuse群組可存取資源
5 ~% v& H" s8 i. A; [# {2 h0 J, o. t. @; ~& a
public = yes                           //允許使用者登入後可看到此分享資料夾5 _- a2 p6 ~8 Y, f, f
$ l; V7 |# e8 V
writable = yes                         //允許寫入6 Y7 M) p! u( G, ]4 v  k
. U  r7 }; `& r# M2 u  e- F* n
create mode = 664                      //建立檔案的權限 (該檔案在 Samba 中權限為 664)' `2 B+ h7 ?% r& T% P
0 I: `& \5 w# {& ^8 N
directory mode = 775                   //建立資料夾的權限 (該資料夾在 Samba 中權限為 775)
+ r% d! x0 o' e7 K4 J; w
2 B" V  w/ v- E  U: o( d% @& y8 m; O  ^
步驟3.建立 samba 帳號/ J2 J; D3 B- V, d7 `
  I& q# y' Z6 P  y! [, a
設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。  }( g. w  L: T! }
#smbpasswd -a user1  //建立 samba 使用者帳號 user1- o; I' \  m: C/ h0 N* O' d& _, f
6 }' o6 h" c1 k9 E* g! d
New SMB password:        //輸入使用者帳號 user1 的 samba 密碼2 F! {; T8 [) E( X
9 ~/ `/ ~4 \) W1 C
Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼9 b: K, D& @9 M! k
* ~0 `/ A; O5 t% {
Added user user1.     //新增 samba 使用者帳號 user1 成功
. n* S7 y$ p- p2 ]
5 L0 o  M( ?/ l1 Y新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過
4 p1 l+ J+ z6 p# u0 v  v#cat /etc/samba/smbpasswd  或者
* X' e* l0 w+ U( ?#cat /var/lib/samba/private/smbpasswd
2 z3 O' w9 W" ]) z user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U          : LCT-41CAF287 :# D" I' s6 j: h8 L
8 r0 l1 _: r; ]$ i0 e) Y! f
步驟4.啟動 samba 服務* K" P. I; [- i' h* Z( c5 K

. G8 j% N) w( k在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。
2 s  b. T0 ?  s( Y4 ~. A#chkconfig smb on3 ?: u$ m! N& T
$ f  Z* u! }$ a7 j9 ~% e) i
使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。, N, G7 }- b4 Y2 ?
#chkconfig --list |grep smb
1 I' p& {/ _5 G; p' m" d) R
7 Z  y, v3 G# n) A+ t( m+ R0 `( U* L4 l smb             0 : off   1 : off   2 : on    3 : on    4 : on    5 : on    6 : off, B3 O: x$ b" x5 {  \7 c
9 [- Y* ?# @' n( W* E" r; Z8 d
完成上述設定後便可以啟動 smb 服務( D6 {' P% s# Y& q8 \  H
#/etc/rc.d/init.d/smb start
6 v8 R$ U/ ~* Q
2 Y7 }. o+ Z  C. H$ S; A Starting SMB services:                        [OK]
8 V1 ?1 r2 T0 w. M
  S' z( F; I4 r1 E Starting NMB services:                        [OK]  ( \3 z" P4 u: {! e3 ?2 b1 V, Q# ~

. t* w) g5 e) m! b檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。' q) m* b; a8 p7 g
#netstat -tnl* {# U) D( a' s3 |4 V: p

# T$ e) R' {% Z+ Z Active Internet connections (only servers)2 Q) s" t1 G+ i4 F0 i2 u

6 c# O: {- }8 t1 d( N1 j Proto Recv-Q   Send-Q   Local Address    Foreign Address    State
( |" ]$ S# Z! c; j( j3 N3 I- U
# T0 `( w2 r5 }8 E9 t0 z tcp        0        0     0.0.0.0:139          0.0.0.0:*    LISTEN& _+ o, }' F, \4 m: i3 ?# ^
% R; o: f! E+ ^/ h! C3 }  \2 Z
tcp        0        0     0.0.0.0:445          0.0.0.0:*    LISTEN: M' q# h$ H( k; `
0 i* `+ Q: F& Y: {1 \1 U
3、Samba Client  E1 ~, Z4 B; G- r$ x8 h; l2 v
以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。! c) g" A; d) c( v# ^
$ D: B/ o* m. q! D% K+ ]; q
Windows Client2 M; e. j" g; _# I7 h- R! Q4 h

# u& ~# B1 U# `% c: P上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:/ L, Y7 Y6 J( @- _- p! w' {
檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。
2 ]! \" N9 o+ S驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。
" P. s6 @; N- c1 m9 L% Q6 s. ?0 w& d- `9 v5 s
若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):
% R6 O8 p8 t% \+ Q" o* d; Y' H+ n& o, t/ C# a; Y
方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)
! B  A3 e4 N/ G net use w: \\Samba_Server_IP\home  {1 _4 H  d* w" h
1 `. F8 o! @  Q1 ?5 A: o$ u
方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)5 O% v& p. d2 K: ?; M% S; k& L
net use w: \\Samba_Server_IP\home /user:user1 1234560 |0 L: |6 e' E: P3 R

  E5 h6 B* ]) K, [CentOS Client8 w4 A9 I) z5 ^5 G/ G2 x* n3 c

* j, b7 p6 a/ Z* |2 ]若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。8 r9 \6 G1 W) T# B1 Z6 u; U1 B
* h7 C9 s6 G* l4 i  [  N, ?
方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)
: T; }0 K2 H) hmount.cifs //Samba_Server_IP/home /mnt/home -o5 v9 O4 g& s! {3 ^( X

1 x8 D8 `+ T  R+ ]& F& |方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)" J) L5 |: s4 q; [1 K
mount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=123456
- j  }$ ?0 y. e  T: q- g% H# [8 a+ q! W2 P
若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。/ k6 B# Z* T$ t
umount.cifs /mnt/home

8 |/ j) E/ D" B% }umount /mnt/home
+ T0 |/ \4 M5 @/ c' [" ]; m; e' R  k. }. N
4、CentOS 存取 Windows 分享資源
) n. ^  x0 G& C9 H3 D$ uSamba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:
% O9 y- W0 o" y6 x' W2 ^
2 e# y$ x' C* n: m6 z5 |Windows 電腦名稱: user1-XP# v& M1 I% X% B* g, M
分享資料夾名稱: Shares# j, X% j/ j- C
可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)5 L% _* g3 p4 B. J
可存取 Windows 分享資料夾的使用者密碼: 123456
" K$ F$ S3 U% a; R$ j7 Q
* @! r3 I( f6 f) o5 m0 `- h' @: pCentOS 掛載至本地端檔案系統: /mnt/shares
6 }% T" z  O; y7 m0 qCentOS 帳號密碼檔: /home/user1/secret.txt7 M2 q( R* ]' Z8 q8 n
安全性權限設定: chmod 600 secret.txt
( m  D/ m' @) Y" a# E; d, \, Z; r/ p9 Q0 Y( U. J' d" Q1 H
了解後我們修改檔案系統設定檔 /etc/fstab。2 A: u. v1 p" m5 o6 Z( a! f+ v
#vi /etc/fstab
4 `, k( F/ B* d" R
; w7 S& t/ H$ G) E2 A. T LABEL=/1           /        ext3    defaults        1 1
6 e- |9 Q$ [* n2 Q# x% u. b4 ^/ O6 @4 Q! y9 s) H$ B$ O4 h
LABEL=/home1      /home     ext3    defaults        1 22 Q, X$ H( l7 S  I  g

( X" K' h/ a3 K LABEL=/tmp1       /tmp      ext3    defaults        1 2) C4 S1 c. P8 j* j
3 ~9 a/ i( i8 w' c
LABEL=/usr1       /usr      ext3    defaults        1 2, p0 g6 g8 |" E! L0 G! T) \
, b. l$ T, n1 {& ~
LABEL=/var1       /var      ext3    defaults        1 2
) e: ], V( V0 J" f# g* B+ j7 [  b+ b# \0 y% c& X0 m
tmpfs             /dev/shm  tmpfs   defaults        0 0! }( q$ z' {. [) F, b2 M
2 ]. @# _9 m8 E: W1 O; n
devpts            /dev/pts  devpts  gid=5,mode=620  0 0
& L) t6 j# n0 v, i0 C) M5 n: {; O% m6 ?) f* e; f+ ]- Q
sysfs             /sys      sysfs   defaults        0 00 `5 C2 N0 p2 j4 Z8 j1 p4 F

% X# ~% h  y. H7 A9 i6 X2 L proc              /proc     proc    defaults        0 0
" U& W; ]2 E# ?3 n+ N5 V, \7 u# x- M1 w9 Q" {
LABEL=SWAP-sda6   swap      swap    defaults        0 0
4 v& q* n3 B" j% h
# d& t# f( b1 l& O  ] //user1-XP/Shares  /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行1 j$ J- x2 t" P/ [0 m' c4 a
7 x7 X" G' O- l" ?
建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:; L2 \8 v! p5 ^& t  ^- Z6 n0 P/ V
#vi /home/user1/secret.txt, q2 D  U0 O* P8 g& H7 Y

# [; m* ]6 y, O" T username=user1
! y( v3 i0 b; D' k) ?
4 h$ y. V" r4 X2 J password=123456
: O! o3 k$ I& a' H( P" O1 Z+ W. Y; L- J0 O
設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。" n2 a* ~# Z7 p$ |6 X! z
#mount -a     //讀取 /etc/fstab 更新0 ~8 a6 i! T% ~; X/ Y3 j; D
6 F4 |, n4 m: [2 S; c
#df -h        //檢查是否成功存取 Windows 資源2 v/ v) H! r$ _; d: t! R! i
2 @2 }# v, T" O
Filesystem            Size  Used Avail Use% Mounted on% @6 l, [) j# x( v. [: X' c
9 Y: s, w' `& C& U! ]
/dev/sda1             9.7G  2.3G  6.9G  25% /, T) j( |6 z& P& B/ b1 u

8 o/ I6 \. _1 M4 B) _$ V /dev/sda7             414G  211G  183G  54% /home6 o( J; e. q: r7 D: V5 ?

6 b% q5 J% a8 K% Z4 w5 X /dev/sda5             4.9G  139M  4.5G   3% /tmp
/ m! Y0 k/ s- C- M, {3 Y) R$ E# @2 Q) O/ y) k: k' B
/dev/sda3             9.7G  2.3G  6.9G  26% /usr
( v2 ~4 y0 ~7 l! E& E2 r7 @
1 s( [9 D" J- @4 Z8 ~ /dev/sda2             9.7G  255M  9.0G   3% /var
$ b, i. V/ H7 Y3 ]- n) [8 Z; p  S5 I  A
tmpfs                 2.0G     0  2.0G   0% /dev/shm
4 C3 x2 w4 B, p: e; Z2 }3 c8 @! u- ]# l
//user1-XP/Shares  251G  236G   15G  95% /mnt/shares  //存取 Windows 資源成功
; i7 A$ J* Y+ t# Z
' M0 r3 a& _! F: f5 M/ R
[Troubleshooting]; }0 i6 I6 f4 l6 z! {+ x) h
從client連到server端時出現error:  # X0 K$ T" `4 e! v$ @
samba mount error(110): Connection timed out8 W* C7 @8 ?' f. k, r+ W
一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 445
/ {" @. A3 F4 Z$ O, w% d% J
7 N9 B9 ~8 v+ d* b
至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:
1 K3 ~& M# `9 |4 r  @5 Z! l  j1 L

6 T! V' l. L' Z) r4 S4 c; ~
用 yum 查一下有什麼 sshfs 相關的套件:
( m/ P0 O. n0 i" J, _- h' p# yum search sshfs
# j- o) j: D" J* x0 y. V=====================================================================
1 `. e* `: |& p( _5 y& b  K7 \fuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH: G: J  j' {" v& m" s
安裝sshfs:) Y2 c# R4 n1 e6 [+ F" r
#yum install fuse-sshfs
7 U. K. C4 k) ]/ y  h8 t建立掛載目錄:0 I/ i& e8 r2 n/ T5 p8 Z
#mkdir /mnt/temp
8 {: v0 ?+ u$ i用sshfs 掛載遠端的目錄:# S1 a3 B. U" t3 @6 A
#sshfs -p 22 root@192.168.1.2:/root/  /mnt/temp     //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄# K+ h& C+ S, I  x: n" ^7 v' H; ]
root@192.168.1.2's password:    //接著要你輸入遠端ssh root密碼7 ]2 [0 _% D* O
正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的0 Z( d6 x. t2 Z) f1 i  c, g1 n
如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便8 f) y: ]6 D$ f2 p; E! [
2 h: h- ?9 X: v
帶上密碼而不用手動輸入密碼
6 e9 S* h% L) S0 {#
sshfs -o ssh_command='sshpass -p my_password ssh' -o cache=yes,allow_other -p 10022 root@192.168.52.4:/root/ /mnt/temp- P0 c7 }1 C( O- x3 {9 r  X
註: 如果掛載有問題,可以開啟 debug mode 觀察過程:
; a5 {; A9 A& S& D6 r. H* o, Y% }$ osshfs -p 10022 -o sshfs_debug -o debug root@192.168.1.2:/  /mnt/temp
; t+ C3 j" x. O' T$ s/ g) h5 q
- X& Q7 A& f; ^' N; V
以一般帳號(非root)掛載時,出現error :
( ]: J$ y& L. S7 H' Bfuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限
% e/ \" ?+ v  T4 ?  R. j9 cls -l /bin/fusermount/ X7 Q/ `$ R8 ]( Z) ]/ Z
-rwsr-x--- 1 root fuse 32368 May 11  2016 /bin/fusermount
- L; H7 b* g. f. F故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse/ s/ F) ^5 `5 o; a: y% |# C+ T
8 f: J* F  s7 U* s" B
可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統     SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux). J: A5 g+ s$ C9 s  Q

. Y6 N) A* d3 Z, \0 V( w. P8 X
- \# Y9 i# A  `- w7 h+ f+ g& m
回復

使用道具 舉報

發表於 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, 2024-12-25 01:44 , Processed in 0.073456 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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