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

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

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

[複製鏈接]
發表於 2017-9-3 21:06:35 | 顯示全部樓層 |閱讀模式
tid=66566&1、安裝及設定
  ]7 V) W# h1 x7 b9 T3 K分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。0 ^( p. m7 r9 ^0 o& m
8 c# p& N6 M) C8 f6 L
2、Samba Server' E3 n' W& |7 X$ j8 R1 V. l- ?7 c
步驟1.安裝 samba 套件
8 c( r9 p: U/ {" C- o7 L7 M4 M5 n1 X
9 p% u1 E! a& H5 O利用 yum 指令來安裝 samba 套件。
7 O' m; g7 ?) N# d" J1 B#yum -y install samba    //安裝 samba 套件
! `% p" p% D) Y: w" t2 w8 @* l
/ O1 w8 ~5 j: k+ q***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件:
- F& a3 M  O" o1 L#yum install samba-client samba-common cifs-utils( M% m9 [7 E& j: z, U5 Z
3 k+ S2 t$ I% ?, l! v& [# ~
步驟2.修改 samba 設定檔 (smb.conf)" k$ Z; a4 `2 J4 w8 J0 L8 x
7 M- r9 r$ J1 |. {3 D- x
修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。1 E2 Y: O* M! P& C& D' y7 a) t" M1 l
#vi /etc/samba/smb.conf  //修改 samba 設定檔
8 h9 J+ J6 P  s  s9 H% i% ?/ s! A. `1 \1 j' m7 W
global                                 //通用設定7 H4 V5 M0 D( V$ @" q5 S

. K% f$ m+ W0 l$ B7 k netbios name = Linux-smb            //顯示於 Windows 網路芳鄰的電腦名稱
) A0 [, i# T$ W- _+ f7 C
; c6 a  ?1 y$ |' Z# i* h- M: _  P workgroup = WORKGROUP                  //顯示於 Windows 網路芳鄰的工作群組名稱
  Z- M" [' Q1 I3 L/ b* h& z. F: m2 T" y5 `
hosts allow = 127. 192.168.1.18        //允許此來源 IP 位址可存取 Samba 資源
3 x! w" `6 z7 w8 |8 [% y
5 f% m/ ?- H4 I- }3 A! G! Z( E hosts deny = ALL                       //除了上面允許的IP之外禁止其它IP存取Samba資源
% A  r: W9 G- v4 p, L
" e" S# T# J# M* ]( V security = user                        //安全等級user需在Samba主機上擁有帳號者才可登入' `9 l3 t& X) W0 o6 _4 I# Z

2 V0 x( M  d* E- w# S% k2 K encrypt passwords = yes                //是否對密碼部份進行加密# ?% ^/ I; ]# p+ D

% q" k. g% a% N! b1 r. S; h display charset = utf8                 //Samba 上所顯示的編碼! K# k9 Q" K8 S0 T- j6 V0 o
$ F# u. l) T0 W% ~+ q
unix charset = utf8                    //Linux 上所顯示的編碼
2 ?: L: q! s: i2 ?2 x+ k9 ?8 I6 f, x( Y9 D! H
dos charset = cp950                    //Windows 用戶端的編碼 (可正確顯示中文)
  K1 Q* q' Q; L$ K9 }% C: ]! z7 v
home                                   //分享設定,屆時顯示分享資料夾的名稱) T8 ^  O5 U' S+ z; V

, b% r; p/ p; y comment = Weithenn Samba Files Shares  //分享資料夾的註解* Y6 T6 `2 B% O7 i6 u) Z) A! O
6 K, @2 x8 {6 U0 U/ }% k
path = /home                           //分享路徑, {1 B3 I" l+ E0 @8 M% X" e

8 s: n7 X+ C6 p+ ^" K% i valid users = user1,@smbuser        //允許user1使用者及smbuse群組可存取資源
; i* U1 @5 L1 p& T" g6 y; a" X7 u! h! P  c( d! S! h% j
public = yes                           //允許使用者登入後可看到此分享資料夾* x3 j/ r- [6 X  r  D4 K2 Z$ G  ~

) f2 C- U2 O+ {' X; p5 U5 }* c writable = yes                         //允許寫入
& \+ m4 d! {! b2 Z! o# n4 A* f- r3 V' R5 r3 L
create mode = 664                      //建立檔案的權限 (該檔案在 Samba 中權限為 664)
# i: \: c  F; W/ I% p1 |& N% y, {5 g+ G) ~  ^; M' ^. U' W
directory mode = 775                   //建立資料夾的權限 (該資料夾在 Samba 中權限為 775)
" R5 C" N% z4 j: L$ k  m% D, o9 }3 w! p

" G/ o1 D- a/ @  i. G步驟3.建立 samba 帳號2 C- `* T2 F6 l; C+ V* P
( n' _5 a; V4 O; f  H& u
設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。
1 S' V) h2 p" A/ Y/ O) `#smbpasswd -a user1  //建立 samba 使用者帳號 user1+ H7 p+ ]7 |( F& G$ r) r
- r8 w8 T! Z9 V
New SMB password:        //輸入使用者帳號 user1 的 samba 密碼9 P0 ^# H0 O, E+ F+ _, |8 k
% q' ~+ Z. x' h% l$ W8 Q; b( @/ n
Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼
, L" Y* M* t9 ~9 k; n' B, C1 S9 B/ P: R
Added user user1.     //新增 samba 使用者帳號 user1 成功
7 H8 U3 `3 O* b! V( ~& X# F# {* }9 u
新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過
5 N& t5 j7 e' Z1 t" m#cat /etc/samba/smbpasswd  或者
+ D& ~) a# O6 B% u, V* }0 J, I$ G% a, m#cat /var/lib/samba/private/smbpasswd9 H; {) ?7 j2 C
user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U          : LCT-41CAF287 :
* b' g! z4 t( d
. b& q& q$ r; [* v$ I% ^& r- D步驟4.啟動 samba 服務
+ i6 D, B3 a+ P9 v% f: p" Y+ I- ]: W& W, N
在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。
" t/ t: G% t$ x; l: x- P#chkconfig smb on  r6 @0 q0 W6 V" {6 y4 N+ w& B
+ b0 Z1 _- L4 B9 k+ a# |
使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。5 ?: g  r$ J- b3 |; X
#chkconfig --list |grep smb
# p/ h) _* V) ~& U5 m! P/ w" r% {: r1 K
- w4 ~2 J+ v* |4 o* p* g% d smb             0 : off   1 : off   2 : on    3 : on    4 : on    5 : on    6 : off2 m, c/ w7 e3 b. ^* J' I8 U& d

3 }. b. p3 d! l4 y& A, i完成上述設定後便可以啟動 smb 服務/ {. w8 h5 F& K# M9 s
#/etc/rc.d/init.d/smb start$ [( C; d0 _7 m

2 V$ t. H, l+ p! h+ p. P Starting SMB services:                        [OK]
9 f9 M% m" ]: \( v3 {+ s8 C9 m/ X, B4 I; ]2 v* i
Starting NMB services:                        [OK]  + @% f9 s; b4 O5 q

2 D6 ]5 g, s& m& J! m! n, L8 A檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。; n1 f5 r6 p! e2 r
#netstat -tnl
# R. N* F7 A0 p& n& \# W
- r, s: M" N* i) J& Z Active Internet connections (only servers)3 D2 I/ g" b  D& U, x

! q; N# i- F2 I2 @& u0 U5 h Proto Recv-Q   Send-Q   Local Address    Foreign Address    State3 u" b3 R0 h  Y/ m( m! D; P$ G
( |7 G5 E, R  o; \& N- M
tcp        0        0     0.0.0.0:139          0.0.0.0:*    LISTEN- E9 s3 f+ G$ v4 P4 W; Z
% d4 y7 s/ P1 A( v! F
tcp        0        0     0.0.0.0:445          0.0.0.0:*    LISTEN
, ?! f4 l: X+ x/ P: e: p" a* v
- k0 S0 a1 s; |, U0 K3、Samba Client
( W& F  t- ~" d. m% ^# w以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。
1 O# M  i% X0 q3 \: @
! |3 @  V* J) GWindows Client! b/ `+ E1 [  Y# w- P7 u  z

( j! G  ?  x* j0 N0 T上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:6 \2 D' `7 j  Q- I) n+ B& i
檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。( J) k8 I! Y9 Z7 ~/ n6 B
驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。$ U' Z! l& D1 X  r
, K+ X' \' H- n# O
若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):7 g# r% P& X$ Q
- N0 v8 I6 Y2 S. @- e1 L7 t
方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)
5 ], \: I& k, o  U. V7 ^1 q& X net use w: \\Samba_Server_IP\home
$ u0 G: @  d9 U6 W0 A8 c( m# g& c8 R( O0 X2 ]2 o6 ~: {  o2 P. b
方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)
9 j6 F8 l* _/ u1 k# _+ j net use w: \\Samba_Server_IP\home /user:user1 123456
. f. f$ f' }5 k8 n3 e$ K, R4 h
CentOS Client
- w% S' q6 d- K7 A8 Z5 U* v* l6 s! N2 v2 O! {& i
若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。
+ r$ x( z% g" S5 E0 O. g
9 |0 C4 _2 |1 T& w" q0 ^方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)
/ {! @" Z+ A: v+ R4 l  P0 vmount.cifs //Samba_Server_IP/home /mnt/home -o* j( n; n( I+ [0 b( O; D

  P" V: Y- D5 f! k4 ^) t# @方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)
' S4 e  D9 T" {8 I% r% qmount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=1234568 ~6 F* N' b: W; Z/ a
1 U, C1 ?% n5 d0 ?
若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。# V/ x: w  x4 r
umount.cifs /mnt/home

; \6 d* X& M8 {umount /mnt/home
5 d1 k* Z9 k# F9 `# ^8 K
  o' C  i( M, n4、CentOS 存取 Windows 分享資源
3 r1 w9 ]/ y! o. |Samba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:8 B+ H; c# z- d' y
; _+ u2 I- B& }' t7 R; U
Windows 電腦名稱: user1-XP
& j% T0 O3 i; D分享資料夾名稱: Shares
' s* f' a# D/ q1 c) M. X可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)& Z# I0 `5 L, I6 c) D
可存取 Windows 分享資料夾的使用者密碼: 123456" |: A1 H5 r. R; _7 Z, t
3 o* [5 B" v3 J; z! t; o# w5 k
CentOS 掛載至本地端檔案系統: /mnt/shares
. A; D! R- C$ X+ [) f! \CentOS 帳號密碼檔: /home/user1/secret.txt
* J" ^7 w$ g! O7 A; _安全性權限設定: chmod 600 secret.txt
  }9 _8 G7 G* G0 ?5 \" m6 F. b7 N. y- l2 R" |
了解後我們修改檔案系統設定檔 /etc/fstab。
# c0 O' I8 A( Z& p2 C1 F#vi /etc/fstab1 q; x( o* s9 \. Y! m- q$ n5 V
8 E1 c: t1 V3 x2 A: d: Q: Q
LABEL=/1           /        ext3    defaults        1 1, P# N- m$ g% U- L5 W

+ \  t& U7 _  W. V7 f LABEL=/home1      /home     ext3    defaults        1 2
# X* j, ]8 `6 A( k
. r  ?4 ?2 U, [& O: Z; B# | LABEL=/tmp1       /tmp      ext3    defaults        1 2
9 x2 ?; ~. X- R. {. ^3 H  {7 p2 P
5 k+ C8 ]  }; A3 Y$ l9 [ LABEL=/usr1       /usr      ext3    defaults        1 2
/ j% o$ M8 c# L: W2 v4 i" D$ e! G4 \2 g: l/ s
LABEL=/var1       /var      ext3    defaults        1 2# t7 e/ o; s! F3 b1 Z
0 ]6 v: G, u1 N9 h1 A! B0 F4 |2 u
tmpfs             /dev/shm  tmpfs   defaults        0 0
: e& l- `+ x' B' P$ v9 a" o, D
6 h1 L' ~* U: r+ R* m  u/ w6 v devpts            /dev/pts  devpts  gid=5,mode=620  0 0
& z7 k0 Y: P) T& u+ h$ ~
$ l* u% ]1 C5 B+ Y3 H; |4 {' h' ]  [ sysfs             /sys      sysfs   defaults        0 0
. j* @( N" I5 g. s  Q" w5 |$ g0 r4 t0 i
proc              /proc     proc    defaults        0 0
' p. {) y& }9 a9 @# z/ h0 W/ h$ k# L. d" f
LABEL=SWAP-sda6   swap      swap    defaults        0 0% f. a6 h1 d. [
- V7 I/ Q& ?" v
//user1-XP/Shares  /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行3 r+ \6 g0 M. R& t( K3 n% j

" Z- k0 l+ p- a; A建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:' `6 j8 X' S# N1 r# `' P
#vi /home/user1/secret.txt
2 _3 D0 z* R' _! j0 }
: n% i! v: D/ U& O username=user1
& i3 W0 c  |9 R$ M! u# z6 j6 D
/ P. D0 z5 M. s password=123456$ b0 ~, l; P. R* E

) q  y8 Z8 |( s& B( X1 j  d設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。6 F% ?" [: o8 o
#mount -a     //讀取 /etc/fstab 更新
3 A. m0 i  a' c" C4 J3 }
9 n* a; {. s7 _#df -h        //檢查是否成功存取 Windows 資源8 h# s( k) J, I

3 Q7 ~2 B/ [4 A  X  Q Filesystem            Size  Used Avail Use% Mounted on
% r, _3 o* {' P3 J
# t* J) V1 h# X8 ^: { /dev/sda1             9.7G  2.3G  6.9G  25% /; H& L$ Z% L. g

+ b& j: D" S% V7 \( _6 J* l /dev/sda7             414G  211G  183G  54% /home
* q2 ], W3 c' M" G8 `) }& e& w1 B6 ^4 s
/dev/sda5             4.9G  139M  4.5G   3% /tmp" b: r' h1 k4 O7 M' s1 v

" a; t% F) `- g% N) B0 b1 U8 U4 `' q+ y /dev/sda3             9.7G  2.3G  6.9G  26% /usr9 a* J3 t: [' W) P2 E4 g
2 m6 r& g1 |8 f3 L1 j
/dev/sda2             9.7G  255M  9.0G   3% /var- D+ M+ _6 l; E* O& f8 z( P; H
6 T' K  `' d( u$ X
tmpfs                 2.0G     0  2.0G   0% /dev/shm
' N8 a( e# |; r) S" `# N" E# n) B; x
//user1-XP/Shares  251G  236G   15G  95% /mnt/shares  //存取 Windows 資源成功

2 W2 S7 B- m/ Q8 P# {' L$ D4 b
/ @# y9 X3 _. }  ?$ l; E1 D7 R
[Troubleshooting]+ J+ K$ O  a& e% T, k6 v
從client連到server端時出現error:  
" `+ z+ j' N8 H9 W. C+ esamba mount error(110): Connection timed out
( \: a" z  B- p" g一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 445* X7 p' @# |! ~4 C5 {& x
2 U; \- ]. P3 `
至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:
) ^/ v. k& x9 Z% @/ L
4 t) l- f' A! d2 z
用 yum 查一下有什麼 sshfs 相關的套件:
- I% S& e, l" }6 o# Z$ j3 u0 h/ d# yum search sshfs; v8 t/ t8 o( b) F
=====================================================================/ I0 G& f& {' K; ~" I
fuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH
. Y% i" {; h% @" b! M; i! S# F& |安裝sshfs:4 d# z% l, D* K7 ?1 Y/ r$ g
#yum install fuse-sshfs
0 h4 x) Z: }* g* o$ f. X' I7 f建立掛載目錄:" N# t# J' @7 o# Q' w9 X+ B
#mkdir /mnt/temp# q% X9 ^2 a6 i' @" L
用sshfs 掛載遠端的目錄:
8 E$ d% g7 h1 k0 F- j4 P7 f#sshfs -p 22 root@192.168.1.2:/root/  /mnt/temp     //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄4 F# M' U& r: l- `; P7 M
root@192.168.1.2's password:    //接著要你輸入遠端ssh root密碼0 y7 `2 `; k7 v: n2 r9 l
正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的
& S2 K- Z, |" M, u2 k如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便
; R- @9 d- ]4 g( j# k% F+ W- U9 U; Y$ E/ R8 N0 J+ [
帶上密碼而不用手動輸入密碼& G6 o7 p- A' y: s! O
#
sshfs -o ssh_command='sshpass -p my_password ssh' -o cache=yes,allow_other -p 10022 root@192.168.52.4:/root/ /mnt/temp
% Y& g% C0 U$ e/ I1 s註: 如果掛載有問題,可以開啟 debug mode 觀察過程:
& J3 u# H+ X/ o; ?" g' {, j5 Q4 P& m6 C& ksshfs -p 10022 -o sshfs_debug -o debug root@192.168.1.2:/  /mnt/temp
  O. `0 A: X+ k4 K. a
& r6 E! ^7 I" Q4 r8 @: _$ y; g
以一般帳號(非root)掛載時,出現error :  S, q9 E' k8 Z4 N! ?
fuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限1 H; x; Y( k( B/ d. `
ls -l /bin/fusermount
/ Y2 F  o3 E% ~: v5 p- b-rwsr-x--- 1 root fuse 32368 May 11  2016 /bin/fusermount
9 [! `, c* i9 a0 x+ j/ p故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse1 ~! s$ O* g  M# L7 y: A  ]* \; u4 `

  x# I0 j0 U4 X+ j( b% M可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統     SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)
& o) ~+ C9 K9 B8 x& C7 d  Z. d& j! n4 u3 y3 B+ w( V) p. X) S" L8 f
- t8 _& V2 K5 G' U: A8 e- B9 d
回復

使用道具 舉報

發表於 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, 2025-4-1 12:56 , Processed in 0.101440 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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