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

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

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

[複製鏈接]
發表於 2017-9-3 21:06:35 | 顯示全部樓層 |閱讀模式
tid=66566&1、安裝及設定
! S2 d4 _: \2 D3 [4 s3 A2 @分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。" N# l" R1 ^+ @% V$ F

# S. s' K$ a; j' k$ S" Y+ l1 E2、Samba Server
; d) u3 }5 S4 G# Y4 o2 v# ]% e, ]- T步驟1.安裝 samba 套件
0 u( x5 I$ C. w+ W; S9 V: D
6 c. K2 @* }; M4 S8 [, h利用 yum 指令來安裝 samba 套件。
% _8 }. _1 Z% @9 A#yum -y install samba    //安裝 samba 套件
0 Z1 b; y( r- e* R2 ^3 ~4 \& b( c2 p
) Y, j% F0 e8 y/ F& O7 B1 ^! q# E***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件: 9 {/ x! O4 X) U) J8 c5 u. e0 u
#yum install samba-client samba-common cifs-utils: v2 D8 _# L- q: b9 C3 u/ J
  \! l9 ?: B$ {/ D7 ^* i8 v
步驟2.修改 samba 設定檔 (smb.conf); [4 d6 @! ~, L, e, D

8 D+ ?9 F# L! r& i1 d修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。, W) i; _  G+ q, q3 [
#vi /etc/samba/smb.conf  //修改 samba 設定檔  p/ Z5 h! W( W$ \6 t
/ q6 z+ o( x4 q3 P
global                                 //通用設定
9 @  \, W( h8 u3 W& H" H/ }2 j
netbios name = Linux-smb            //顯示於 Windows 網路芳鄰的電腦名稱/ K# Y2 |# \  {6 D- }4 ^6 j
. M" K( }( U* ], j
workgroup = WORKGROUP                  //顯示於 Windows 網路芳鄰的工作群組名稱
6 O. X6 f7 V5 {& k5 ?6 l: V6 W# z( |( T1 E6 t% @" Y
hosts allow = 127. 192.168.1.18        //允許此來源 IP 位址可存取 Samba 資源
! Q8 V7 z: M' E
" s0 W) w% w7 U6 A! a% ~- h; d hosts deny = ALL                       //除了上面允許的IP之外禁止其它IP存取Samba資源
& N# G3 f. A) L/ Z, Y1 d, v, d+ H& a+ V$ S# y, ], w
security = user                        //安全等級user需在Samba主機上擁有帳號者才可登入
* v1 L2 k  k* R3 v- U$ B5 V  R) j* Y4 B$ w# r: c4 w
encrypt passwords = yes                //是否對密碼部份進行加密! ?3 P5 x/ a/ P! ^2 S( y) q
/ }$ G' }& L, N) B1 u7 y1 |
display charset = utf8                 //Samba 上所顯示的編碼
1 d1 M3 ^! e* K
; [" [  d! E3 H0 l3 d unix charset = utf8                    //Linux 上所顯示的編碼( p9 ~7 e: [6 K: g( L
0 j! I4 F; u! y6 S( H  U( u
dos charset = cp950                    //Windows 用戶端的編碼 (可正確顯示中文)+ d/ A0 }( m0 c/ V3 n$ ?

) H- [  W& y# ?& } home                                   //分享設定,屆時顯示分享資料夾的名稱
+ I9 b! F1 u5 M7 u
! {8 d$ Z3 q5 E% D+ a5 k- S comment = Weithenn Samba Files Shares  //分享資料夾的註解
) ~, }# B( z- v
$ f1 m6 ]; w$ ?$ h# {0 A5 S3 a path = /home                           //分享路徑
. V& F' W/ j& D2 c
9 U0 U0 }, P6 l3 H7 ~ valid users = user1,@smbuser        //允許user1使用者及smbuse群組可存取資源
- L" }+ f- E, g
. ?# U' `* e0 T% M/ D( a' R; E public = yes                           //允許使用者登入後可看到此分享資料夾
# l# |/ E+ h( J
  V9 h: n# I6 M# P) ^ writable = yes                         //允許寫入
# E2 ~' b2 w! a4 _
0 g8 s0 S5 j) s$ V( ~6 r$ x create mode = 664                      //建立檔案的權限 (該檔案在 Samba 中權限為 664)$ D( V# Q& m6 z
2 B8 ?- `/ ]: Z5 i2 j; T: x  S  Z) K
directory mode = 775                   //建立資料夾的權限 (該資料夾在 Samba 中權限為 775)
& [9 H7 A9 A! R% y3 ]
0 f# [- V# g- y5 g
- E; v3 D8 _7 i: i步驟3.建立 samba 帳號
2 a5 }! L& l0 u3 ]
0 ~8 l/ t1 R, a, G3 z( g1 p$ d設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。' ^) Y4 b2 m' h9 d9 p* V
#smbpasswd -a user1  //建立 samba 使用者帳號 user1. x8 B) t4 ]  r

2 n) I& ]+ n3 N: e' P' \% A New SMB password:        //輸入使用者帳號 user1 的 samba 密碼
! m7 x9 s- T: d# c! [/ Z/ G5 {) W+ a' {( ?0 c
Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼
" C- ~# ]9 w, Z) n4 X" q/ G
5 s' R! n8 [4 J4 O2 K$ X Added user user1.     //新增 samba 使用者帳號 user1 成功
7 _7 x) Y  j# R" ?/ W$ ]
# n  }+ j8 D+ H( P) X新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過% r) ?1 K. u: z; O- v
#cat /etc/samba/smbpasswd  或者
! p7 v4 S& Z4 H4 d' u2 P#cat /var/lib/samba/private/smbpasswd+ d& t' S$ r5 F5 t% O9 {  D+ g
user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U          : LCT-41CAF287 :% b9 B# K) Q0 a) X) D

7 u8 \, K! \* l1 a/ v步驟4.啟動 samba 服務
! @3 r! S+ H) f3 t# H6 t9 H* @% e: ?
在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。+ _0 J6 \1 i6 G3 P  n8 I
#chkconfig smb on4 V4 q/ Z% o; b
- |% I* U5 A& Y7 z: F7 M7 O
使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。
* ]& t0 d# E9 k- N8 e#chkconfig --list |grep smb
) K# `- }" h1 \7 }) e+ c; b& G0 w! i
smb             0 : off   1 : off   2 : on    3 : on    4 : on    5 : on    6 : off* U: S/ Q- a! P
4 E2 q& b0 z0 T
完成上述設定後便可以啟動 smb 服務* C5 E+ [, r6 o0 g, I7 v
#/etc/rc.d/init.d/smb start" A7 R( X' s- ]' y+ U
; g. j& J0 H% |4 R4 r. q) ]; K( _
Starting SMB services:                        [OK]
2 K2 _+ g9 Q( R# _7 i* o% J. V2 w% l8 j
Starting NMB services:                        [OK]  
* Q/ j9 D% p( S  A8 x5 c+ o; Q; X2 T, f' a0 ]2 a% v' D2 V0 j
檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。
* N/ f7 l1 r+ ?#netstat -tnl; E% U% i/ J& a

9 g) O% G6 z5 M! q& }7 b Active Internet connections (only servers)
1 C. d9 ~! y% u; Q( I
& r* f7 @- N% j& N Proto Recv-Q   Send-Q   Local Address    Foreign Address    State
* V4 ]1 @+ J: ~2 X0 @% X
! z4 |8 i7 Y0 z( K tcp        0        0     0.0.0.0:139          0.0.0.0:*    LISTEN
9 d5 p& h; r3 D) {4 v+ t
7 K7 D" R# f1 v; J/ @' S, g tcp        0        0     0.0.0.0:445          0.0.0.0:*    LISTEN3 P0 k! R! L5 @( j' d  J  {, u0 c

8 Y# C& U) T  Z; S: H* S' ^, K3、Samba Client' F! }- _$ V7 u  m1 {9 x4 v  ^( e
以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。
( X0 L% V9 Z( ^5 Z* K7 ?7 {
; \7 U, h8 A# V" e9 L! X1 Z5 e# H5 z6 vWindows Client
4 C6 s1 @/ U8 X8 O: n8 v, ]0 x5 A
! H- W! m0 g7 O" d6 I% o上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:
1 v! {$ u- L0 v3 h+ D檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。' a  e. k2 ]% u) x5 a
驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。
& b( b. k2 K4 q7 G6 G5 s0 Z  d4 i0 w6 k9 y: P! N
若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):
  Y" a' I" q* g( s9 L: H2 i9 J3 a% b! x+ w7 p
方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)! O3 q& Q7 w" {; y: Q% n9 Z
net use w: \\Samba_Server_IP\home
2 `9 \8 v& ]# j9 n) T2 d1 q! @& V7 s7 g
方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)1 e+ R$ U$ Z! ^& M
net use w: \\Samba_Server_IP\home /user:user1 123456
& h8 o( b8 N6 u0 Z; e5 B  q* r& _8 ^. o; D% L% Z, k9 \" q: K
CentOS Client) ?1 _7 P: W4 Q+ t6 a; h3 Q. a7 v0 k

/ y+ h7 |  F( I" u若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。: O+ v) k: W8 m6 X5 e  o
& i* ?* {* J* V4 P% s- d0 y5 u
方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)
) K6 ^3 X; U: J! fmount.cifs //Samba_Server_IP/home /mnt/home -o
% Q( y7 K  r, G0 f6 V
+ ~, ?9 ~5 F) q! H: Z4 W+ H方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)
5 o+ ~- u2 @, c4 ]3 x5 j4 Y' L$ Qmount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=123456
7 j% k3 x+ }3 Y, Q; W# Q0 d4 {$ j0 z( m9 ]8 y
若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。
3 c$ l/ s) |. m) q/ A; ^+ h3 u0 Lumount.cifs /mnt/home
- @' y- e! ~, g/ s" o) s
umount /mnt/home+ s, w7 R* u+ j

7 [, c# }, Q. r- s; _4 m4、CentOS 存取 Windows 分享資源. H% Q+ s; j3 C( s0 ^: Z9 ]
Samba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:6 M' c3 o+ c3 m+ Z
2 a6 s& {: M- G) S7 l9 y8 W3 Q& t
Windows 電腦名稱: user1-XP
/ w( t* o. l! W5 b* `# K分享資料夾名稱: Shares
8 }: X2 p0 [* O$ p% F可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)
6 ^4 {+ h/ ^) ~0 w5 X/ s( b可存取 Windows 分享資料夾的使用者密碼: 123456! ]6 D: d  T5 p8 G* [1 h
8 U2 R$ u# b8 O  H- v" [9 y+ i
CentOS 掛載至本地端檔案系統: /mnt/shares2 O8 s; T8 N, M1 S) R- T
CentOS 帳號密碼檔: /home/user1/secret.txt9 u8 V+ @/ i6 p7 j. }/ Q  K
安全性權限設定: chmod 600 secret.txt+ r+ L- L9 }8 E. Y! \( p. m3 w
+ r/ @$ B, _, D9 S9 N: t
了解後我們修改檔案系統設定檔 /etc/fstab。$ N1 {0 e2 f4 i' s# M3 O" [
#vi /etc/fstab0 e8 f$ A+ e, v. {8 _1 p$ p1 c
+ e- L6 g  J' `+ Q2 Q
LABEL=/1           /        ext3    defaults        1 19 l8 |# A" h/ @- d

- o1 d& q6 ?7 B, h% L. x/ J. m LABEL=/home1      /home     ext3    defaults        1 2
* Y/ `2 N/ |/ u" ^8 X  R! J; f/ x& d9 `0 u
LABEL=/tmp1       /tmp      ext3    defaults        1 2
; W# n1 R2 z# d7 @6 f6 U% q9 p# g" j: j8 F; w! j5 s0 N
LABEL=/usr1       /usr      ext3    defaults        1 2: K' g" w' A7 _) N6 f4 p

8 t  V' G1 c: l1 e( Y5 {2 n6 {0 p LABEL=/var1       /var      ext3    defaults        1 2% [' ?) r2 G! T3 V4 a

8 u; G/ q4 `5 C tmpfs             /dev/shm  tmpfs   defaults        0 0
" n9 V) S+ |& Y2 Y8 h  O8 ^0 `2 Y+ `! }) m; i* Q0 s4 Z7 G
devpts            /dev/pts  devpts  gid=5,mode=620  0 0
) j. I+ h/ Z* f! V- ?- I' i
1 C+ |1 ]  G- O9 M, F' x sysfs             /sys      sysfs   defaults        0 0$ `+ g! k. m  J1 U8 h" M/ V
/ Z$ \- g( O1 w/ [) E
proc              /proc     proc    defaults        0 0
; R/ w/ w- O# z( F/ R" J
2 W5 `8 d+ P8 o! [) X LABEL=SWAP-sda6   swap      swap    defaults        0 04 P2 R! I9 v3 H0 |8 x% I
4 ]  e- O9 L; `3 _8 K
//user1-XP/Shares  /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行
# I; H' z2 C% c' X# K
& J* r/ a) r0 j建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:
) `; K3 \- q2 \" z9 ^" Y#vi /home/user1/secret.txt( o3 K& H; j6 T0 R

" b, e$ R7 u; z$ }* c( l username=user15 B& D; z/ E- G7 y
6 M& M3 p4 {9 u: t3 P6 F" l
password=1234566 h) K6 j$ W$ w+ p

4 K/ F. t6 ?8 H設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。5 D6 s. A  n/ O$ a
#mount -a     //讀取 /etc/fstab 更新# Y; U" L% o+ w/ T  T

( Y1 U9 O0 z& `$ w( w7 G#df -h        //檢查是否成功存取 Windows 資源
, T6 z( I! c# r
' u: M9 f/ d  f6 F Filesystem            Size  Used Avail Use% Mounted on
5 t6 {  E  L& a* x7 W- ]
4 V! U) Y9 |) H /dev/sda1             9.7G  2.3G  6.9G  25% // P/ [  ]( X8 y& e
; ]$ |$ j! m" v5 d* r6 g0 H
/dev/sda7             414G  211G  183G  54% /home& @8 T# f* g4 ^3 x2 t
6 ~7 m0 Z5 h# @4 j$ i, X/ U' O9 u! v) b
/dev/sda5             4.9G  139M  4.5G   3% /tmp
3 F- c& c0 v9 @2 Y
. I( M3 F5 W" ]. C! `: ^! z /dev/sda3             9.7G  2.3G  6.9G  26% /usr/ V! B! V( B  D" ]; l

0 X5 {) ^. C' [6 H  h/ ]& U1 k7 A4 d( R /dev/sda2             9.7G  255M  9.0G   3% /var
+ S8 U$ G6 T) ^' }' B
$ S9 M% C: C+ u* z4 z: I# E tmpfs                 2.0G     0  2.0G   0% /dev/shm
2 H  c$ D1 I: R' i9 o: `; G. Z$ Q2 X
//user1-XP/Shares  251G  236G   15G  95% /mnt/shares  //存取 Windows 資源成功
. k0 @3 Z; ?+ |! L: c' q; k

' k) S) V  G9 f; Q4 ^[Troubleshooting]  x( h! G& f2 y" \, q" T
從client連到server端時出現error:  . x) G2 B8 v# B
samba mount error(110): Connection timed out' ]3 i7 k# X7 F5 e; {2 G8 d
一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 4457 w! G6 j2 g& C: N

; e+ b4 ~. @; y  {  ~至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:
0 E$ l( b0 ~4 O+ N5 A( A( M
0 S2 w; p' o( j# T
用 yum 查一下有什麼 sshfs 相關的套件:
' G9 r( g/ o- f& \+ T; U  R# yum search sshfs
' a$ `& k+ V' r# u% v=====================================================================# ]  H1 M8 L4 \
fuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH
2 Z  @. P# B4 X8 N" R1 }, f6 v安裝sshfs:
; h4 A+ M. E# b5 `0 O#yum install fuse-sshfs ; l# G  Y* H  T
建立掛載目錄:+ \' \. n  \$ F$ y
#mkdir /mnt/temp' ?! {6 s0 t/ x. D( y6 N
用sshfs 掛載遠端的目錄:
$ G% w. s) V. w' S: q: C#sshfs -p 22 root@192.168.1.2:/root/  /mnt/temp     //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄
4 ^  z2 s$ o: P6 T( t; F, wroot@192.168.1.2's password:    //接著要你輸入遠端ssh root密碼
. y. z& z: i7 D# _0 }9 j# d: _正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的
2 t& o4 ^( b% l  W如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便
& G  b8 {) }  m. ?. [
6 b" o) G& N$ @帶上密碼而不用手動輸入密碼
7 j9 @) x9 Z! t: D" ~+ |5 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
8 ~. q9 i7 ^5 A$ y1 l7 P: z註: 如果掛載有問題,可以開啟 debug mode 觀察過程:
* T( Z# S; E3 b$ Hsshfs -p 10022 -o sshfs_debug -o debug root@192.168.1.2:/  /mnt/temp
6 W7 W, ~! x0 A' R8 @

5 @+ R+ Z1 I2 `) C& ^& _1 m% P以一般帳號(非root)掛載時,出現error :
' g7 R' S  W* P0 ~fuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限3 M8 S  Q9 n$ ^* o4 A- M- N0 U
ls -l /bin/fusermount8 T- b  _: ?$ |: Z: M
-rwsr-x--- 1 root fuse 32368 May 11  2016 /bin/fusermount* {0 ^9 ^$ j7 t8 p, B3 q
故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse  S$ a. \" V0 p2 a
1 ]5 V" \9 X$ P- h) e
可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統     SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)) R0 H7 o* X; P! v7 }
% h! U& q5 B; g+ `
5 H) r, }' T! [9 O
回復

使用道具 舉報

發表於 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-10-29 02:35 , Processed in 0.111462 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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