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

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

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

[複製鏈接]
發表於 2017-9-3 21:06:35 | 顯示全部樓層 |閱讀模式
tid=66566&1、安裝及設定
  w7 Y# y8 Z' l: T分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。
3 I: P) ]3 ]) @7 ~" ?
: `, M; Y) |+ ?3 c2、Samba Server# w0 I4 Y  E2 t7 W5 r4 b) V
步驟1.安裝 samba 套件* l/ a" b/ m1 X$ f; S
) ]# D, p( o) n# [: i
利用 yum 指令來安裝 samba 套件。! T+ A/ r* ^% D: H4 Q* Y
#yum -y install samba    //安裝 samba 套件0 m* T8 j) u0 }$ C3 q' Q' n# ]) \

2 i; a7 V2 i+ |5 D5 {& |***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件:
; n+ r  G: B4 k. F#yum install samba-client samba-common cifs-utils* i9 V/ k. R- s  _' r/ |9 X
. A  v1 {& c" L3 U& K
步驟2.修改 samba 設定檔 (smb.conf)+ M/ ^  S  L! J  x7 J- C- d
4 T$ s& n! r4 Y
修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。. ^1 ^9 s5 u2 I! B2 c# A
#vi /etc/samba/smb.conf  //修改 samba 設定檔
9 U$ n, u, [- \0 l% B* R% T: `& Z" K7 O' Z' ]
global                                 //通用設定$ L  l8 \/ s7 }  W' C' m
1 W$ F* X# c# C+ x3 ^/ |
netbios name = Linux-smb            //顯示於 Windows 網路芳鄰的電腦名稱; [$ @1 v# a5 W0 b- \" K& ~
7 `( z, Z- c( [9 U
workgroup = WORKGROUP                  //顯示於 Windows 網路芳鄰的工作群組名稱
4 o% u2 m) Z( ~6 D# x8 i+ o4 ?* U6 E) E3 h: Y, Y* E  c' j
hosts allow = 127. 192.168.1.18        //允許此來源 IP 位址可存取 Samba 資源' Y: O3 I% _+ ]* Y
. b2 X' I2 X0 Z2 ^6 i, l
hosts deny = ALL                       //除了上面允許的IP之外禁止其它IP存取Samba資源! ^/ T' N  o% y: u8 L: x# d* [5 P
- {% h  f* G1 H! I5 Y
security = user                        //安全等級user需在Samba主機上擁有帳號者才可登入' Z; L2 U% o6 W# \; M7 d% g2 N
0 h( g1 }, T' r. Q' N8 s/ J
encrypt passwords = yes                //是否對密碼部份進行加密4 K& R/ J2 {5 ~1 i+ D

- E  j: `* |- ~3 R; D" B; C! `( i display charset = utf8                 //Samba 上所顯示的編碼
( y, z/ a7 u2 f, D: d8 o& `3 J( v  r: w: v  |7 e+ `
unix charset = utf8                    //Linux 上所顯示的編碼0 `. x6 Y. |# h
( M! V3 X1 O6 ]" T# C) r- P
dos charset = cp950                    //Windows 用戶端的編碼 (可正確顯示中文)
" f5 |: h( o" ~3 y! w0 S+ T9 ]& \" E3 u- \% v
home                                   //分享設定,屆時顯示分享資料夾的名稱
3 d5 t3 H0 h/ I5 k  i& ?# c; z
/ }$ M3 q5 o# U: n! ]4 q comment = Weithenn Samba Files Shares  //分享資料夾的註解
6 D% n2 _) ~8 z2 A+ ~
( n' w# g2 w$ | path = /home                           //分享路徑
& I$ x! l# j# @6 X6 T# `' M8 r# Q3 f
valid users = user1,@smbuser        //允許user1使用者及smbuse群組可存取資源
0 Q$ i. r3 \  E( G0 ^$ J
: F  q' z2 K+ ~# [2 Y public = yes                           //允許使用者登入後可看到此分享資料夾
: r; h% e4 U& O; n$ K9 r1 i9 o$ [# }9 p9 T
writable = yes                         //允許寫入, I$ s' `3 h- z' W$ j
! W  D# |+ M3 |3 z& c
create mode = 664                      //建立檔案的權限 (該檔案在 Samba 中權限為 664)
$ G# G; X5 i- g& f1 S( X
6 l& x# U' \/ Q& ?5 z3 e' G% p directory mode = 775                   //建立資料夾的權限 (該資料夾在 Samba 中權限為 775)
: F! i" \4 ]2 b  p" Q$ H
4 \8 h. l: S+ Z; U$ R% a
9 R  g6 O5 e! s& {步驟3.建立 samba 帳號
( B$ v' u8 N2 x( t% N& d, @) S% D+ Z' D9 d1 X6 t
設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。
( s0 T9 w; L! `$ ]5 V#smbpasswd -a user1  //建立 samba 使用者帳號 user19 q0 @9 ?) W& D6 l
1 Q+ P) j- m7 C' Y0 H) \- D
New SMB password:        //輸入使用者帳號 user1 的 samba 密碼" f2 U- k* i" E% W- a  t

' ?) ?0 Z" g7 A3 D+ D4 ~ Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼9 j! h- a2 f: d  e2 F

$ i# |& m' r& T/ E Added user user1.     //新增 samba 使用者帳號 user1 成功
0 H. d0 g1 b3 d& I* Y' S5 E2 @5 e/ q5 n
新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過
* {+ V* K- n" |% M% T( r#cat /etc/samba/smbpasswd  或者. Y# Y. c; Z* W% r
#cat /var/lib/samba/private/smbpasswd
, w2 n, ^$ S& O' } user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U          : LCT-41CAF287 :% d4 ?. i7 l& q* b
& f6 g5 {2 {9 h
步驟4.啟動 samba 服務! }: E( R) d# Q. N, L2 m: z. u

# G  W2 w2 n6 w# }1 M在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。/ _+ o$ U5 S, C
#chkconfig smb on) g" Y1 b) u. p4 q# i5 o1 V

; j8 q# P( a7 |# G. @9 s使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。7 d" n' Z, i! U
#chkconfig --list |grep smb- J0 I8 n* A& F# {* s8 s% d
* {6 Y1 w- k) w& i6 J4 y: \  o
smb             0 : off   1 : off   2 : on    3 : on    4 : on    5 : on    6 : off9 _5 G9 h4 K( t" X" N. _

5 H5 S$ H* \% z, h完成上述設定後便可以啟動 smb 服務
* ]: q+ v- D, u' n#/etc/rc.d/init.d/smb start
& A/ P0 A" m* E- [( F* t/ |- C' ?- r$ {( v% k/ C8 d
Starting SMB services:                        [OK] 6 m7 Q# C' Z$ [8 a" `/ Q. t

2 u: }# V3 Q; h Starting NMB services:                        [OK]  
! X. {  o. p  {' A+ F$ y* p4 t5 [% _1 B5 }
檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。3 g* G9 k0 ]5 N) U. X
#netstat -tnl( s  V  N* @8 l! d  a' ]$ ?, }
) L$ Z% v: S- \5 c$ m
Active Internet connections (only servers)
8 |* G3 w0 S: a/ J* y( f' G! n; M; n( X$ d
Proto Recv-Q   Send-Q   Local Address    Foreign Address    State' n4 Q; j8 E' Y9 t* t5 n8 `

5 D- B4 m2 ]$ O0 I, }$ r3 B' p tcp        0        0     0.0.0.0:139          0.0.0.0:*    LISTEN7 e3 P# l! S( f+ L" n6 ]" Y3 m; i

; k+ f4 L9 Q" S2 w" A tcp        0        0     0.0.0.0:445          0.0.0.0:*    LISTEN$ Y( s' o/ [  x# ^
$ Z3 J+ {( {  W( M9 S$ p
3、Samba Client+ X4 c; n8 s2 c& M
以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。% i% q6 D! u% z
4 m2 y$ H2 U9 z. O7 \* i6 Q  e) a
Windows Client& G( Z0 k# Y5 N5 p7 c# r$ I* [

3 H. W: d: v* r/ G( B: w3 R上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:6 c' ^: E" E& s. L+ o0 f
檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。& f0 N/ H  c! C
驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。
9 Q; p  S5 c6 I& Y; y7 i7 k" }! ]8 Q6 U# X) o4 M, m( L
若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):4 c, W* D2 N* w! \, O* m! }& Q) }
, L4 C' u, |2 \: [& [
方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)/ U/ D1 A& Z4 m. f; o& S7 _
net use w: \\Samba_Server_IP\home
0 a. I0 P! i  d1 K) I
* m( P$ j; s% C$ r4 K! L' x5 q方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)
; E) y/ y: \' i2 T( [1 F" J' ]8 h net use w: \\Samba_Server_IP\home /user:user1 123456
+ J" f, h; p3 ~# R  z' ~* U8 {. Y( {& i% q2 K
CentOS Client8 [, `5 `* v- R* p. {- V

/ n' ]( R3 c! m# M若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。
0 G0 _" s- W9 Q, n
* r& j5 c% z7 ?; Y+ Y: f5 u3 C% l方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)5 U) }5 ]6 L- K" X+ g& m% f# U
mount.cifs //Samba_Server_IP/home /mnt/home -o
5 p' e6 m7 g, ^7 i# W! ~3 h; T' r- n0 W; s
方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)- X. q2 ~1 o/ {9 D: o" m' C
mount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=123456
" {* u. R4 r4 n3 X% N4 |1 {) P4 q3 @( P4 D$ ^& ^; k. v" I
若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。& j" X8 y0 Z: Z/ c
umount.cifs /mnt/home
! v4 s& F$ v; u( ]/ @) y
umount /mnt/home; O) w' W( c/ f5 U
$ l+ j% Q: _3 ^# y( X( v& d- P
4、CentOS 存取 Windows 分享資源
0 P! m8 f& C. QSamba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:% O" a" B: v/ i! ~! i
( c% t/ K7 X7 g: S6 F$ |6 m/ }% j
Windows 電腦名稱: user1-XP  V. h: J% b8 @: }9 \
分享資料夾名稱: Shares
/ W8 U8 I# ^0 m, N( @, g- y可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)
5 V: f; e" k$ B' A可存取 Windows 分享資料夾的使用者密碼: 123456
2 @$ K$ v9 q8 E7 B. Y9 p/ E( @" a0 [& A* c; t$ E
CentOS 掛載至本地端檔案系統: /mnt/shares
1 ]2 z# J  M$ H% Q5 ^0 G9 j. ^CentOS 帳號密碼檔: /home/user1/secret.txt3 l( G( u( [- B- w
安全性權限設定: chmod 600 secret.txt
2 y6 _  s3 P& X) i  V. s" ]$ C9 l0 x3 g. R- u
了解後我們修改檔案系統設定檔 /etc/fstab。
  d8 O9 H: m6 O#vi /etc/fstab; P8 S* I( M' }# f$ I
7 r/ ]) O/ _, S1 i0 I
LABEL=/1           /        ext3    defaults        1 1$ M) m- \/ _1 n/ \

+ P( i+ f, G- z8 t, m9 {* n LABEL=/home1      /home     ext3    defaults        1 23 g) h5 ?  t1 _9 C% X3 O
! f* c! Y: e1 b( ?* p) X# {
LABEL=/tmp1       /tmp      ext3    defaults        1 2- y% v% i4 i9 ?# q# |
. \7 F3 A1 I' d
LABEL=/usr1       /usr      ext3    defaults        1 2
: ^0 j6 ^8 g# S0 J7 L
" L/ I- ?% r8 r. _7 B$ L6 q$ c' R LABEL=/var1       /var      ext3    defaults        1 2
+ E( L4 }9 r- M' k4 P" U& h: m2 ?; X
+ a0 F6 _, d* \1 c) W tmpfs             /dev/shm  tmpfs   defaults        0 0
' e. @/ j& x6 E3 ]( d. X
0 ?3 @. g( D, G$ r7 u devpts            /dev/pts  devpts  gid=5,mode=620  0 0
2 F) a# O" w( d; x" w7 E( I$ E% j0 d, E+ y' }- N; A
sysfs             /sys      sysfs   defaults        0 0
5 V( B. O: N7 S) f1 R" P: T5 m7 S/ |
+ T7 H1 l: Z, L2 A" `; P# I1 ]3 [ proc              /proc     proc    defaults        0 02 p$ s0 ~. l- R  z

# B! }! w& t( w0 [ LABEL=SWAP-sda6   swap      swap    defaults        0 0
  R5 g5 O% L( x# f- Y
9 q1 x, {: U/ ^7 a' ^& I //user1-XP/Shares  /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行% f% D5 ]& c- F4 A

+ E  I& w  t: K建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:& A1 o8 ^0 h) v; i( b
#vi /home/user1/secret.txt
0 G& H0 Z/ B2 R* Z& ^1 S' Z( o. y2 I9 Y9 e
username=user1
; G) n1 O) c) ?3 q; ?$ B) V& Y# q! z- W- a6 t/ a
password=123456
  \8 g! X$ {1 }. r+ `! Y2 X+ }- H! o" M3 N
設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。
$ @4 m/ S; d3 {. D#mount -a     //讀取 /etc/fstab 更新/ j, c& C$ b0 e( j0 d0 i

; g6 T# K/ h, X* `& o9 V3 M#df -h        //檢查是否成功存取 Windows 資源$ G% e6 \5 s6 ~4 a4 z5 c# r  t

- x8 a; x: v2 p$ ^; K) g' ] Filesystem            Size  Used Avail Use% Mounted on
3 \; f% H' q; n# s7 d2 `# n$ J, K: D: L$ V* h8 Q; h
/dev/sda1             9.7G  2.3G  6.9G  25% /. [% W# F" q5 g1 D8 I

: c- j' j! r$ @; \ /dev/sda7             414G  211G  183G  54% /home( G: U# l  e! t0 t
: _/ Q( z/ z6 `3 y0 Q
/dev/sda5             4.9G  139M  4.5G   3% /tmp# p7 W  e- H6 _; f$ r0 z% z4 B1 p
0 c+ N$ c) R' f6 A9 B
/dev/sda3             9.7G  2.3G  6.9G  26% /usr
- M% X- C+ @( D7 k" J: W4 [
( h" C( l- l+ ?3 e /dev/sda2             9.7G  255M  9.0G   3% /var3 s; y5 R6 [! Z
1 {: M! x8 L8 p6 l
tmpfs                 2.0G     0  2.0G   0% /dev/shm
9 {! Q9 i) {0 I4 w" V" l( J+ T  F* P* d- ~" q& o
//user1-XP/Shares  251G  236G   15G  95% /mnt/shares  //存取 Windows 資源成功

# A, \+ y7 l# m; T+ M% u- J9 h

) p  J3 n4 H4 b4 q" G. ][Troubleshooting]% h. F  s8 H' W
從client連到server端時出現error:  $ M6 U) d9 I! `" J
samba mount error(110): Connection timed out
. P% R  L5 D2 s+ j一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 445- }9 r2 M4 r, g9 B2 T
4 I( O: }6 C/ }+ l, w
至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:
, U7 [3 M$ o1 X( F/ \; Y7 j2 C

+ e+ X, J: ?  d3 ^* `+ O% c
用 yum 查一下有什麼 sshfs 相關的套件:
* l! K/ E8 ]3 U# P: x! _) \# j# yum search sshfs
2 U8 n. Y9 b. e. h$ v; o# |; S=====================================================================+ I( o7 A" [$ y- m
fuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH+ n5 t: }; K( N- ]# s+ j' L5 _1 w
安裝sshfs:
' h- h, u, W$ s  M2 ]1 ~#yum install fuse-sshfs
9 \1 m9 P9 |5 Q0 q7 {建立掛載目錄:
% }" V+ o: d; p6 k8 d6 o' B#mkdir /mnt/temp
, I* [; M& ~2 N) }" F8 S用sshfs 掛載遠端的目錄:% ~4 }$ U2 J7 P3 C% {) k4 @7 i
#sshfs -p 22 root@192.168.1.2:/root/  /mnt/temp     //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄6 t0 ~1 h6 k1 |' b) g# b3 d
root@192.168.1.2's password:    //接著要你輸入遠端ssh root密碼# d+ u4 u8 U* z3 s) M' v+ r& v8 a( B
正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的
7 ], _3 t& {4 b& k# |* [4 I5 ]$ r+ v如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便- Q! i4 Q& h  H- i. ~: c8 }

( q9 Q' L$ S, O$ {/ Y帶上密碼而不用手動輸入密碼
$ ]+ d3 y1 u8 o# k- C  Q#
sshfs -o ssh_command='sshpass -p my_password ssh' -o cache=yes,allow_other -p 10022 root@192.168.52.4:/root/ /mnt/temp. {/ G+ E7 @8 S( _: ?$ r
註: 如果掛載有問題,可以開啟 debug mode 觀察過程:
6 y% s/ h1 C$ Z/ Wsshfs -p 10022 -o sshfs_debug -o debug root@192.168.1.2:/  /mnt/temp
8 X- I2 D$ m1 j6 J% ^% x  O" J  T9 ]

4 ~$ N) q. P. K% ]以一般帳號(非root)掛載時,出現error :# ~& K. I) ]" j
fuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限
  d+ E# G+ N7 S- w# j% h/ Fls -l /bin/fusermount3 ~6 T7 D1 z) C4 d: f' J4 B
-rwsr-x--- 1 root fuse 32368 May 11  2016 /bin/fusermount- r3 t! N$ Z; d
故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse% Y/ T! f1 R" `5 t# v7 i- T

  s9 Q6 P# @, u* {( N3 u8 n6 n可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統     SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)1 [+ m; U) U' @* ~! T

! o/ x% p9 @/ k8 p7 r& h0 t# u! l8 u; w/ B5 |1 d$ B, L0 P
回復

使用道具 舉報

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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