in header_common.htm --> -->

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

 找回密碼
 立即註冊
快捷導航

     
查看: 15729|回復: 3
打印 上一主題 下一主題

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

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2017-9-3 21:06:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

1、安裝及設定
7 i9 O" \! g# K7 |分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。( h5 t% A' l; Q) x  s( C# j

  V! `" `) ?; y! W. O% z5 t2、Samba Server4 r) Z) S3 D5 P. Z( N. H. C
步驟1.安裝 samba 套件  O& X9 }5 X; @7 U. P9 l: Y
2 f+ M. ^! @) H: G" j( Q
利用 yum 指令來安裝 samba 套件。
6 m* H1 [3 t3 I3 [# u; C#yum -y install samba    //安裝 samba 套件
  L2 d- o' Z& M# K( ]/ p6 o
+ j3 ^4 t; a* o4 I% ?! E! v, h) |* H***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件:
/ M. R( z0 H5 U  f#yum install samba-client samba-common cifs-utils2 k* d( i' h  H5 Y- {, y2 i- Q  L) e
4 M" e5 |( X0 c, \
步驟2.修改 samba 設定檔 (smb.conf)" p. v; y" h7 E% {$ O
" i  {& C. ]8 R& t$ l2 A- s7 u. X. p. Q( b1 S
修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。
8 C4 k6 N( k+ k: x( r#vi /etc/samba/smb.conf  //修改 samba 設定檔0 x! A0 {" R7 K( [1 i3 E2 }
) }0 e% C2 c+ N4 d6 `/ Y/ G* x$ ^
global                                 //通用設定7 o4 \+ y4 }0 K) @

% T, s: F2 m3 w, c+ a! e1 Y1 }3 X netbios name = Linux-smb            //顯示於 Windows 網路芳鄰的電腦名稱( `* n" R( `( j0 C( |
$ p0 |9 E9 B+ o3 F
workgroup = WORKGROUP                  //顯示於 Windows 網路芳鄰的工作群組名稱8 r' o8 {0 ?  L! Q3 ]: C

  X2 U3 }$ G  u2 s- Z3 N hosts allow = 127. 192.168.1.18        //允許此來源 IP 位址可存取 Samba 資源+ ~, Y* G. @3 A" k6 H, c) {

1 [4 A( M7 R8 k4 } hosts deny = ALL                       //除了上面允許的IP之外禁止其它IP存取Samba資源7 O# k4 U- B! q

# E" _4 v/ C$ E* _$ M security = user                        //安全等級user需在Samba主機上擁有帳號者才可登入' u# a/ o- I0 l

) U, l; `( k8 a7 I, V, m encrypt passwords = yes                //是否對密碼部份進行加密% }* u/ z5 y0 z0 f9 g: @# T
8 E. ^0 a  g- h9 D: N0 O
display charset = utf8                 //Samba 上所顯示的編碼4 `8 L4 H5 j9 e) }

8 W: x3 a) L  `  _. q7 M unix charset = utf8                    //Linux 上所顯示的編碼( T8 j4 {& q. I6 T' L$ M
& @4 y3 `, a* e! N7 |* R
dos charset = cp950                    //Windows 用戶端的編碼 (可正確顯示中文)  L1 g# `2 \! q

( {* C0 |1 n, C, i home                                   //分享設定,屆時顯示分享資料夾的名稱
" f  w- ^; I& o' V- O% G% O
$ Z/ f. u/ C! D; R comment = Weithenn Samba Files Shares  //分享資料夾的註解$ X+ M  z, ?1 O! m: ~' Z

' d3 C" y* X, P3 Y6 _/ G path = /home                           //分享路徑
, u6 d: l$ g4 Z# A% g4 j% M2 s5 l/ |
valid users = user1,@smbuser        //允許user1使用者及smbuse群組可存取資源: c1 u7 \* T4 ?$ k" ], E/ _3 L( H
* ~7 C2 M4 h! ~# p
public = yes                           //允許使用者登入後可看到此分享資料夾
! z- E  b5 t- a, g( g
" z/ |5 x5 g" b! Q writable = yes                         //允許寫入8 s3 S; ?# h, b8 @# f. }1 T
. Z8 Z/ K. S, _4 r# k  W1 y
create mode = 664                      //建立檔案的權限 (該檔案在 Samba 中權限為 664)
6 _3 |2 `$ v  _% W( j/ G' A( ]. x
directory mode = 775                   //建立資料夾的權限 (該資料夾在 Samba 中權限為 775)
4 m$ I" F2 c. j" c5 i+ s' e' D
4 Z, x) q0 G* z
0 p# t" x3 b/ W, A0 ]0 A, S. u* Z步驟3.建立 samba 帳號' w2 @. f0 P2 L4 Y
6 }; x$ c$ O: s, ]
設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。2 }% M# C- k1 ~4 S2 S$ K- E
#smbpasswd -a user1  //建立 samba 使用者帳號 user1
) Y. H/ n8 t/ d  j: c
0 I+ e/ P5 S) H! N: C% Z" X1 t( B New SMB password:        //輸入使用者帳號 user1 的 samba 密碼1 N  J9 ]" h" [% Z! N, k0 R

# k) W0 v9 A& N6 k% s+ [" b Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼/ |  ~4 ?% X( X( W  j* O) |: U

% F! v# h9 v+ c$ \( ]1 R0 C; i Added user user1.     //新增 samba 使用者帳號 user1 成功' @2 G9 [9 k. C+ `) H+ M
1 p& x/ |- K  q
新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過
0 K: o! j' p" d) I/ W" r; y  \#cat /etc/samba/smbpasswd  或者, u' e7 j! |7 l
#cat /var/lib/samba/private/smbpasswd* }4 ~& |: C6 `1 R! V; e4 B! k
user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U          : LCT-41CAF287 :
  B% P+ @5 I6 E, A1 v  i. f+ j5 t3 t4 j1 G" V/ ^
步驟4.啟動 samba 服務( M& h: \' W+ Z" |7 Q

8 @! a, }1 U! q6 i4 [8 B& V' L在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。1 u1 P) j4 s. ~6 |: z, N+ z1 I
#chkconfig smb on
0 M8 q1 K! `: A2 P5 ^! W. _/ O0 q- g% M6 I; D
使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。
9 F6 ^0 l9 x6 u% _6 ?, [#chkconfig --list |grep smb
7 v; h3 L; k4 v$ |& ?* n" t% X
6 S* G: g) {) Q. M smb             0 : off   1 : off   2 : on    3 : on    4 : on    5 : on    6 : off
2 ]7 f  c* p- e* P
1 P1 ~! @. J7 w完成上述設定後便可以啟動 smb 服務
- w% B5 Q5 T! F) l& D4 c) X#/etc/rc.d/init.d/smb start! f( C& g# A* z( \5 j: \! z4 B  g
  H, r! v5 k( r# G% u/ s
Starting SMB services:                        [OK] , K# f$ A* H9 G+ j! T/ @
" @! w7 N( z# p5 b& s: |
Starting NMB services:                        [OK]  / P4 P6 f$ q3 P1 f1 X
" o+ i; }7 U- V5 o+ r
檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。
4 o: m7 Z2 J4 V- I, d) Y#netstat -tnl
6 `- ~, h0 J2 V
2 f0 j0 Q; Q7 c Active Internet connections (only servers): R5 g( z* v. M7 m) Z
( {" ]4 l! ^  y7 B* j5 N
Proto Recv-Q   Send-Q   Local Address    Foreign Address    State! e) x* `+ }' l3 R) q* ~

7 G4 o0 l& \/ `7 g' m tcp        0        0     0.0.0.0:139          0.0.0.0:*    LISTEN, R( S5 O* j5 q3 J3 E: j* N

* u8 u* Z; o  L9 _) w9 a tcp        0        0     0.0.0.0:445          0.0.0.0:*    LISTEN# H6 R6 `+ P' D* }: z" J

6 r: A- M. O. c6 t) W+ U0 g3、Samba Client
, k6 B0 r" Q" O0 R以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。: o$ `. k# L* o8 L! s
3 |  i& P5 _9 H( V, F
Windows Client8 e  g7 W  ?% {6 D. K5 E

6 r( Q) r6 S3 ?  T5 z+ G: i上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:* t$ ^% g9 a( R
檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。
4 t7 x  ?, K) {, d% H驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。7 g+ Y& X* ]: O$ c
, o3 r' T6 ]8 G9 D: ~
若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):
0 N4 r; b- C" x7 D3 @- \2 ~/ \/ ?& |
方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)* l& R$ n, e9 p5 X, M) D+ Q
net use w: \\Samba_Server_IP\home) o/ X, ^4 W) p; _. N

' f* Y1 [5 G! ^; ]  C方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)4 A; Z1 L5 c  C* ~; L& h$ g
net use w: \\Samba_Server_IP\home /user:user1 123456; I' B  |2 m& ^, u
4 O% r+ G( p" T. I$ r: r
CentOS Client
9 ?0 U3 P9 k/ ^* N/ ~) r$ J  p, |$ N$ J  A5 C: v+ g% r$ @
若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。$ r) M9 i" v2 r6 H3 L
9 x  v2 x9 ?. J5 K/ ~
方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)( t' B/ P: f& \" o5 N0 Q) L! d
mount.cifs //Samba_Server_IP/home /mnt/home -o
' b% p9 z+ n& Z' H3 q  ]) ]& @2 Q; e% @. c3 p% L# _
方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)2 _* S6 A2 n: W) w: y
mount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=123456
; P( T# r. |9 M( f/ t, U2 M
2 [8 X& [. y2 u6 B3 Q: ?. m若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。
. b" ^# p/ P4 q* y8 ~* D8 v  Humount.cifs /mnt/home
8 W: h5 N; m$ H7 U% f& s) v; z
umount /mnt/home
. U0 A  d6 a" S$ R7 q
' C; J# v* z2 O! \9 x" K% O4、CentOS 存取 Windows 分享資源
5 L' ~' H6 ^& ?; o) |Samba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:
$ n& l  y# Y2 w# n5 J: E: J
+ ?7 [( ?' h! p7 jWindows 電腦名稱: user1-XP
# t# h: @, b8 ]# b9 i分享資料夾名稱: Shares
0 w- G9 A2 R/ |# M, \9 C可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)
/ {* x& h" O1 k+ p# u5 @可存取 Windows 分享資料夾的使用者密碼: 1234562 @' N4 I* I0 O( b8 J
# A+ A7 V( E2 B
CentOS 掛載至本地端檔案系統: /mnt/shares
& S3 k' @9 b0 x: A1 Y# ?1 B- OCentOS 帳號密碼檔: /home/user1/secret.txt
/ t# e. \7 \' O  S安全性權限設定: chmod 600 secret.txt
. ~1 O- y1 {; U4 O
$ [) m1 E6 [5 d4 @+ y9 W# ]4 Z& C: e5 X了解後我們修改檔案系統設定檔 /etc/fstab。
  ?) n( ?  z" a3 H& c" p#vi /etc/fstab9 ~, k0 o/ U- ?; P+ T
$ M- Z6 f% b0 g3 M! P& E
LABEL=/1           /        ext3    defaults        1 1
7 S7 F1 u& f& ^6 j* i3 J: E
& g2 g: \/ B* E  F/ x LABEL=/home1      /home     ext3    defaults        1 27 x' A" S1 d& H
5 c2 D& V* Q' m# e) Z
LABEL=/tmp1       /tmp      ext3    defaults        1 2
0 q0 s+ \& t; E& ~  T0 {$ m) ?+ C9 r* u6 T
LABEL=/usr1       /usr      ext3    defaults        1 2+ }) [2 u& z: w* K

" l8 T7 ]1 ?) C% B LABEL=/var1       /var      ext3    defaults        1 22 a4 M; v, o7 ^  v' o' t3 S' H* P
6 O8 l. B$ @, i
tmpfs             /dev/shm  tmpfs   defaults        0 05 {! |) `8 q3 k
7 t9 A0 m- X! u2 @
devpts            /dev/pts  devpts  gid=5,mode=620  0 0. `0 d* ~* }4 n$ E

5 l; G( g3 k3 ^+ H8 ^9 m sysfs             /sys      sysfs   defaults        0 0
2 U- w5 @! L, s- [! Y- j
5 U! f! s) A& ^5 j2 S/ w proc              /proc     proc    defaults        0 0
- e& E/ w" G% z4 x: f, }* F: P. N& Y" ~3 ~; T7 B0 {0 ?- ~/ w
LABEL=SWAP-sda6   swap      swap    defaults        0 0
0 }  K" G( s9 B8 y6 L7 O' e: n9 ~. g0 ~" t
//user1-XP/Shares  /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行1 g( w& c7 F9 x) ?2 ?2 ^
6 e% Z. l; t8 Q) g. Q+ H
建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:6 ^* J. [* Z3 W  l; }: u9 k
#vi /home/user1/secret.txt! H8 Y. W" A9 _/ I2 y

, Q2 E- S/ y  |2 } username=user1+ s/ i' u' W6 V3 `" F6 v# [
, r' M& g( M( }0 z( d; X( m  z6 ^
password=1234565 u5 J) h6 i3 N$ @  n4 t/ ^

+ @. \/ f' U9 ^3 x) C設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。& N" y% O: D) }) H
#mount -a     //讀取 /etc/fstab 更新+ D1 H+ l% ~, \' Z3 Q, T, E
  U* q" j+ C8 ^0 x
#df -h        //檢查是否成功存取 Windows 資源
/ j$ r' d! A# p2 a( D; z
# ]! I+ [6 R+ o( K' v2 j Filesystem            Size  Used Avail Use% Mounted on
# R: E; u- X) i4 I* k9 H  T" \. _5 ~
/dev/sda1             9.7G  2.3G  6.9G  25% /! L* q0 c" p# o) j

' E7 E8 K2 n2 L: u  k' l /dev/sda7             414G  211G  183G  54% /home& P  W! I" G' Z' y: K

: R! q7 i" e8 l* P3 ^9 D /dev/sda5             4.9G  139M  4.5G   3% /tmp* w( z% I+ ]7 T: m0 g+ t
1 ^9 I+ L7 E* H7 T: O5 S1 B
/dev/sda3             9.7G  2.3G  6.9G  26% /usr2 u  T5 j6 i" p  {" h

. b/ D. x- ?# T( E4 e: O, u0 R /dev/sda2             9.7G  255M  9.0G   3% /var
7 }( T) V- Z* p% l- F! F# }/ j
' `- s5 f( B$ R+ v; w6 [1 @6 W+ C$ I tmpfs                 2.0G     0  2.0G   0% /dev/shm0 \6 O6 h/ w, f

, s& |; o  F' o: X' ]$ I8 t% u //user1-XP/Shares  251G  236G   15G  95% /mnt/shares  //存取 Windows 資源成功

% b. {, V& }9 Q& c7 d

. @. @6 s! B+ A6 {0 g. P[Troubleshooting]
# |/ N& G- R9 V+ T( {從client連到server端時出現error:  $ F8 V( i" r% E6 M
samba mount error(110): Connection timed out
; l1 x% W2 W+ k: Y3 J  `一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 445
. l' r' b. \' P% L0 A$ t
& y7 ?* w" z( x7 X
至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:
. I! m! N0 [/ n1 ^$ ?

6 F$ I. e5 E) o5 I: h! J9 r. x' t! X
用 yum 查一下有什麼 sshfs 相關的套件:* s" l4 Q( S* }* y0 P2 ?8 E
# yum search sshfs
0 Z0 t, N  R2 A' f# Z8 p: H=====================================================================# L) [) E( o/ ]5 J6 s  Q
fuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH3 Z" j! u( N- R4 m9 d- Q6 e7 e
安裝sshfs:
: b9 c6 c# c* t( E3 r8 i" Z#yum install fuse-sshfs % ?% K" N! {  K, `  o
建立掛載目錄:
7 r/ H, e: f! M#mkdir /mnt/temp) r! u8 n8 R' s$ m7 x/ O7 q9 B
用sshfs 掛載遠端的目錄:& ^5 t2 v% ^! C& I. m
#sshfs -p 22 [email protected]:/root/  /mnt/temp     //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄$ D7 V( d# S% w
[email protected]'s password:    //接著要你輸入遠端ssh root密碼! L1 q* G! s7 d" {' [- f6 N
正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的
7 a4 {6 _+ k, j" I6 p如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便% Q' H5 `5 d; L, Q8 ^

( [) e7 M0 I5 n4 t帶上密碼而不用手動輸入密碼
, I' s4 G9 [  }! V* ~8 ?4 s#
sshfs -o ssh_command='sshpass -p my_password ssh' -o cache=yes,allow_other -p 10022 [email protected]:/root/ /mnt/temp
) k+ w% p2 C' L1 d, g1 b. N註: 如果掛載有問題,可以開啟 debug mode 觀察過程:/ ~7 {  }# }5 o4 j( H
sshfs -p 10022 -o sshfs_debug -o debug [email protected]:/  /mnt/temp# b" d' ^# A6 }
8 i* f. x: D& m% k- Q' d  [/ q" l# l' ~
以一般帳號(非root)掛載時,出現error :" f6 x0 U- b) n5 K4 j4 d% ]4 m
fuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限
# V, R$ v6 ?4 Y* Dls -l /bin/fusermount; A# m8 t" |/ k+ `; y% B9 G; _2 U8 u
-rwsr-x--- 1 root fuse 32368 May 11  2016 /bin/fusermount, k8 V' \3 e4 s
故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse
% N0 |8 ]  ^, C

% T. w+ f% n9 q# @, m5 z可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統     SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)
1 `/ P" E2 e/ K
$ {7 O! o* I5 ~: C/ j4 [0 ]( D
-->
沙發
發表於 2021-3-10 21:39:32 | 只看該作者

now the best way is to use WSL (Windows Subsystem for Linux)
-->
-->
板凳
發表於 2022-3-18 16:28:04 來自手機 | 只看該作者

原來如此
-->
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則


-->

聚BT福利

本區塊內容依據『電腦網路內容分級處理辦法』為限制級網站,限定年滿18歲以上或達當地國家法定年齡人士方可進入,且願接受本站各項條款,未滿18歲 謝絕進入瀏覽。為防範未滿18歲之未成年網友瀏覽網路上限制級內容的圖文資訊,建議您可進行網路內容分級組織ICRA分級服務的安裝與設定。 (為還給愛護 本站的網友一個純淨的論壇環境,本站設有管理員)

QQ|小黑屋|手機板|52AV手機A片王

GMT+8, 2024-12-29 16:53 , Processed in 0.067068 second(s), 15 queries .

連絡站長.廣告招商

[email protected] | QQ:2405733034     since 2015-01

裸聊妹 快速回復 返回頂部 返回列表