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

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

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

[複製鏈接]
發表於 2017-9-3 21:06:35 | 顯示全部樓層 |閱讀模式
tid=66566&1、安裝及設定
, d+ Q2 p1 R, `3 b5 A分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。8 P2 Z' c: b$ E, n5 f9 C* F: l. |
; Z6 `5 o  F" |, {; \# ?
2、Samba Server$ j9 k  e1 h5 D: G; Q
步驟1.安裝 samba 套件
8 u$ n9 I# o) M4 F  _
; l3 b1 Y" I- c( O- Q4 G利用 yum 指令來安裝 samba 套件。; |4 W1 |. D* n- _
#yum -y install samba    //安裝 samba 套件8 x8 i+ `, v; ^. H/ i, w4 h

: B) |" ~, r0 X7 l' |1 {***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件:
. e( D5 g& E) f) G#yum install samba-client samba-common cifs-utils4 I. }% l2 g5 D9 Q( w6 S
" t8 f: g: L+ \
步驟2.修改 samba 設定檔 (smb.conf)9 p4 s0 L# X# w# Z( \
) s* n; |0 g3 N( ~, b
修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。  d* ^- k7 j7 B3 W6 ]( E
#vi /etc/samba/smb.conf  //修改 samba 設定檔
. F' @: Z. m' x# N+ C) h6 O$ C" R" p
0 G: J' P+ l' q/ S global                                 //通用設定& N  U0 I5 L3 `+ Z- k
" H7 O& _" f5 G7 D! M) Z7 {0 I' D( {
netbios name = Linux-smb            //顯示於 Windows 網路芳鄰的電腦名稱
5 O( j+ T& Z! _- ?( B$ N" ~  R2 K6 B* j; a8 M  j
workgroup = WORKGROUP                  //顯示於 Windows 網路芳鄰的工作群組名稱2 n$ M1 ^0 Z3 U/ W$ I$ f& p
8 Z$ |( \4 g& O8 \0 `2 T9 M: \
hosts allow = 127. 192.168.1.18        //允許此來源 IP 位址可存取 Samba 資源' ^. I. u8 c, F
2 L- ]$ n4 U# z
hosts deny = ALL                       //除了上面允許的IP之外禁止其它IP存取Samba資源0 B  [; |" b9 E/ O) I0 P! ]
8 |, g: N$ S% O- I
security = user                        //安全等級user需在Samba主機上擁有帳號者才可登入
# L, C% v+ ^8 Y+ y+ u( B2 M
3 n4 ~6 j$ M; G5 W" m encrypt passwords = yes                //是否對密碼部份進行加密" s$ {6 W" f9 x' F. Y. v# `

0 W; _' s9 D. ^: e! F display charset = utf8                 //Samba 上所顯示的編碼' u$ P( Q& m1 u- }. Q2 d: A3 c; T
( g; h9 ?8 @: E/ b
unix charset = utf8                    //Linux 上所顯示的編碼, f. m! z; V2 a3 T
% {1 j% B2 w; m( ]
dos charset = cp950                    //Windows 用戶端的編碼 (可正確顯示中文)7 H+ z1 p# ^( ~' K' k4 r* N% p
: v9 F% S0 o8 ^+ Z
home                                   //分享設定,屆時顯示分享資料夾的名稱2 c% a9 O+ [( X0 J( E
1 N0 e- u, M7 [4 H
comment = Weithenn Samba Files Shares  //分享資料夾的註解+ W% ]: d/ H+ E: ~- U) `
" g2 [" H9 W4 P3 b& Y
path = /home                           //分享路徑
/ k; P4 U# ?9 y& U4 O7 B; k5 d2 H. _1 l2 {/ _. y+ H4 c# b
valid users = user1,@smbuser        //允許user1使用者及smbuse群組可存取資源
2 A- J" z3 I3 q6 e/ f4 \/ |$ v8 W, w7 Z
) ]5 s8 K. T% | public = yes                           //允許使用者登入後可看到此分享資料夾" @4 I! L8 s0 S" _! ]
( ?7 m7 n3 l' R# B
writable = yes                         //允許寫入
/ X3 C# C! r5 j# c) F6 G5 f5 T* C; f5 B) P: }" R  P
create mode = 664                      //建立檔案的權限 (該檔案在 Samba 中權限為 664)& i( e' U  T2 K) n/ H9 r. L

# P& |! i0 ]( l  t! f; A5 q directory mode = 775                   //建立資料夾的權限 (該資料夾在 Samba 中權限為 775); i7 O+ M0 S# I% V% z2 u

5 \/ `/ u- A+ F- |4 A+ G1 a$ l; h3 ]' z" ]. \. A# m
步驟3.建立 samba 帳號
" E: j# j  ]& U, u  \: L0 B. P
, N$ z2 ~1 U) ^4 M* T設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。" w1 \; p& X+ L# W1 g3 T
#smbpasswd -a user1  //建立 samba 使用者帳號 user1) A7 ^. X; P7 {0 _6 f6 a

. b, y& j# J/ l* B/ Z: } New SMB password:        //輸入使用者帳號 user1 的 samba 密碼3 n( S) k! K* p: K" d/ i; T# ?% \
0 ]; z+ u1 s+ S8 u: F( q* r8 K
Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼4 w, Z: H% n: @

( ~- c( i4 f" m7 x0 d8 k) ]4 s Added user user1.     //新增 samba 使用者帳號 user1 成功
& K4 U$ z4 l' W+ g& D8 t
) V% y& R+ m7 h6 V7 A. K/ N4 L& x新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過, c1 ^) O$ d& [
#cat /etc/samba/smbpasswd  或者( `7 O) G: Q* C
#cat /var/lib/samba/private/smbpasswd9 f/ y/ O8 k; t
user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U          : LCT-41CAF287 :
2 b9 P" _7 m4 ]) I" a$ a: H1 Z7 p7 v+ j
步驟4.啟動 samba 服務
" [0 v1 |# b3 V! f6 G1 Z' Y- O7 Z5 v% @, u
在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。+ ~/ b/ b! M* ~! ]/ C
#chkconfig smb on
: p2 K1 N; i$ S0 r- `9 N# B! k7 R/ J3 i0 b* y: e/ y
使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。
8 I* h) V) }; ^. w#chkconfig --list |grep smb
1 p( ?8 A- R+ o3 _7 J/ [. t5 W- `9 A$ }2 U
smb             0 : off   1 : off   2 : on    3 : on    4 : on    5 : on    6 : off: `% t4 z# v/ r
$ x% N! N* p9 I. j  }
完成上述設定後便可以啟動 smb 服務9 L+ O( j2 U7 c! I' s
#/etc/rc.d/init.d/smb start! ^4 g4 M' }' @' w; o' }/ N+ V
, d. b/ h3 |* G/ p/ [/ h2 [4 s
Starting SMB services:                        [OK] # x( N6 E( h) Q- `* m- [
" x/ s9 Q1 A8 G* L9 P: E$ {
Starting NMB services:                        [OK]  
- d' L# w( V' O$ s% F3 f2 h/ s2 }4 V3 i6 ^3 k5 ^
檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。9 s: B- F/ ~5 o5 d
#netstat -tnl. s) o" g% M% O9 z- x7 k
7 l' x8 I/ ^! w9 k
Active Internet connections (only servers)
6 d0 J  P/ {7 ~; b
  m3 S5 }7 v& b, T. r1 { Proto Recv-Q   Send-Q   Local Address    Foreign Address    State
7 d/ E* C9 R% L; s! {. X: `7 |3 P* Y# k0 A+ \; x: s
tcp        0        0     0.0.0.0:139          0.0.0.0:*    LISTEN* [7 W: Y3 p# F& F$ X+ `
, {# @1 d; d& c) g, G/ w; n
tcp        0        0     0.0.0.0:445          0.0.0.0:*    LISTEN! z" l: P# n7 W8 v  H
4 H( w  f' H1 z9 @( F5 ?# L  J- j; M
3、Samba Client9 `+ N9 _- T8 ~& z1 s% c
以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。
- Y' j, s6 @/ ^- d; |2 ]2 `3 Z& p4 S$ N
Windows Client
" ]6 ^6 c* J, }0 F" k3 H- q) o3 _: _# {8 S
上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:
# B; F3 b  l8 p0 B檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。8 x  V5 o7 V7 B
驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。
9 h# p: Y% }7 Y; Q: C  u) D
1 G2 o% @# f; t- U9 `! W若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):  n% F& ?- s; D7 S  ?% ~! M9 f5 r

/ m: N# M  D7 M6 Y9 p) u* Q' O& K方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)
% V; O+ Q6 [9 K) `6 g4 `) R net use w: \\Samba_Server_IP\home
& Y7 s2 @0 c6 \6 A2 W
, X& ?& Z7 b6 b7 a6 [1 N- t方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料): y+ I+ [; ]/ J/ ?1 T# g* `' _0 _
net use w: \\Samba_Server_IP\home /user:user1 123456
( Y+ X: W4 k! q
. y' i4 P- B* I7 B- K% U0 a5 pCentOS Client
/ u; a9 k# B5 n8 W" `
9 G0 O4 V6 v7 d4 ^: K- d, }若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。
. d' A6 P0 P4 w
. P! X6 R( i1 d' H$ H0 B方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)
0 J- z& f& P4 k6 W/ ~mount.cifs //Samba_Server_IP/home /mnt/home -o$ P9 E8 Z  Y" V  b
0 Z( I: H0 a* a
方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)/ R% N+ C) V, y& g' s
mount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=1234561 j# H$ s' \+ o* y! X/ E9 c, }1 F

  ^- w& d. q+ z5 E/ ]9 F" K" g$ l; y  S若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。
, ?1 G& w' \3 j; ~4 Y/ ]umount.cifs /mnt/home

. g2 b" D) z* \) Xumount /mnt/home1 }! h7 R, d# f7 o6 x0 C

  H+ p7 n! y& P0 k7 y% `4、CentOS 存取 Windows 分享資源
" @9 H. a, F5 `+ M) I, @Samba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:
+ ]6 \( u& }; E+ u3 ]
$ z8 ~; }7 I) x/ yWindows 電腦名稱: user1-XP, q3 ^& N- i" d- `+ p
分享資料夾名稱: Shares/ r2 \6 @% A' r. s
可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)& J1 I" ], C1 O  I
可存取 Windows 分享資料夾的使用者密碼: 123456( D2 T/ h( a% Z: J2 [
& X( j$ w) D- M
CentOS 掛載至本地端檔案系統: /mnt/shares
+ {" s2 ^7 }1 m( GCentOS 帳號密碼檔: /home/user1/secret.txt
) |- [( H0 x9 G! j安全性權限設定: chmod 600 secret.txt
, E+ s  Z4 ^' u8 f' m. @" }
0 _0 z$ |/ r) o9 F4 i! X了解後我們修改檔案系統設定檔 /etc/fstab。
% Z2 j: N2 J9 f- W1 O* b- G#vi /etc/fstab% B$ j* H: R  f  a) u
$ P) p$ v( ^# u- @
LABEL=/1           /        ext3    defaults        1 1
- v3 D( c, }! E9 L6 ]0 B3 O) d2 w# W7 n1 o; h& V; U+ u
LABEL=/home1      /home     ext3    defaults        1 2
5 Y7 G+ B7 ~& V0 c, Q! U8 L  f7 k9 n, c8 {
LABEL=/tmp1       /tmp      ext3    defaults        1 2
9 h3 z7 X8 h; L- B# I& ~: B' l. [
LABEL=/usr1       /usr      ext3    defaults        1 2
# o  v& q+ }& ^- J3 K
$ K& G  |, M$ w+ @! Y LABEL=/var1       /var      ext3    defaults        1 2
5 v3 B9 W' |4 b4 |1 [, Z, V, ]5 C3 k" Y. s! I: ~' ?1 U/ g
tmpfs             /dev/shm  tmpfs   defaults        0 0& i2 N. n9 s4 Z; ~6 U2 Y$ ~
, B& H, N2 f) m* R
devpts            /dev/pts  devpts  gid=5,mode=620  0 09 B3 F2 m4 L  }. v

, n! H9 |: n1 C2 P- O. R sysfs             /sys      sysfs   defaults        0 0
1 `# I( A" }7 P- p, T' t5 j- M  E; j
5 @2 g  v. h; A8 O# V- x* D- V3 | proc              /proc     proc    defaults        0 09 q3 @: u9 x" A+ B- b" @
$ L% x0 G4 z; p  W
LABEL=SWAP-sda6   swap      swap    defaults        0 0
5 O5 m/ Y' ?- g. K* u, P# G/ F: y( ~, D
//user1-XP/Shares  /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行3 P# t, H) I# U9 c0 g0 a* ~) Q
) Q# k  |. [4 T" \$ j7 N. s
建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:
4 [" w: k% K: a- F, O+ d3 o1 w: d#vi /home/user1/secret.txt
& X$ |! \! a5 \) x5 w+ H- [- {( X: E2 ?7 J# \- W7 j& A1 B
username=user1
$ r/ ^1 l6 ]) x' J( M3 R8 H& P6 G2 R6 z) v* Z
password=1234567 b4 W( h& @1 r# z' W, M8 v
" V6 v. b: v8 H- X2 U& L
設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。" u$ X2 g: ~$ F# {( }& Z) B0 G
#mount -a     //讀取 /etc/fstab 更新1 B0 r4 R; N0 _9 ]! m
; C7 {; Q' D! H) a5 p+ N, Q5 L
#df -h        //檢查是否成功存取 Windows 資源2 k! L' d) p* R' s

# A& a6 @  O, U$ X7 i  w! T- }$ W, N: B Filesystem            Size  Used Avail Use% Mounted on
7 \( c1 n. l8 t7 _( c) u6 F7 ^" c9 a1 N4 o. s' ~  a
/dev/sda1             9.7G  2.3G  6.9G  25% /
' M( d4 @" C- H$ k% U; F! f' {+ T0 z% K$ B, p
/dev/sda7             414G  211G  183G  54% /home7 o6 U: O" Y1 v, O5 N; y

! C1 `) `; U# o, H /dev/sda5             4.9G  139M  4.5G   3% /tmp1 O! h; D1 e$ R0 _

% N$ B4 q( `' @+ J, i: B /dev/sda3             9.7G  2.3G  6.9G  26% /usr
* Y9 ~" N$ E5 [9 j5 J3 R/ T6 h8 A( }) l
/dev/sda2             9.7G  255M  9.0G   3% /var, D: P2 Z! B8 B) W' }
7 k3 J0 o% A! x2 \9 x5 Z
tmpfs                 2.0G     0  2.0G   0% /dev/shm7 o2 k2 z6 B5 `: {  u- O

8 V+ A1 Z/ d* C+ ?) s( R //user1-XP/Shares  251G  236G   15G  95% /mnt/shares  //存取 Windows 資源成功

( c' B6 [4 O7 t, B) h
% u  ~8 {  N- _7 G
[Troubleshooting]
* z; A4 ^8 V2 H$ G) [從client連到server端時出現error:  2 `& {; z" N. p" [. Z
samba mount error(110): Connection timed out
. N7 X' _/ g/ U一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 445  z! w% b! ^& c7 H3 p, ?

3 X7 t+ M# x% D+ N& t7 a至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:
( P: l+ t4 v; W

) A( K* K% a& ~: j& Q
用 yum 查一下有什麼 sshfs 相關的套件:; {5 T5 x9 c4 G5 b1 x6 f* K! l" B
# yum search sshfs( _* \! @; u% g! c; @
=====================================================================6 F* h$ A; _( D* |9 s6 ]6 ]- p
fuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH
* K; m/ d% t- M安裝sshfs:
  j% R) e. n, c; h#yum install fuse-sshfs
) r% n' N$ z+ ?! N, i& M建立掛載目錄:
9 \5 l5 `' b! W6 c" u9 d! X+ Q, w#mkdir /mnt/temp
$ n2 C4 `) |* `( n$ N! M用sshfs 掛載遠端的目錄:+ Y) i* A: z  C/ c
#sshfs -p 22 root@192.168.1.2:/root/  /mnt/temp     //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄6 a- |/ w! r9 |1 O% N
root@192.168.1.2's password:    //接著要你輸入遠端ssh root密碼
! {; T" H9 V8 Z+ ~, f9 ^9 _正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的) |. Z+ d* P6 l. _1 K( j/ d& c+ X6 P5 x
如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便; d  @; i* c$ B3 X5 f! Y
+ w+ V: A2 z) u5 r
帶上密碼而不用手動輸入密碼
6 I& t$ d) ^8 [; e$ T#
sshfs -o ssh_command='sshpass -p my_password ssh' -o cache=yes,allow_other -p 10022 root@192.168.52.4:/root/ /mnt/temp$ U, t% W0 L! S- K
註: 如果掛載有問題,可以開啟 debug mode 觀察過程:7 W' {5 X9 v1 O4 X# z. g
sshfs -p 10022 -o sshfs_debug -o debug root@192.168.1.2:/  /mnt/temp
/ ?/ o% c6 r. m5 |* J: h

2 @% I$ E2 C1 c- a! {以一般帳號(非root)掛載時,出現error :
* x" ]+ C/ ^, l, Pfuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限
) t# C- M& K  R- ?  Vls -l /bin/fusermount  o. y1 x6 G# }' b' O" {
-rwsr-x--- 1 root fuse 32368 May 11  2016 /bin/fusermount
* F9 ^' M$ q8 ]$ {  q$ ?6 J故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse( |" H1 x5 j* G5 Q- j7 z( f6 L) d
, c2 K4 a# o3 t3 C1 ~1 ~: _
可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統     SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)" }" V4 \* t& i% B
. h9 Y( E# {3 T+ Q! Y& e0 R

' m4 j# C- e; Z6 S
回復

使用道具 舉報

發表於 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-12-6 15:44 , Processed in 0.082124 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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