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

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

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

[複製鏈接]
發表於 2017-9-3 21:06:35 | 顯示全部樓層 |閱讀模式
tid=66566&1、安裝及設定6 O3 c3 R9 \* N0 z2 |
分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。+ V. H, r+ T" [5 h4 h

+ y1 V1 m0 n. @! y7 v2、Samba Server
' m7 ~$ b2 [" W; E步驟1.安裝 samba 套件
% `7 `# y/ K1 |8 Y9 U3 e3 A( @. A
利用 yum 指令來安裝 samba 套件。6 m4 u5 o8 e0 R4 G
#yum -y install samba    //安裝 samba 套件
; j$ Y& e6 N2 ?( \8 o2 \/ D: k+ p6 t+ b+ R
***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件: 3 H7 U9 J" o" ?6 [& V3 c
#yum install samba-client samba-common cifs-utils' u$ \0 ?0 |- z' T. F& v

' X, \6 m  `) Q7 U0 ]步驟2.修改 samba 設定檔 (smb.conf)
# |+ P1 b: \# M0 V0 @& m  G! Y8 u# N7 k2 L' D
修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。
1 E$ I- i" N% N: |; E#vi /etc/samba/smb.conf  //修改 samba 設定檔. @9 P" p7 P2 i3 a
$ K+ `6 \# |; x8 S) w+ a
global                                 //通用設定" i  `  V! v9 Y' d/ R
3 j& k1 |# k3 l. z* [3 X$ ^5 w
netbios name = Linux-smb            //顯示於 Windows 網路芳鄰的電腦名稱; M9 i- V' Y5 {
( E2 S! C1 ]- Q* z
workgroup = WORKGROUP                  //顯示於 Windows 網路芳鄰的工作群組名稱
) C# t9 E: u" x2 m8 M* \' g4 v# M: I/ |7 ]/ I2 k
hosts allow = 127. 192.168.1.18        //允許此來源 IP 位址可存取 Samba 資源4 z& \/ X* X- u4 y7 X
4 V8 Q6 s4 q' S* a. J* s
hosts deny = ALL                       //除了上面允許的IP之外禁止其它IP存取Samba資源8 f8 p" v) S+ {6 l

5 H- f" i' Y" S security = user                        //安全等級user需在Samba主機上擁有帳號者才可登入3 s; H) J1 h: z+ h! R& G" f
; d- ~% R/ ?! N
encrypt passwords = yes                //是否對密碼部份進行加密
' n! w# U& m5 y8 J0 v
9 @! s3 j$ P$ A' h7 \: I$ ] display charset = utf8                 //Samba 上所顯示的編碼
- }0 k+ o" a. S/ z- s+ W  V1 i
9 {) ~, g5 p7 V unix charset = utf8                    //Linux 上所顯示的編碼
0 k- b( w( i  f) g$ h0 v
4 f! L6 `& p/ t' w1 P0 {( p7 ] dos charset = cp950                    //Windows 用戶端的編碼 (可正確顯示中文)( `3 C/ R% Q( T6 r

* k" W( S, ]8 ^' p/ I0 c. p  T5 t home                                   //分享設定,屆時顯示分享資料夾的名稱* B7 B4 _: g# F, L+ Y5 n
6 I" E. B: G* u
comment = Weithenn Samba Files Shares  //分享資料夾的註解
8 Q" w; x/ z8 @) S: t7 l' m8 o' p8 e8 q6 m0 L" T. i' a/ o
path = /home                           //分享路徑' d1 O& V, A, i1 P7 l* v
1 h) c/ j0 {7 H8 e, {1 a4 s
valid users = user1,@smbuser        //允許user1使用者及smbuse群組可存取資源
* j# ]7 J: u* M5 R! D' b3 d+ l% N. Q
public = yes                           //允許使用者登入後可看到此分享資料夾/ ~; f5 k9 k2 {8 \# G7 y
5 s9 \+ J+ X6 h# ~) {8 Z/ B( B' S
writable = yes                         //允許寫入
; y6 O! d' l: n9 q! S5 q
7 d/ }; F. A" x  v9 z/ M1 Z create mode = 664                      //建立檔案的權限 (該檔案在 Samba 中權限為 664)
9 P% M: K* m% z6 w! t, j7 Q
9 ~) J2 T* w# M$ A0 \, S directory mode = 775                   //建立資料夾的權限 (該資料夾在 Samba 中權限為 775)4 c4 t. Y1 n6 Y5 `3 Y2 d
  [, B: m4 A. ], \, d: U

; ?7 x2 i- v0 @# c% o步驟3.建立 samba 帳號! X8 H1 V/ {% F" x, [' b
4 C: q& [& q1 h7 N( \/ x# Z2 ]0 l
設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。; P) O  }9 g0 P" c
#smbpasswd -a user1  //建立 samba 使用者帳號 user1) W; e; O5 Y( V. i/ g: h2 m
& D' V+ T, U1 a; V" A
New SMB password:        //輸入使用者帳號 user1 的 samba 密碼. B% |2 Z0 |: ?
8 U9 W1 p/ |6 m% a. I" c$ S; s
Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼
7 f4 D5 H  d* L, ]$ }  V/ _
) L5 j; I2 p* S& } Added user user1.     //新增 samba 使用者帳號 user1 成功, g5 p, E8 T) H3 u' y, ~
" ]# n2 T+ R) e7 K4 Y) P; {
新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過" V" \3 K9 M9 O5 ]# v0 V% ?
#cat /etc/samba/smbpasswd  或者* ^4 H* D& g" \8 [
#cat /var/lib/samba/private/smbpasswd
3 [. V- v4 A5 `. Q" [2 V user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U          : LCT-41CAF287 :6 f- a- a( T* e
- c5 b3 \1 y5 D; W; Y
步驟4.啟動 samba 服務" u( O( R7 z$ F3 M. u% F5 ?

4 ^1 z+ I! j, A9 A: O2 V在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。8 j) ]0 |" F) R$ A) L  z& M! z
#chkconfig smb on1 r3 m" U! _9 A+ U, U2 l% g% I
0 D1 g4 n' s. i6 v3 _  Y* `
使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。
) B% i; ^8 n; O% g, j! Y* \* b#chkconfig --list |grep smb
4 x/ y+ O6 L& H( m) O/ n# L% ]  z- i8 S: o# B9 M
smb             0 : off   1 : off   2 : on    3 : on    4 : on    5 : on    6 : off
8 [0 ]1 m7 s5 c- j6 P% P; h/ [2 D9 D, P. A
完成上述設定後便可以啟動 smb 服務3 k3 U# n3 N9 g4 k5 H0 P
#/etc/rc.d/init.d/smb start
' T0 m1 G" H! {. Q, f. Y6 ?5 L% C4 h9 X. x) ?" Q
Starting SMB services:                        [OK]
% {6 \1 p6 b) j+ ?4 J  s. a% C/ _) p. I4 o- i
Starting NMB services:                        [OK]  
7 H, D" Z2 I! ^: g* O, |! S9 _. S. I3 @/ Y: ~+ e7 {3 ]) e6 a1 ]- K
檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。
9 l5 N# K: J8 B7 V#netstat -tnl
$ O0 a! T1 v- H; ^% J( f# U' t. Y. A- n0 W4 w0 n6 Y2 W2 l0 F
Active Internet connections (only servers), `0 q% K8 E& M4 p) h3 U6 C

) o- b6 \# l, o# Y$ O Proto Recv-Q   Send-Q   Local Address    Foreign Address    State
. x4 |. p$ t1 Q7 ]
5 J' E- B4 g' X' t4 J: g( Q tcp        0        0     0.0.0.0:139          0.0.0.0:*    LISTEN
) ^$ }5 F  k) F( _  U2 U; z6 u6 h/ x" G+ `9 A# P6 M
tcp        0        0     0.0.0.0:445          0.0.0.0:*    LISTEN
( l) X% h' {3 W/ T7 H* s+ Q; _) b, b
3、Samba Client1 ]/ [2 Q! x: ~5 L, |6 @' w* O0 N8 }
以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。2 i& [9 |( A4 O& A
% U" u* t" s% p: E0 T: P
Windows Client+ z7 G, [/ M/ H# D/ F: P3 I$ S
% ]  l9 E6 |7 S/ D
上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:! C  o* q* E) N( s- H  G' N" Y
檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。
9 U8 q5 U% o, s5 v" Z6 i" h; l/ q驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。  O2 ~4 D! s, `% r( `# P- O
# c( ^& W- v% X
若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):( A# z% s- R+ C; E: ~: H" m0 H
0 q6 R* T" q( g' k( \; k
方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)3 N+ |/ I, U3 R) e+ D
net use w: \\Samba_Server_IP\home, W$ q# c3 \% ?" q
+ [* j6 B' v; N0 b
方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)
3 V' L4 S. N/ T, R/ a net use w: \\Samba_Server_IP\home /user:user1 1234561 j/ s1 J$ z2 Z1 A$ Y' l5 A

& T7 G! S$ u. ^9 ~' Y+ @, ]: W2 b  {CentOS Client
2 c3 m/ y, E3 D# o0 Z4 b: W' S# S
7 z+ O( ]; C+ ^若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。
4 I2 q2 b2 }6 Z
9 g. Z  r$ t; v8 V, |. P2 u方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)
8 H# o5 b8 y6 z9 r) I# n1 A) @9 F. pmount.cifs //Samba_Server_IP/home /mnt/home -o
( {! a6 X: D- c
7 z( R2 S1 c1 G) Q# n方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)
! t0 f! s  T! H9 Pmount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=1234564 u- e3 l6 ?# R! |% G6 f

( O3 q3 s0 c/ [4 ~若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。& J: z3 r2 d3 V. {
umount.cifs /mnt/home
( D6 _  a* `9 P3 p% R5 [
umount /mnt/home
7 a! J; O) e4 W) N% y% Z( c, Y* O+ m: C
4、CentOS 存取 Windows 分享資源* K2 l0 E3 v0 X9 ~' K
Samba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:
/ f/ p% C  Z: ]3 v; s. L4 x' J" p' f; r/ C& b+ j- S* R
Windows 電腦名稱: user1-XP6 u+ h9 v4 H" M3 \2 ?
分享資料夾名稱: Shares
8 C" Z5 \5 x8 d' T: n+ h2 V可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)7 q9 D3 C  M; x. t+ _7 Z
可存取 Windows 分享資料夾的使用者密碼: 123456
5 s2 C7 u4 V) E, _. I; O, d
8 B/ Y$ Z6 o. W) n3 QCentOS 掛載至本地端檔案系統: /mnt/shares
3 F3 b3 b3 e; j" ~" ECentOS 帳號密碼檔: /home/user1/secret.txt
7 o* `$ D" S+ F( D* y安全性權限設定: chmod 600 secret.txt
3 Z' _! J4 H9 q* x1 p: k) b" \1 M2 n' d3 x
了解後我們修改檔案系統設定檔 /etc/fstab。
! l1 \$ _3 J! Y#vi /etc/fstab- F/ F. V3 w; ^# I: L5 h. f
. T' h0 C0 \* y# o. P
LABEL=/1           /        ext3    defaults        1 1  [% e- [# @  ?' K: M9 u

4 t& t& d7 S0 c1 f, z LABEL=/home1      /home     ext3    defaults        1 2
: p% Z5 k. N6 v0 F- W2 q  t  d0 [8 N7 {1 ~: V# w/ u2 h* ^8 L0 ~
LABEL=/tmp1       /tmp      ext3    defaults        1 29 T- L0 A  B; P- \4 v# J0 K/ ~) S

7 q- A) Y/ F' c LABEL=/usr1       /usr      ext3    defaults        1 2
, f6 s' x) U( U4 ^0 ?7 C
! C- L6 r4 @% o& d LABEL=/var1       /var      ext3    defaults        1 2
# r- e! D/ K& g' t, f' n! J& m  b
tmpfs             /dev/shm  tmpfs   defaults        0 0
6 r  L3 t) @) y1 @, v9 t& U* U+ L$ S
devpts            /dev/pts  devpts  gid=5,mode=620  0 0
4 f7 i" r+ y) N5 b6 ?4 {* m7 f" s* H- x; s
sysfs             /sys      sysfs   defaults        0 0
9 [4 s7 r1 r+ e2 h' _( l+ f% ~2 Z' E/ s4 `5 B/ K$ }
proc              /proc     proc    defaults        0 0
5 |3 B2 `) ~9 H  n3 W7 U" @5 z7 X% a2 Y8 B7 u" x
LABEL=SWAP-sda6   swap      swap    defaults        0 0; O, C: A6 A2 s# t9 P4 K, Z4 q

7 k5 t4 ^- H9 I2 D! @7 z //user1-XP/Shares  /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行- V" R: ?1 H+ s) F

9 n% D, x. @' g; M# U% N4 z建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:
1 H5 v, s) l, L: F8 o( n#vi /home/user1/secret.txt, l( B# I* c. r* @4 S8 U

, Q* l( O3 r5 x0 f username=user17 R% g2 J3 x5 _" Z7 N
4 Y; P; W( h8 R
password=123456
. ~8 T7 U. f: C) b  b( e- R0 P) h: P9 O! M' u
8 k7 M) l' h# ?1 a+ I設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。5 E7 C; z9 b, A; a
#mount -a     //讀取 /etc/fstab 更新
1 q/ A1 S3 V& @1 {
2 |6 @+ ]7 {: U$ h6 E) b#df -h        //檢查是否成功存取 Windows 資源& p5 l0 P+ G; Z/ A$ ?$ e

7 R0 r5 X1 v! z3 H" \* a# H! c* j Filesystem            Size  Used Avail Use% Mounted on- [9 ]1 o  x  h# h% M

5 @: F/ k3 f2 ] /dev/sda1             9.7G  2.3G  6.9G  25% /. E0 j# @7 P' h( f3 R0 q" Y: C* U

- m, [: n- S3 T( A& M1 x% ? /dev/sda7             414G  211G  183G  54% /home- P2 I  b  d4 A, ]

- z; i  l2 |7 o) v! R0 H# ^: p- _/ a9 | /dev/sda5             4.9G  139M  4.5G   3% /tmp
& S" `: E7 t9 r2 S' [
# l  r9 Y# x/ v$ k6 F* N$ N /dev/sda3             9.7G  2.3G  6.9G  26% /usr
' d" h1 q$ K) V
0 z' L) J, R+ F1 _; U /dev/sda2             9.7G  255M  9.0G   3% /var
5 [8 Y! s& v" n9 \
; q! P& k  D2 B# o tmpfs                 2.0G     0  2.0G   0% /dev/shm
4 _8 C6 s. K* |9 z/ Y8 K, u" u0 v; ?% t
//user1-XP/Shares  251G  236G   15G  95% /mnt/shares  //存取 Windows 資源成功

; T- l/ p$ U& V, ?7 P

4 D+ a% J  y8 u( G$ I) \- P) X[Troubleshooting]
8 g5 Q! P( J% V' a7 f從client連到server端時出現error:    \3 n- q0 W) U' j/ ]9 w
samba mount error(110): Connection timed out
. R6 I& l8 S8 i5 D: l  T一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 445! m* p/ B; H5 @% ]: N

6 r  w6 E  ~: L5 z% k至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:
* M2 S) n+ v0 D, S5 o3 g$ k

/ i/ p( C  j- o" D7 ^
用 yum 查一下有什麼 sshfs 相關的套件:
: _- D4 M9 k0 R) G1 M# yum search sshfs. G; X  h- w: D4 a
=====================================================================  S6 x5 L, m2 G. ~0 Q
fuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH
3 i; o2 J& q. x& U7 w4 A安裝sshfs:$ W3 }  B* S& B; E& @$ \8 P
#yum install fuse-sshfs ) U" d6 ~0 l: P" k" W- ]
建立掛載目錄:
! k, f/ h/ p& Q3 F- n#mkdir /mnt/temp
6 K  [* [) c, c用sshfs 掛載遠端的目錄:
' X5 \' ^+ w/ w2 h, m$ t#sshfs -p 22 root@192.168.1.2:/root/  /mnt/temp     //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄, b  }4 X% U' Q
root@192.168.1.2's password:    //接著要你輸入遠端ssh root密碼; `$ |4 N+ K6 R( i# b0 S
正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的2 w+ W+ l8 D0 ~2 a6 J& ^( l# m/ N
如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便2 u4 t3 e* }$ x+ ^2 i

: [! N* k0 z* A3 [# b" u. @帶上密碼而不用手動輸入密碼6 `. m' K3 _; Z% E
#
sshfs -o ssh_command='sshpass -p my_password ssh' -o cache=yes,allow_other -p 10022 root@192.168.52.4:/root/ /mnt/temp! n, q( r: S) A  i5 G% e; f: S8 v
註: 如果掛載有問題,可以開啟 debug mode 觀察過程:
$ |+ O, M( R: G" O( S' v# Dsshfs -p 10022 -o sshfs_debug -o debug root@192.168.1.2:/  /mnt/temp( `3 _# m+ M9 ?  t7 S) c; ~

4 Q0 X8 R1 p& d- n: |% K以一般帳號(非root)掛載時,出現error :  [: D( u6 V4 e, `
fuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限
+ b$ E, p: o  s! Als -l /bin/fusermount% _2 V( F/ k6 [! L* w$ Y
-rwsr-x--- 1 root fuse 32368 May 11  2016 /bin/fusermount9 D. k* h" C% j# L2 ~
故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse2 N' ^- O7 j* S$ j$ u6 ?" j& T

/ _6 r- L0 }4 t0 I' V& k# Z% [可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統     SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)
8 @! l8 R$ g+ l: J1 b: T9 R7 }
  I- L, p( C4 G3 c5 P8 ~( C& |5 {' J
回復

使用道具 舉報

發表於 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-5-7 20:29 , Processed in 0.065428 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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