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

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

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

[複製鏈接]
發表於 2017-9-3 21:06:35 | 顯示全部樓層 |閱讀模式
tid=66566&1、安裝及設定- c' B- U% i2 `5 Q
分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。
  I! Y) ^2 _; S- c- R+ l  Z
- e+ `3 R+ N7 l8 v& g2、Samba Server2 \1 b- ~2 q) G. Z# n
步驟1.安裝 samba 套件
5 ~/ t3 [2 u6 @: w1 z$ v/ ?0 R, u1 t2 K- K. b1 X
利用 yum 指令來安裝 samba 套件。
& v! P, r% z; Y/ S8 S( u! D#yum -y install samba    //安裝 samba 套件1 a# u4 {7 ?+ n- L
) p2 R: _- k. n1 K0 g0 J0 U
***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件: # L. u/ N( Z( L$ n
#yum install samba-client samba-common cifs-utils
$ d# C' T# Y6 W
1 F- z6 D3 t1 q; b! |步驟2.修改 samba 設定檔 (smb.conf)% Y/ }9 r  c* o
4 v2 X- ]7 Z: v8 }6 L
修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。
$ N7 i; f3 A* w! K( H+ U6 S7 _#vi /etc/samba/smb.conf  //修改 samba 設定檔3 W2 _$ B" Q9 v- y2 J$ v" ^5 k
; m7 T3 T- Y. ?& x5 k* h
global                                 //通用設定" `. K, N& N: L, X1 y* R7 o7 J- g

$ b# Z, J/ h: P$ p+ X netbios name = Linux-smb            //顯示於 Windows 網路芳鄰的電腦名稱
5 P# J# Z1 f& K4 \
8 Z( ]4 h) @& i* a4 h workgroup = WORKGROUP                  //顯示於 Windows 網路芳鄰的工作群組名稱! L; R% K- N0 C; U; w$ m
5 N5 ^6 c0 C3 A. x5 `! x
hosts allow = 127. 192.168.1.18        //允許此來源 IP 位址可存取 Samba 資源  O; x7 O; C5 u3 J6 t* q
5 P1 j/ ]- ?5 \3 e0 Y/ X7 f! E
hosts deny = ALL                       //除了上面允許的IP之外禁止其它IP存取Samba資源
# ^1 g; A2 X8 x; b6 A4 Y
& z3 }5 |- y8 j$ b4 { security = user                        //安全等級user需在Samba主機上擁有帳號者才可登入( Z  B  m9 V3 a. n9 e" c
4 J, _8 J5 w; j" O6 c; E' _
encrypt passwords = yes                //是否對密碼部份進行加密
6 o8 t( `9 v% a
8 b7 R, ?- t! D. [3 M3 V2 \! V display charset = utf8                 //Samba 上所顯示的編碼
; \9 h: k/ _* C9 _  ~. h$ d( ?- F/ l
unix charset = utf8                    //Linux 上所顯示的編碼
$ Q* n* P( \7 K+ q( V1 h$ @# L- u" C' V( z9 \
dos charset = cp950                    //Windows 用戶端的編碼 (可正確顯示中文)
% A7 i! w/ s7 {5 f: Z* O- k0 \! M3 k9 M' s" b
home                                   //分享設定,屆時顯示分享資料夾的名稱
; U# K- M: I1 [1 B% X9 A
: @4 ?" `/ _; p# N; q, I4 | comment = Weithenn Samba Files Shares  //分享資料夾的註解) \0 m$ c% G/ Y) M
7 y: g8 @# {8 ~" I8 i! O
path = /home                           //分享路徑% Z$ p  R! H& R
! K, T$ t% P7 l- N+ h' \. q9 P
valid users = user1,@smbuser        //允許user1使用者及smbuse群組可存取資源
5 O5 w" r; f4 b
1 n4 S  n/ b6 f+ U$ z public = yes                           //允許使用者登入後可看到此分享資料夾. ~9 j4 r" W! e! U& a4 D
5 d3 X0 H% M. |. R
writable = yes                         //允許寫入$ [4 J2 T' j: S6 M% s9 s3 {
3 d' g4 o2 u% H8 w9 X
create mode = 664                      //建立檔案的權限 (該檔案在 Samba 中權限為 664)9 c4 {! O0 }- L7 J: F8 d
! n& Y9 K/ E) S0 V
directory mode = 775                   //建立資料夾的權限 (該資料夾在 Samba 中權限為 775)
1 h5 O* C8 R# s  y
8 I) f9 b/ g9 p1 V; V0 B0 P( C. Q) T
步驟3.建立 samba 帳號/ h1 O4 l1 C3 N( ~+ O/ V

. e" x% n- m% R3 O# y0 a設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。& g7 D" z, R5 i2 O; I# C4 m
#smbpasswd -a user1  //建立 samba 使用者帳號 user1
% y* G8 p' c. ^. s) e: D! K$ M( F3 @) u5 e$ o$ K/ t+ {5 O
New SMB password:        //輸入使用者帳號 user1 的 samba 密碼
- X/ J# M3 C  M0 o% K
' J+ t8 U/ T+ R  a$ H4 T' m Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼
. b, K& ?: e9 L9 U2 {6 T5 ~: T
% q' Y5 F: ~4 X( N Added user user1.     //新增 samba 使用者帳號 user1 成功8 E9 U; D0 r( K

- W2 }( d4 ~" c8 s$ L新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過  U1 J; @! A" _3 }+ l
#cat /etc/samba/smbpasswd  或者' D0 `0 w! o% f/ I* P
#cat /var/lib/samba/private/smbpasswd
( L3 X6 W! K5 j# u! d4 @ user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U          : LCT-41CAF287 :
& Y: H, n! N- E) g" T5 P
/ B5 y/ q( x4 C7 y& v' B+ j- Y. R步驟4.啟動 samba 服務% U9 `9 W! j- i: I$ }9 S

5 }* q) m- O; x) e7 J4 C# `( p在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。
, X+ B/ O% z0 y- _; X#chkconfig smb on( `6 V8 W% L! O9 Z. K

9 B; l) B# N& Q; {8 c使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。
6 d. G' W! M8 B#chkconfig --list |grep smb: A) a' q5 K. m1 I: K/ u
5 i3 i0 ?& @! U7 }
smb             0 : off   1 : off   2 : on    3 : on    4 : on    5 : on    6 : off
( `9 Y6 X) B: [: I/ d1 J" F  g# Y/ P$ f- z" A3 U1 b
完成上述設定後便可以啟動 smb 服務
" M; I  C( W* t  [. `0 v#/etc/rc.d/init.d/smb start
* |# N5 E! R7 I  K) w: b) s* R. N2 z
, x' V0 f1 k' R Starting SMB services:                        [OK]
0 n( c7 m- d( r5 F; g( ?$ N; P- \+ J7 K- l, d1 @
Starting NMB services:                        [OK]  , p6 P; k' m8 o/ I2 `3 M
+ I$ H: d( z& I# D8 a& }: |  J1 I
檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。! A( A% e' b' _* Z& W
#netstat -tnl& H* e, X: J- a. ~$ i. o

' x* w4 v) q6 U3 c5 ]) A( z; e Active Internet connections (only servers)
  d+ I4 L( O& u0 w( Z: ~5 q8 R
' {2 f; W! e. M/ H Proto Recv-Q   Send-Q   Local Address    Foreign Address    State
/ f% E: @5 |8 ?' A  ]( I2 X4 M' W- O- A
tcp        0        0     0.0.0.0:139          0.0.0.0:*    LISTEN! k7 Q% T/ A* c: W
9 L% c8 _6 j$ A) j( r* i; z
tcp        0        0     0.0.0.0:445          0.0.0.0:*    LISTEN  n1 a; f& E+ Z" s- H# D# ]

/ Z4 `  S/ u3 `+ ^" l3、Samba Client( _; C, T" l( Z  o2 e
以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。& o) V6 x5 k: X# w* k, a0 x

' A$ L' l+ p9 z$ a5 mWindows Client# {' H1 d+ c. y" H

5 t: G, T' J0 N; H! \0 ^上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:( L/ Y/ Y, a; d
檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。
' I8 z5 R8 q+ a1 L* O2 S7 U: Q6 h( U驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。* G1 w# j/ x: |4 z

2 D  @, U1 W6 ~5 |, U& M( w若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):! ~7 W  y7 e. s- q$ o# A, c' L" x

5 X* B8 t0 ?5 v2 X& q$ ]# x方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)
# B! q7 U8 x, g net use w: \\Samba_Server_IP\home
/ i# {. q  _1 a$ N: e% X  B7 b4 |
% A. p8 x  d) N: q& l2 b" U  p' B方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)
1 f" e+ c7 v: m; ? net use w: \\Samba_Server_IP\home /user:user1 123456
3 R2 T/ R/ K" [( Q1 d% v$ Z
9 J6 Q3 E  [' V, b1 _3 w- X5 ]CentOS Client
. l* w! j  b- k% o! ?' l5 r  S9 G& ]3 c" \
若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。
7 r7 L$ q1 _% V- d+ o1 D
( t; W$ _' h2 d4 A) T方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)2 j$ D2 j; N0 I; o1 j
mount.cifs //Samba_Server_IP/home /mnt/home -o
/ e/ h% a. G( w% M' M* M# \% F2 e, @  V3 W6 R
方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)$ |. ~6 S' T; o0 o/ f$ B( ^
mount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=123456/ H  T9 D8 `+ A1 D8 Y# b# O; d6 c
0 J( q8 M  ?* G5 @8 B- c5 L  I0 {  Z
若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。
1 c" H2 p" c: ?: p/ S. w  H' ~umount.cifs /mnt/home

, A: S9 x" t% d. tumount /mnt/home
6 l# ?3 d% p' i9 v0 Z0 K: D% G7 k' ]# F- ]/ B
4、CentOS 存取 Windows 分享資源3 Z  |; ~1 q) X' U
Samba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:4 R+ Z( \8 n1 H- \3 Q

6 u& _3 D0 L" T* o; a: g3 D" @. [  [Windows 電腦名稱: user1-XP3 w- o; W6 ~7 `  Q9 z- w& W/ M
分享資料夾名稱: Shares$ ^  |+ U; p) T! A3 O
可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)) q* T. c9 {! A- I! {) R% Y; L
可存取 Windows 分享資料夾的使用者密碼: 123456+ t7 P& m) @& X7 d- R, J

( \' _( v+ F6 GCentOS 掛載至本地端檔案系統: /mnt/shares" }8 e2 I: U6 x6 E" [0 F) t; @+ d
CentOS 帳號密碼檔: /home/user1/secret.txt
) }# F7 I* E% A安全性權限設定: chmod 600 secret.txt7 p! B* D; z: w1 L+ x( [
- R& ~7 i( v) e7 D$ Q6 \8 L
了解後我們修改檔案系統設定檔 /etc/fstab。
: }. H# r# u" c. \/ q& I) ~#vi /etc/fstab
. y5 E; \; C( j  P3 I" K& U0 q
* Y6 ~( g1 m) M+ I3 O# [ LABEL=/1           /        ext3    defaults        1 1! N. t( G) j* `  o+ o
6 A9 `# b2 J1 R. d+ Z
LABEL=/home1      /home     ext3    defaults        1 2# g. U  ]: Y0 g& K7 Z9 e

! A( s7 k- G- B) k- A7 v LABEL=/tmp1       /tmp      ext3    defaults        1 2
' v$ X: w" }) h; ?3 g7 @' w/ Z9 J, ^9 f5 h+ x0 _
LABEL=/usr1       /usr      ext3    defaults        1 2% T1 ]0 }0 H8 l: s8 F" F
- B' m' z1 I8 n+ V: N
LABEL=/var1       /var      ext3    defaults        1 2
1 \5 b( i# p$ G6 b$ K
; @$ r! k. z: W tmpfs             /dev/shm  tmpfs   defaults        0 0
8 E6 o, s  K6 B5 _4 S) ]( p4 N' h5 P7 x* s! L4 l# \- ^
devpts            /dev/pts  devpts  gid=5,mode=620  0 0" T( y: h! ]" h5 @3 N& W/ \
( J' O$ D& I- {
sysfs             /sys      sysfs   defaults        0 01 |! q# D. L7 ?4 m3 Q

9 F6 y; n7 Z6 G( f- b+ C proc              /proc     proc    defaults        0 08 z( O% w" k7 w* P. O

6 O: V: q* F1 { LABEL=SWAP-sda6   swap      swap    defaults        0 08 ]" ^- e# m* B  A* a- }9 N& w

1 Y) B& r9 {% x! x. c //user1-XP/Shares  /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行: Q( `+ I6 z" W  t+ h. u% A5 s

6 e  {7 b( t2 X$ w( g& \: j建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:
) t' Q6 u- B$ H; U/ B#vi /home/user1/secret.txt
- T3 W7 W( C  ?9 ~; D9 Z( n7 F# {8 o% n) q4 o; H; ?
username=user1  a+ u, B. Y8 x& W- d3 i( [
/ }6 a: i, m- r: H3 c
password=123456, O  Z5 e% R+ T& k; _

- w' ~9 ?4 }8 E- |* }3 I設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。
2 N5 Z, R( P) B6 I# ~' ~' e, C9 c; F+ F" }#mount -a     //讀取 /etc/fstab 更新
9 r! J+ D9 T& [% l
5 k9 D& C4 n) w( J#df -h        //檢查是否成功存取 Windows 資源
. k$ R6 f, A! `
5 ]5 ~7 C" x) A% O& c2 { Filesystem            Size  Used Avail Use% Mounted on$ y! g8 Y$ X: G% t6 ]1 e
. \  m% ~! j- z4 v7 X
/dev/sda1             9.7G  2.3G  6.9G  25% /
4 x# x/ Q, B, d, d$ Z6 p+ d7 _8 h5 D5 Q$ h* o# P0 g
/dev/sda7             414G  211G  183G  54% /home! q2 r4 X( i. x# c, D2 j
- T0 O  `3 M+ I: j
/dev/sda5             4.9G  139M  4.5G   3% /tmp
; _* V* H6 F% {% U& }" z" E4 x, x, |$ U2 b
/dev/sda3             9.7G  2.3G  6.9G  26% /usr
: I- Q7 D" `7 H
. t* M  e( Q" Z6 Z* a /dev/sda2             9.7G  255M  9.0G   3% /var
9 g  r' v  B& a% B5 s- w3 V( ~- w9 @0 ~3 U: j7 l! u6 @& O& ^
tmpfs                 2.0G     0  2.0G   0% /dev/shm/ L$ c3 ?5 N+ w3 {

' Y* w1 U& U- m' ]/ L; j% l //user1-XP/Shares  251G  236G   15G  95% /mnt/shares  //存取 Windows 資源成功

5 w3 H1 E, g& Y

+ e" T8 |: ]0 p( B0 }  a[Troubleshooting]! g: P# O! @$ I: {* f/ o7 H2 W% `
從client連到server端時出現error:  9 p7 l+ }/ l4 S( G1 y% \$ T
samba mount error(110): Connection timed out( X$ }5 J; Y; @& v+ V
一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 445
5 m7 x: g% N) g2 m
4 \. a  m; Q0 A6 D* @8 m! o( j$ |
至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:$ V+ ?2 o# X% s  I* `
  _2 i. ?3 O, s& G
用 yum 查一下有什麼 sshfs 相關的套件:
. R' g$ f3 @! Y# T% A* [# yum search sshfs
$ Z- x( e" x% G- d; j5 ^6 Z; g=====================================================================( ]8 b8 i% k4 Q( Z! \5 P* X7 B6 D
fuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH
5 Y% ?0 V# z8 O9 V# ?安裝sshfs:
. o5 Y9 a) O3 l& c3 k8 w' F, b% Y0 j3 p#yum install fuse-sshfs 2 i" x8 W. {; n$ [* C6 _0 o6 I9 I
建立掛載目錄:
9 N! V* s0 {7 K! {$ h#mkdir /mnt/temp
( g8 P( }/ ]" J& K- x2 f# o" N用sshfs 掛載遠端的目錄:
2 C) A" z/ A! I1 j; [#sshfs -p 22 root@192.168.1.2:/root/  /mnt/temp     //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄( t" |+ T% `; O
root@192.168.1.2's password:    //接著要你輸入遠端ssh root密碼
" P2 k9 a5 L) p/ J) g+ O正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的$ S9 R9 [0 T' z; n6 `2 k
如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便: z* z/ E2 f. @* w* [" ?3 p
# _. F1 F: e9 s( I6 H' h+ [
帶上密碼而不用手動輸入密碼7 |! `4 b$ y' Y% M( ^# E, E3 C
#
sshfs -o ssh_command='sshpass -p my_password ssh' -o cache=yes,allow_other -p 10022 root@192.168.52.4:/root/ /mnt/temp! I: \6 I6 }4 {$ A8 Q& ~4 q
註: 如果掛載有問題,可以開啟 debug mode 觀察過程:
; w! f) P* G3 |& w) b1 Osshfs -p 10022 -o sshfs_debug -o debug root@192.168.1.2:/  /mnt/temp
. U" M% i* M5 Q0 J
# k1 `  h# S$ D: V0 W( I- ?3 @
以一般帳號(非root)掛載時,出現error :- `" Y& e; v+ U- |7 E5 y, p, y
fuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限
# `3 @" D1 ]6 S+ Y6 @ls -l /bin/fusermount
  h6 H# y# E; U* F2 f-rwsr-x--- 1 root fuse 32368 May 11  2016 /bin/fusermount
- k, N; T) ]  J' A+ r故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse
' V' [+ |( u$ P3 n5 D9 a- V& K

! u1 ?6 d- o7 E7 U) T可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統     SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)
' `* N. [; D- U, U" P9 s/ O* \0 k. S! Y1 }! u$ {2 G

6 k) @" Y3 s* {0 ~& H& n/ s
回復

使用道具 舉報

發表於 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:18 , Processed in 0.069019 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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