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

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

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

[複製鏈接]
發表於 2017-9-3 21:06:35 | 顯示全部樓層 |閱讀模式
tid=66566&1、安裝及設定
6 T6 v. o1 C+ f) h分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。
6 [& [$ u: ]3 a, q+ \1 t2 ?/ c- y. [- R6 c! g9 p5 v0 V$ W
2、Samba Server
: O3 a4 o( ~3 K8 G' z9 ~; ^' q4 ]9 `步驟1.安裝 samba 套件2 a" ~! M+ y8 N; [4 J8 g9 I

. L! z4 a8 `1 I% w0 [. |1 p利用 yum 指令來安裝 samba 套件。* k9 f1 w% [4 C( X; N$ H1 L; g& |
#yum -y install samba    //安裝 samba 套件
1 U, t; F* J7 B& o% A  }5 _+ ?: t, h  ]/ k, I; {8 O, H
***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件:
1 e  e' I& i7 S+ ^0 g& \#yum install samba-client samba-common cifs-utils
( j. V) X7 w7 u9 x! {. R; |3 T! z/ [1 T8 c5 {; I) I+ |5 J# N
步驟2.修改 samba 設定檔 (smb.conf)& B, [% i( {* s

5 w' y4 ]$ o" e& M8 u修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。' C& T. M5 X1 `, L; j) V5 H
#vi /etc/samba/smb.conf  //修改 samba 設定檔1 k% G' f! d# q

& Z6 }9 a) ^& v5 D9 ? global                                 //通用設定
4 }& s* b3 ^* E0 q2 k" A6 v9 ~+ T8 o3 l. t% J1 @2 b
netbios name = Linux-smb            //顯示於 Windows 網路芳鄰的電腦名稱
7 B: j0 o/ p- K- k! `; t' M; J3 j
+ q* z$ l6 i: k2 e9 n: U3 u% z workgroup = WORKGROUP                  //顯示於 Windows 網路芳鄰的工作群組名稱. w) i  V' P* Y4 u- u$ }: m0 ~
: c4 Q. U" W0 |) j8 H* v* l* W
hosts allow = 127. 192.168.1.18        //允許此來源 IP 位址可存取 Samba 資源3 b8 ^  J# m5 u$ Y7 F! L1 c
2 ~# m. @8 O5 _$ D8 r5 p
hosts deny = ALL                       //除了上面允許的IP之外禁止其它IP存取Samba資源8 ~$ Q0 y9 v! ~: N! M5 Y% L1 Y
( k, W* w/ O$ L' E8 S. b0 v3 Y
security = user                        //安全等級user需在Samba主機上擁有帳號者才可登入
: J$ }0 i' U! O/ y. V6 K( @+ i. `8 p
6 Y2 ]1 V  t' I encrypt passwords = yes                //是否對密碼部份進行加密
  |- w$ ^: X0 ?6 a6 a. g* O0 u* z- N' Z( x& }: }  L! [3 n
display charset = utf8                 //Samba 上所顯示的編碼
  S3 E% Y1 I* z9 E9 X  c
) p; Z0 C2 X% a$ s: M$ M. N unix charset = utf8                    //Linux 上所顯示的編碼, T- w1 z' x+ S; s, |6 f  m& E7 f5 M
- x/ f/ U6 |; k2 w% ^0 z. @
dos charset = cp950                    //Windows 用戶端的編碼 (可正確顯示中文)0 @% \1 i/ Q  L% p
5 n( o6 s& g, X# X, X
home                                   //分享設定,屆時顯示分享資料夾的名稱
5 m( _: }: i+ V( A$ K* y: q
: g" @" ^3 b) o+ G4 F9 E comment = Weithenn Samba Files Shares  //分享資料夾的註解  i3 b1 T/ [$ f2 \/ f5 k/ t" v) J

3 V6 P6 |. }9 `) g6 D path = /home                           //分享路徑
! Z) ?2 C2 P: b
% A' w5 g. g0 P: |/ Q) H valid users = user1,@smbuser        //允許user1使用者及smbuse群組可存取資源1 }9 W6 `2 y7 V( g2 x1 A% `# B
" o& A0 y8 r- i: }$ {
public = yes                           //允許使用者登入後可看到此分享資料夾0 |& m: A: Y" h0 M0 f# j
5 a( L9 ~# o  y: g
writable = yes                         //允許寫入8 X: {" Y- f) a2 j8 X# K; j$ w
0 F! l' _7 Y3 f
create mode = 664                      //建立檔案的權限 (該檔案在 Samba 中權限為 664)
; F; |$ S9 k/ g* C7 n4 _  t7 ?4 A/ Z
directory mode = 775                   //建立資料夾的權限 (該資料夾在 Samba 中權限為 775)0 ?4 O6 ]* t3 g  ~& G
. b/ U: Y- H* E- f, ~0 v7 f( a
( f1 _, P( Y. I# b7 j! S" G. e! x5 ~
步驟3.建立 samba 帳號
' {4 A- i+ M9 C1 I3 S! L1 a% i  s# {) M. V7 z  |( `( O. K6 x# p
設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。' c' }; I6 c/ e
#smbpasswd -a user1  //建立 samba 使用者帳號 user1
  v# R% P  M. b- O& A. v
$ L$ v. M8 h5 ?. c# W$ v) A New SMB password:        //輸入使用者帳號 user1 的 samba 密碼/ a& x% L/ s- M4 o: W9 N
8 Q9 ~. D8 |! q& ]0 ?9 t9 q8 o" ?
Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼& W2 X. g* \: g4 g
0 d, f( |2 l  ^# K0 N4 X
Added user user1.     //新增 samba 使用者帳號 user1 成功
* ?! `% U! a7 S1 m- `
* T! d5 q/ {2 g# i! p; }7 q. W; s新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過
& z6 \6 P  ~5 E0 A# r7 R- K, u7 {#cat /etc/samba/smbpasswd  或者" s8 n% r# F: Z0 D
#cat /var/lib/samba/private/smbpasswd
2 T! y6 ^7 T2 d" E user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U          : LCT-41CAF287 :9 L% o0 O5 Z; |4 p+ I! X# I
; K) l$ r6 o+ g" p+ J1 t
步驟4.啟動 samba 服務
# Z$ D# K& Y+ X
" c' `$ X" z, F# d3 {; e8 \! N: ^在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。. X! v* X. [( f7 F7 F4 a" ^2 W/ J
#chkconfig smb on  V7 _+ V* ~! r7 N
1 ^0 l7 h+ e, E. V
使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。- i8 r8 @% V2 q! a1 d! ?
#chkconfig --list |grep smb
2 r9 G: o" X, \; f% E1 a
4 m, w7 ^4 J; f$ Z# e, X7 W smb             0 : off   1 : off   2 : on    3 : on    4 : on    5 : on    6 : off) e+ y# b$ M2 j( w( R' t5 M2 x

! g' h" _7 e, c# O  d$ e- R完成上述設定後便可以啟動 smb 服務/ f* h6 `7 x1 O
#/etc/rc.d/init.d/smb start) f( \  |7 r1 u3 J5 P) p  J: p' N

; V; m7 A$ L, [4 {0 Y, v Starting SMB services:                        [OK]
$ G' z' j0 @; ^7 ?6 r8 L
, z8 S! `' @) `) M3 L Starting NMB services:                        [OK]  
4 S4 [/ X: J! y, X
7 i( j: y2 ?1 t3 J. h4 Y; {! }0 _檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。
  S4 a$ S: T% `& m8 E- q#netstat -tnl: h7 G0 `7 U1 T, ]

- J  D5 ?; ]+ c$ J; w Active Internet connections (only servers); x: v# V6 E# D& a, K9 [
* B8 k( R. k( s" X2 u, e8 G
Proto Recv-Q   Send-Q   Local Address    Foreign Address    State: _3 K' j0 B& ]7 V8 `+ K7 I3 ^1 X

: W; R% ~( {* M: V1 w7 v tcp        0        0     0.0.0.0:139          0.0.0.0:*    LISTEN
8 E# Y/ G( p4 b1 N3 ^7 b* @# b9 q
* q% C9 `( ?) P+ x tcp        0        0     0.0.0.0:445          0.0.0.0:*    LISTEN7 E$ l+ q3 [# F) O, ^' v

8 u1 n& M# L1 W: F  A3、Samba Client
- N5 s& P( f0 ^9 @4 C以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。2 M; D+ n1 I3 O" W

8 P( Y7 y6 U' x- _' x( k  dWindows Client8 F6 a; F, H, Z0 ^/ {: {% a- X

: K% x3 W0 u/ w. `! Z3 ?  @. P8 D上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:. a$ k) S3 u" Y' K9 x
檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。4 R% ^  f" c& N; g" w2 }; B
驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。! m7 ~* ^4 y& X) a

/ H- }3 R3 C- |若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):; ]( ~+ n6 x5 u- p
% H- @0 ^: c6 L
方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)
! _# X: p9 Y( w0 Z  h' z: T! S net use w: \\Samba_Server_IP\home* k# J! T4 D0 k6 z: }

& R, W8 [5 ^' l1 z; T方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)' }$ g$ Q2 W* p
net use w: \\Samba_Server_IP\home /user:user1 123456& e2 w/ p' m& }: n/ H
0 q' P& P, B9 f9 u
CentOS Client3 B. K* L4 Q, ^' g- r0 m
4 Y1 |$ |6 X2 t8 r
若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。' T# O. c2 h/ w6 m

3 Z& P* V6 s" \方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)
% d- Z3 ~3 O' y% Q6 T3 j0 J, d- w9 i) nmount.cifs //Samba_Server_IP/home /mnt/home -o
$ @+ d/ o1 r* V  E+ i
# m2 q( F- a+ T1 @7 c方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)
* V& a9 z& P' ^1 `1 i; `mount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=123456
6 i/ N2 A# R7 u- ?" p( t: U7 L8 F& R- v
若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。
: @9 K3 A1 q1 q# s& I3 ~umount.cifs /mnt/home
2 \: a& ~6 F/ C& z: [
umount /mnt/home
2 F- k1 t* r, C/ k/ E2 h0 `: A3 ^. @; P2 R! g$ C
4、CentOS 存取 Windows 分享資源/ [5 H2 R- P3 o1 x
Samba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:
& m# M5 o! f4 H& c: r8 B
( {) N: ]( I9 F; TWindows 電腦名稱: user1-XP3 Z* w) t" X6 }6 g) f$ q
分享資料夾名稱: Shares
; I6 ~! T1 @# x" i可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)! h; [' ]8 G9 w* ^; t' f! }5 t
可存取 Windows 分享資料夾的使用者密碼: 123456
7 I3 L- Z3 h& q, O2 {* P
: y3 t; R: p! Y  e/ KCentOS 掛載至本地端檔案系統: /mnt/shares* t! F6 i% U  i, O  Y& o6 O
CentOS 帳號密碼檔: /home/user1/secret.txt
3 D0 u1 M: @2 i+ d& k安全性權限設定: chmod 600 secret.txt7 J3 O8 X& u6 ]9 {

, J5 m, h- m3 ]1 r了解後我們修改檔案系統設定檔 /etc/fstab。
: x7 o( H% h" w. W$ Z#vi /etc/fstab
& ^, a* ?! N* B1 k+ `! x, ~, F# c9 R* f+ P5 i
LABEL=/1           /        ext3    defaults        1 1
7 l5 ~6 U: P/ S+ F4 F* d- W2 s) ]0 ?8 g
LABEL=/home1      /home     ext3    defaults        1 2; k$ ^! n" @" l/ y3 m* Z

0 ^5 N( `7 O/ _% |3 t2 j: L. a LABEL=/tmp1       /tmp      ext3    defaults        1 2
& u* O$ c; Y" ?, x/ Z; `3 L
- _2 N, \' Y+ |1 j% C( } LABEL=/usr1       /usr      ext3    defaults        1 2
0 m( m6 O3 p# b7 }1 c  }4 o/ x, b. l2 Y' n+ {6 @5 d) O$ s4 x
LABEL=/var1       /var      ext3    defaults        1 2
. w7 d) S8 [! \7 n. K/ P! [2 U- G" a8 p5 n7 e2 A
tmpfs             /dev/shm  tmpfs   defaults        0 0
* @) v; M$ w0 X- v: v* u* J( g7 v6 }. I
devpts            /dev/pts  devpts  gid=5,mode=620  0 03 V# x# j3 o4 z" ?
( O" ]% I# R3 s- J
sysfs             /sys      sysfs   defaults        0 0' s/ V4 _6 _7 J- L' w2 U9 a
" g8 ^# N: E. F
proc              /proc     proc    defaults        0 0# V0 L' f2 U+ }% b

% Q4 R8 u( \' H( b2 B. o LABEL=SWAP-sda6   swap      swap    defaults        0 0
7 r$ y3 r8 K/ Y( E+ U5 F% P. P/ K3 u( Y! T+ ?6 H; d: ?" H: F. A
//user1-XP/Shares  /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行
# k9 X2 T  J3 e9 t2 {, Q4 G( c  v$ B1 N& B+ f$ K
建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:
8 Q# q' n6 Y4 u, w9 U#vi /home/user1/secret.txt8 U1 e4 X- {! [

& j" G  o0 ^0 C9 y- D8 t+ [ username=user1' J, x/ j9 _4 X7 l/ `
6 M+ t( D8 X; ]$ J6 Q' }
password=123456
3 s7 d9 k) x, e0 N9 q$ `' h# O
5 N2 X* U) L6 r1 y/ }2 R+ E設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。% \0 k: M7 N9 P; j* ?. r0 {
#mount -a     //讀取 /etc/fstab 更新2 P: f8 o; X/ [* w$ b
5 G$ R' T9 m0 q
#df -h        //檢查是否成功存取 Windows 資源* ?' S4 U' z* v. D% y6 A( x

, g  ?( Q! G# _6 {4 X: Y! f Filesystem            Size  Used Avail Use% Mounted on; o0 W/ R$ G) M' R/ F" z: S5 Z3 a
; Y( m$ X! c1 Z1 Q' i
/dev/sda1             9.7G  2.3G  6.9G  25% /# H7 m  z; i- ?/ m  m' f4 S
) a3 R) j6 L# a8 \& S/ u+ g
/dev/sda7             414G  211G  183G  54% /home2 p$ Y5 J% X. d& p" p/ W4 W* \( l

# W; \  x( @) S- g- [" U& w /dev/sda5             4.9G  139M  4.5G   3% /tmp
4 p- h3 P) [" O6 X& l; K
4 l5 u# V2 m" f+ H /dev/sda3             9.7G  2.3G  6.9G  26% /usr
; Y: B+ Q* B) T7 d: E) s  ^4 s1 q) E% j8 G. T1 {9 q% y
/dev/sda2             9.7G  255M  9.0G   3% /var
1 w: ]9 M) M# Y3 |3 ~2 s) B; J5 T% E1 x1 i: }4 p
tmpfs                 2.0G     0  2.0G   0% /dev/shm6 k& \/ ]6 b) p9 S" l5 L4 E# i/ I
7 B3 S" Q4 m3 u- G  W
//user1-XP/Shares  251G  236G   15G  95% /mnt/shares  //存取 Windows 資源成功
# f' n9 L9 X8 B2 G& u

. E- x7 }+ L  Z0 F; b( F- V" e[Troubleshooting]
% [. o) ]9 X  O0 E9 D) O從client連到server端時出現error:  
( Z7 y- @. I/ D1 u" y" Msamba mount error(110): Connection timed out
) |$ N# }% V" B: Q# C2 g一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 4452 B3 J1 S  [$ q- ?- s7 U
" z) s2 y# E& j8 c3 w5 F; ^# {. B
至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:! _% U) W. \! _, W7 Z
2 i6 L$ A6 A1 T2 m: h9 J6 U/ m- X
用 yum 查一下有什麼 sshfs 相關的套件:
. P5 R' N. I8 j% `8 J# yum search sshfs
) I  D# G5 [7 y=====================================================================) O; O- C8 X$ B& a, _% T: p
fuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH' s: `' {) m2 y/ r5 ^: y* n
安裝sshfs:% B4 Q4 e7 ]4 ?+ A5 p3 I
#yum install fuse-sshfs
% @5 |3 S& ^$ |3 r0 P6 U建立掛載目錄:4 e' B3 K  B& k3 r* ~( ~& B
#mkdir /mnt/temp
; }5 e! [4 a9 q' N- v9 t$ Y: I用sshfs 掛載遠端的目錄:
* N% t3 k3 g7 L  C  C#sshfs -p 22 root@192.168.1.2:/root/  /mnt/temp     //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄
( z1 N6 A/ {8 F/ x8 E: \root@192.168.1.2's password:    //接著要你輸入遠端ssh root密碼
) Z) w7 u- }# G, {$ {$ ]. ^正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的2 V# h: P( S/ J
如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便
; z6 A7 R# q+ }# G5 l8 t% x3 B3 l& W
帶上密碼而不用手動輸入密碼
2 C$ y1 q9 l" |6 A: T( s#
sshfs -o ssh_command='sshpass -p my_password ssh' -o cache=yes,allow_other -p 10022 root@192.168.52.4:/root/ /mnt/temp
. B/ g6 N5 w- a. E1 ~6 h  h註: 如果掛載有問題,可以開啟 debug mode 觀察過程:" \2 \+ C2 |+ h
sshfs -p 10022 -o sshfs_debug -o debug root@192.168.1.2:/  /mnt/temp2 O6 S4 z! m8 \% h
- [! s1 g9 P$ `- ?- V6 b
以一般帳號(非root)掛載時,出現error :) V6 J% C0 }( G( n) X
fuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限
6 b( V7 [8 A# D9 _. I' r' ~9 Ols -l /bin/fusermount( q' q" j; G9 P4 c1 d  `0 k
-rwsr-x--- 1 root fuse 32368 May 11  2016 /bin/fusermount+ X7 `& i7 x% o- R
故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse8 Z# X5 x% u" J, R

. K3 Z- M* o( i9 Q! D4 {! U# Y! P$ {4 r可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統     SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)7 \7 ?% V! `4 w' u* w$ P9 E
5 q+ R3 H8 `+ \# J' |) m& ^/ G
2 T7 }. J4 d: m& t( z# @* }
回復

使用道具 舉報

發表於 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-2-5 10:14 , Processed in 0.078079 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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