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

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

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

[複製鏈接]
發表於 2017-9-3 21:06:35 | 顯示全部樓層 |閱讀模式
tid=66566&1、安裝及設定
* E. T( X! l- f& ^% l6 a) i7 c分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。& ]  W: a: F1 Q( ]3 _

% c: M; F9 m- z0 D( ]( N2、Samba Server2 B- ]+ V" {  W+ q
步驟1.安裝 samba 套件
0 D4 ]6 Z6 J/ a% R6 }/ M
: P! y5 ]; k. \9 J+ h6 C' ]- {. T3 k利用 yum 指令來安裝 samba 套件。
8 ]0 C& u' R7 Y! I; {0 f* G+ L#yum -y install samba    //安裝 samba 套件+ u! N" ~, S( ]' x9 L) Y
1 y' X! {# \5 n* Y' L8 G  Q
***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件:
. L) K; f# M- |; l2 g#yum install samba-client samba-common cifs-utils
% m) P9 H, ?$ N% B0 A, v! g! [: G! q: R, m5 C
步驟2.修改 samba 設定檔 (smb.conf)
+ m/ z' [2 M0 o/ j
( O7 M" }1 O# G& @修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。
# i9 u$ S7 `% v! C1 g9 i. W- S#vi /etc/samba/smb.conf  //修改 samba 設定檔
" A* n$ q9 _2 D' j' W- b# S0 `6 z* L9 D. e3 T5 b& z9 @
global                                 //通用設定# p% o# N3 E; C! @2 }

% B; j$ @! J7 ]" x: \0 n) S: u netbios name = Linux-smb            //顯示於 Windows 網路芳鄰的電腦名稱: q3 w1 |% `! S! ?% f' g

; d: r& I; e2 G" C# }! U workgroup = WORKGROUP                  //顯示於 Windows 網路芳鄰的工作群組名稱
- }  P/ z& z4 W8 ?) D) W! W) `  s' }3 X# B
hosts allow = 127. 192.168.1.18        //允許此來源 IP 位址可存取 Samba 資源
* e! d% m' l- z7 {( G% E0 S2 O$ x0 a. a8 r
hosts deny = ALL                       //除了上面允許的IP之外禁止其它IP存取Samba資源- j6 G, d7 R' y3 p* ]  t; W. [) N

1 l; ?, w7 V8 O/ K# o/ ~. B" z7 O1 K4 z security = user                        //安全等級user需在Samba主機上擁有帳號者才可登入
1 F4 ^  Y! e( ^# o
2 \) _( p1 v4 I7 J) ^6 L encrypt passwords = yes                //是否對密碼部份進行加密
6 ]6 E* T4 U: b4 K7 a0 P6 n4 n4 O5 M
+ ~& _; a4 }- q  y- j display charset = utf8                 //Samba 上所顯示的編碼
( Y; E* w  `9 a
0 ]2 t. F8 L, W& [) `, S unix charset = utf8                    //Linux 上所顯示的編碼
+ W, B7 d' T1 s# j; N8 ^! j9 a+ d* h6 D% ]1 R" |
dos charset = cp950                    //Windows 用戶端的編碼 (可正確顯示中文)
4 q; |5 ]6 S( ^2 f
) F9 B' ~$ M/ k( Z, h2 g home                                   //分享設定,屆時顯示分享資料夾的名稱" G! {9 `, k/ z9 j' U

* O* U. R* X9 N4 ~2 z! T; R comment = Weithenn Samba Files Shares  //分享資料夾的註解
+ ~$ [/ w& |5 \) I4 `
7 E: R: S( U8 W7 \- h' z  i path = /home                           //分享路徑5 ^& r. e; ^* Q- ~- F" r5 O: K3 P

; S- R# h4 e. C1 [3 f valid users = user1,@smbuser        //允許user1使用者及smbuse群組可存取資源
& V+ A3 `3 Z5 [/ w9 z5 m
4 W0 }/ f; ]9 p8 Z, s* @; H public = yes                           //允許使用者登入後可看到此分享資料夾4 J% k' r/ V8 y% q9 Y/ e# v+ j8 A
9 [8 A% m6 g. {3 q
writable = yes                         //允許寫入
! }& p2 s) m/ ]6 Z; P3 ?# Z8 D. J+ V+ B( o- i3 m4 q
create mode = 664                      //建立檔案的權限 (該檔案在 Samba 中權限為 664)+ \7 t9 N4 m4 ~4 H

  M( U6 u# B0 x8 X; L1 k; }9 z directory mode = 775                   //建立資料夾的權限 (該資料夾在 Samba 中權限為 775)
; E0 r1 b2 h5 a" ^. P# t+ n1 p7 b! ]* Y9 B0 T# g

' p% \' }! F8 }+ n/ L  p0 }步驟3.建立 samba 帳號
) G  j( U3 i( n8 I2 Q$ `
8 \' }( X) ^5 K9 E  L2 W) I  B  _設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。6 h" l7 a: B3 c' A
#smbpasswd -a user1  //建立 samba 使用者帳號 user13 n# v6 p6 x6 c
! s- F; E8 E0 o5 |( p* M1 X
New SMB password:        //輸入使用者帳號 user1 的 samba 密碼* D8 O8 Z& ]& a- d, h, S

$ Z3 W' h" C3 W) I Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼# E. T0 N3 F" K- x2 M4 Y

8 L, y' V+ k$ q3 G2 o/ t Added user user1.     //新增 samba 使用者帳號 user1 成功
/ c* |0 q) l6 R$ r# y, K; a# S9 Y4 n: J$ ~/ d! V
新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過
, ~% S& A: A0 I  Z( R#cat /etc/samba/smbpasswd  或者
$ c7 m/ ~1 A3 f0 q4 p' B#cat /var/lib/samba/private/smbpasswd- Y6 r6 K+ F2 F$ @
user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U          : LCT-41CAF287 :
, S2 m4 a! N# H: m: u  A) N& c9 c8 _1 j
6 G9 h* f6 k& A步驟4.啟動 samba 服務0 Q$ H/ z. ~' J0 a+ b

9 `" C7 [, F& |6 [在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。
+ V+ F% }, v, d. i! Q" g#chkconfig smb on3 y9 O4 Q* `- _7 ?* q: m; d
. w" _- Z. P. Z) C- D7 [, H6 s" W
使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。, P# K. U9 _$ W
#chkconfig --list |grep smb
& Q) A; n. l# z
0 ^  A* ^( K' i smb             0 : off   1 : off   2 : on    3 : on    4 : on    5 : on    6 : off9 y# |+ g5 |5 H& G7 F  p
6 Z* k+ j* K7 W
完成上述設定後便可以啟動 smb 服務" U+ `6 i' F$ E& l% Y. w. c0 y
#/etc/rc.d/init.d/smb start
8 J- V9 C5 p% w% x3 u
  x- J, Q; Y) H6 R  }& F Starting SMB services:                        [OK]
1 |0 Y8 w& }/ d; X) J3 N3 r) ?5 v, d6 \6 @$ S# N
Starting NMB services:                        [OK]  
/ [) R7 P9 M% [' @8 `5 x1 S& U! d2 D! @) C' E8 }8 M5 g
檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。
6 b2 [0 y9 r# L, E; B' n9 |! a#netstat -tnl
2 Y' h8 \: W) W6 \( z7 I' m
0 T: v8 T- R% ~5 M Active Internet connections (only servers)
9 W' F& B4 c$ J% e
( H5 h+ ]4 \+ P8 X  j, o0 f Proto Recv-Q   Send-Q   Local Address    Foreign Address    State
" H% k, O: o3 _2 P2 H9 |: [( w
3 e( ?/ a# o* h/ Q! g6 ~6 ~1 c tcp        0        0     0.0.0.0:139          0.0.0.0:*    LISTEN
0 z2 q0 f+ r2 ?8 ?) c: A" Y# d  V2 u; @
tcp        0        0     0.0.0.0:445          0.0.0.0:*    LISTEN
4 S" t) x: c9 {' {+ A. \. g  [' _8 K2 Q& w; c. V3 Y
3、Samba Client
/ |' ~) D" A& W- C) X. f以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。
3 I! b. o1 b* P7 {7 G, `, _: m
( ~$ e6 |. z2 e/ jWindows Client
9 B/ e0 S  A9 X+ E7 ]
7 ^  ~) S: \6 P9 z% a2 j' Z上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:
, K  J: x# \2 T! n, u檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。
# f; Q7 P: K2 Y2 h驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。
9 {2 D% S  I% A0 J$ X, a0 c+ `0 z
若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):0 o* R9 ^$ h+ ^/ t
; o  l8 p; J* z5 _
方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)% T5 U+ i( x  U4 m" r
net use w: \\Samba_Server_IP\home
* [) ^& l0 O, O+ i) F! M
# ~6 b& d' q. Z8 }8 u: q' g方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)
3 U. Z+ \% f4 M6 J( h5 _$ i net use w: \\Samba_Server_IP\home /user:user1 1234564 i& R( |# j7 M+ Q3 w/ a% A+ J

9 E6 Y. G& s( x" bCentOS Client9 p! z) i) W* @

( H/ `+ l% |# |5 P5 V若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。
/ i- z9 D; D( m2 T" u2 j' I8 E8 d
6 F+ n! G4 o" ^$ d/ E& M方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)9 J7 K+ I5 J  @+ Z- p
mount.cifs //Samba_Server_IP/home /mnt/home -o$ L3 ^* q1 j+ z6 G+ _
, y7 k. z/ [$ A  J5 r
方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)) L- F8 a% ^" }5 ?: b, W
mount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=123456
$ J1 E1 R% s* H% {$ T( O; Y5 @5 f4 q$ V
若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。/ c' _" l2 P. g( n( D
umount.cifs /mnt/home
6 J# h) Q: t0 J9 Z1 P) G: T3 W
umount /mnt/home: X4 L3 s; u! Y2 L) u" p

) c& @* ^3 C0 R$ j0 p4、CentOS 存取 Windows 分享資源1 ?: F& J( ~0 A* M
Samba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:4 v0 L4 m: }2 F6 E$ D
$ c: \: n) t, d2 }: k5 t
Windows 電腦名稱: user1-XP
) w* u  c* l' p8 u8 l6 |, Y: a分享資料夾名稱: Shares
1 J6 i; @  W" j可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內), Z0 q9 d2 b- V4 t
可存取 Windows 分享資料夾的使用者密碼: 123456$ I8 w4 K8 d1 M& y. f

3 C* u) G' e& L( H7 V  H6 I+ g0 gCentOS 掛載至本地端檔案系統: /mnt/shares
3 e9 v( o+ Y  uCentOS 帳號密碼檔: /home/user1/secret.txt
7 v) e# F' Y" W: Q安全性權限設定: chmod 600 secret.txt
0 k' q1 {' M+ L  U/ M+ H( Z8 q7 J: H2 J2 @4 j* c/ r2 c
了解後我們修改檔案系統設定檔 /etc/fstab。
% `; F8 K' @4 G  P7 w#vi /etc/fstab' {1 D% `- `! o9 d0 x6 s0 @

  ?$ ]2 u$ ^9 ]+ Z5 @ LABEL=/1           /        ext3    defaults        1 1
8 x2 s# T5 P) ^, p6 X, J+ S# v4 u+ C  z: ]( ^
LABEL=/home1      /home     ext3    defaults        1 2
0 e& h% n( R* r6 A2 c4 h' G& S( N7 A7 \2 j% q5 A5 ^
LABEL=/tmp1       /tmp      ext3    defaults        1 2
- O" L5 M' {1 O% y  @3 p1 c, H/ g; h& s( ]
LABEL=/usr1       /usr      ext3    defaults        1 2( t' X) [! C5 [4 w% K6 J

" R+ e0 Y- ^5 e" Z LABEL=/var1       /var      ext3    defaults        1 2
# T: f, t8 g4 u5 e) b
; ^* r3 \7 G, ~2 o2 M/ C( J7 c. X tmpfs             /dev/shm  tmpfs   defaults        0 0$ `1 v1 P8 E7 T2 K9 y1 n2 _' d
% H/ k- ?4 |0 G5 o8 ?9 a; \( B6 a  J
devpts            /dev/pts  devpts  gid=5,mode=620  0 0
4 h8 K# e3 s, s1 f* H; g; ~8 e2 J' e7 X' a9 V. T9 a
sysfs             /sys      sysfs   defaults        0 0
. {8 n# {+ h, u% d2 E/ k2 A) c; ?- V
proc              /proc     proc    defaults        0 09 E, `/ y' R4 G' C' p9 y

' s+ Q$ ?; H' i  V9 h4 q LABEL=SWAP-sda6   swap      swap    defaults        0 0' W+ `( y7 r' Z4 U$ C/ V

& m6 F/ r4 _) W //user1-XP/Shares  /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行4 a. Q( X( w, E+ P# r8 C+ g

  z7 n( N& A; V8 @$ G* x- `, Y建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:
# Y3 d, k8 C  m#vi /home/user1/secret.txt$ p0 c5 }1 F! G- T

% |* S/ }# |; _7 L username=user16 n7 y# K( o* K! ^5 d, k6 p) e$ ^
: m& v9 R" b* h4 R) L
password=1234561 F7 t& ?7 z" F- B  X1 ?: ]

, C) P! Q; Z4 S設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。  j- r/ }( B1 L/ Q8 s
#mount -a     //讀取 /etc/fstab 更新
/ D  I0 G3 S. x. a5 }; F
# ^  E) x! Q% Q#df -h        //檢查是否成功存取 Windows 資源, K: Z. W% Q3 Z5 x9 i! d
3 `2 y5 g. {$ \: \
Filesystem            Size  Used Avail Use% Mounted on
9 W2 c3 B# j4 t, N. f
6 R- u8 p, g: c5 T* E; n# V /dev/sda1             9.7G  2.3G  6.9G  25% /. F) p2 W+ w$ h* k% H  z9 R
: ]; E; y# q8 D1 k( a: Y5 Z+ \4 d
/dev/sda7             414G  211G  183G  54% /home$ q5 \7 J- F0 Z1 E( a  B' `  g
+ e! R+ Y# u8 f, M# @; C+ W
/dev/sda5             4.9G  139M  4.5G   3% /tmp
" I8 w* F2 J( r5 |  U0 ]+ ^0 ~# p! i9 W7 n2 s' ?9 e8 z% }5 y3 {- _# Q
/dev/sda3             9.7G  2.3G  6.9G  26% /usr
6 x3 b- E$ r- B& ^  t2 A# {6 |3 O/ z5 g$ c1 v
/dev/sda2             9.7G  255M  9.0G   3% /var( Z* }6 K. a- A' q2 X2 P
; }9 ]# D. u2 {8 P7 p# B% l
tmpfs                 2.0G     0  2.0G   0% /dev/shm2 N, _, m& X/ l0 A7 g( n: I" G) S
  s$ q) O' v8 a8 X. Y* i4 ]
//user1-XP/Shares  251G  236G   15G  95% /mnt/shares  //存取 Windows 資源成功

6 L, x3 T5 R" K- V
! d1 e& D+ Q6 e% u' a9 d; l
[Troubleshooting]
3 O. v6 Y9 Q$ f. P4 L. h, B+ l7 E從client連到server端時出現error:  
5 T9 P3 B. I6 G% Ksamba mount error(110): Connection timed out9 O. Q& i9 \& J
一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 445$ Y: ]9 S% I1 t& h

0 ?& r2 f" y. M' T4 B% s: M至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:. y+ Q2 @5 T; c) P9 |/ D

1 ]  D/ D7 I6 Q
用 yum 查一下有什麼 sshfs 相關的套件:
8 v5 P! i' ]0 x1 _7 e$ |; t# yum search sshfs
+ A- Q, Y1 `1 _* I! I  h' h=====================================================================
: S- U: N) J! w% c: t: M* Cfuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH
5 l( c# a0 a& P" o; t8 B安裝sshfs:
0 s, s) V- d9 B4 Q7 k" c) D#yum install fuse-sshfs
; `5 V; y8 Y( d# q# M4 [( D0 D" {建立掛載目錄:1 g7 d9 k5 N8 ~' @
#mkdir /mnt/temp
# o7 F! L0 s- o3 {/ V用sshfs 掛載遠端的目錄:2 S9 |. ^9 w: h2 _; a) I
#sshfs -p 22 root@192.168.1.2:/root/  /mnt/temp     //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄, X' [4 p  O6 N% W) r, O
root@192.168.1.2's password:    //接著要你輸入遠端ssh root密碼. E4 b0 f5 ]1 h4 Z5 d6 ^
正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的
+ }) j8 i# h8 P' A4 S% ?如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便) ~* {) G( C& E  d, ^' d: m
% k6 q  L$ J" g
帶上密碼而不用手動輸入密碼8 D" M$ w" j3 v6 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* A* y& Q7 ^1 r
註: 如果掛載有問題,可以開啟 debug mode 觀察過程:" _& z% ?$ d& A5 H9 ^; P
sshfs -p 10022 -o sshfs_debug -o debug root@192.168.1.2:/  /mnt/temp% f2 b# u; `2 D2 d

" x2 s' s' H% n4 Q7 n  u以一般帳號(非root)掛載時,出現error :4 e; _& m5 a* P& ?- _
fuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限
# C' _. {2 g' {3 X9 m9 Dls -l /bin/fusermount  a! W. v8 r* U0 b
-rwsr-x--- 1 root fuse 32368 May 11  2016 /bin/fusermount1 _8 s5 U/ \4 P
故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse5 X+ Y1 C, @2 b: ?
. ]4 F- i3 w& y4 ?- M# v
可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統     SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)4 Z5 F* i; \& l$ ?

7 L9 a$ f$ ?. W% o' D( L# u0 D" ?( f6 r( Z: n
回復

使用道具 舉報

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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