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

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

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

[複製鏈接]
發表於 2017-9-3 21:06:35 | 顯示全部樓層 |閱讀模式
tid=66566&1、安裝及設定
0 ~6 J3 F% s3 s( K2 z分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。6 V2 q8 d& q) k* z  N: _- S7 L/ s) W

# G& z1 z' T' y, y4 E. k* d% M2、Samba Server
- x+ [7 v; e( m8 B步驟1.安裝 samba 套件
' G' \- l: G3 ^9 _9 O, r6 k& S' K: C( R- N5 z% e1 O. o1 x+ n" y: a- q
利用 yum 指令來安裝 samba 套件。
8 o5 A8 O( Q" |#yum -y install samba    //安裝 samba 套件
5 I1 G- B* }; A( }
/ ?- _" A) K% G# ]/ T3 @4 S***** 如果linux server 只單純當作 client端,那麼只需安裝smb client套件: 2 E3 {1 |: v( w2 }2 a) N+ S4 Y
#yum install samba-client samba-common cifs-utils6 s6 A+ \$ y; E0 v2 F- N" J
1 H' Z- m" |3 }
步驟2.修改 samba 設定檔 (smb.conf)
2 r' X. D) G3 n2 a- s1 R$ Y+ \: I2 ^  t. l: z$ P2 s
修改 samba 設定檔 (smb.conf) 內容如下,其中允許 IP 可設定 IP 網段例如 192.168.1.0/255.255.255.0,或者是單一 IP 位址例如 192.168.1.18。
) k8 ?3 d7 L" f, ~9 y#vi /etc/samba/smb.conf  //修改 samba 設定檔) R& k8 z+ G) @& d1 w

& e0 \  D" `% {; q global                                 //通用設定. j' T+ Q/ ^$ Y8 w" b' m# K* i

5 U2 f( }7 O& } netbios name = Linux-smb            //顯示於 Windows 網路芳鄰的電腦名稱
1 h  t( n7 |5 v& U7 k- \5 ~4 j! l
1 R: X& o$ k% m) ^& J) ? workgroup = WORKGROUP                  //顯示於 Windows 網路芳鄰的工作群組名稱2 L8 }! Y5 r! A% h/ Q9 l7 h8 P
" x: [( [) d6 }9 d
hosts allow = 127. 192.168.1.18        //允許此來源 IP 位址可存取 Samba 資源- _( b: z8 L& k  ]7 v
( l+ ]9 V9 C' |
hosts deny = ALL                       //除了上面允許的IP之外禁止其它IP存取Samba資源- I* o6 z* M% l8 x# O8 h, D8 U( y
: p' V3 A4 \/ }, N
security = user                        //安全等級user需在Samba主機上擁有帳號者才可登入
$ ]( k& A8 L3 y: x# A! g' y/ D! a2 M1 v: O0 n4 S3 \5 X
encrypt passwords = yes                //是否對密碼部份進行加密
, x, U* G% ]+ C5 t: ], V& c: H4 h) g  f9 O
display charset = utf8                 //Samba 上所顯示的編碼; Q( N5 y- H, `

& ~5 k. ^) a  ~# K& w1 E( Z3 f unix charset = utf8                    //Linux 上所顯示的編碼7 w& ]6 D. h5 x4 \" T- r3 x
% M. j* K& ~8 v3 _
dos charset = cp950                    //Windows 用戶端的編碼 (可正確顯示中文)1 g) T6 v# {4 h' ?- c' W* T: v
& v/ j0 T  W+ [% u9 Q! P
home                                   //分享設定,屆時顯示分享資料夾的名稱1 f+ L; B4 R1 w# T1 a1 z
- V( x5 F$ l) A' E2 c8 ]3 {9 G
comment = Weithenn Samba Files Shares  //分享資料夾的註解' n3 A9 W) G0 `8 W
3 Q! t$ s/ k1 M! E  r7 G5 h
path = /home                           //分享路徑+ x% u+ D2 {6 I- V8 J

2 e2 U) [$ p- E  u valid users = user1,@smbuser        //允許user1使用者及smbuse群組可存取資源
3 S" {' T# V2 K1 m
7 m* |9 R) _% ]8 G public = yes                           //允許使用者登入後可看到此分享資料夾( `5 p" d% B) S) O' [* @( ?
  W) U1 s/ d' o% R" M
writable = yes                         //允許寫入+ d# Y# `7 D/ M' m4 N% a0 C* i

6 x  Z% K$ r! T6 X4 G! ]  R create mode = 664                      //建立檔案的權限 (該檔案在 Samba 中權限為 664)! y7 ~5 s" w) N0 C6 Q& H, M  t

/ R# n$ a9 }5 Z" B8 b directory mode = 775                   //建立資料夾的權限 (該資料夾在 Samba 中權限為 775)
5 a5 e; z; O  D* W. k; y" k% }& k% ~% [% ], |

2 Z3 j0 ~; x4 c3 x8 ~5 l步驟3.建立 samba 帳號3 N$ `0 I" V  G. H* k, q' U

/ C+ \% V4 ^1 n' \# m! W設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 user1 的 samba 帳號。
* P! g# ^$ q- S' @4 G2 A#smbpasswd -a user1  //建立 samba 使用者帳號 user16 K7 r( X! Y8 c% B; \$ B, t
3 [6 \5 h% W9 i1 u, `" b% B
New SMB password:        //輸入使用者帳號 user1 的 samba 密碼
1 t, m* R( T+ q4 q) u' [3 }4 `, ~1 t! k. O* I
Retype new SMB password: //再輸入一次使用者帳號 user1 的 samba 密碼7 X, F: T" ]1 g) E! X  G! k
* }3 ?% Q4 D. ?3 Z
Added user user1.     //新增 samba 使用者帳號 user1 成功
6 p; B- h2 N% C1 v; f3 O2 ^1 C# }
! \. }0 Y: T, g( b新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過1 l# f& L( s: y
#cat /etc/samba/smbpasswd  或者$ r* Z  r  K2 q& R) L% i* D5 Y4 p
#cat /var/lib/samba/private/smbpasswd
. Q" R: r- b# H user1:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:U          : LCT-41CAF287 :
) L& H2 A8 V+ X- O1 y
$ u4 r& C1 T; T  S步驟4.啟動 samba 服務- ?" I% p& L, p/ N" |  [

6 J1 [- a8 Z2 Y& N在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務。
5 `" s3 r: f! Z2 @7 g& k6 l#chkconfig smb on
/ C" c7 P1 H# j4 e/ B  Y; y- N
3 m: _6 Z( y9 [6 V% N使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)。& n3 A0 z0 u- R# ^
#chkconfig --list |grep smb
8 A2 Q% G  t* @' f) ~6 {7 h; T) \, P" M* ^, u
smb             0 : off   1 : off   2 : on    3 : on    4 : on    5 : on    6 : off$ N" W# |( L, ^9 D' g+ e5 L
& m. g: q& b6 h/ a' U
完成上述設定後便可以啟動 smb 服務
: L$ o0 k  k" K$ K+ K' u0 c#/etc/rc.d/init.d/smb start
# J1 l" \; g3 ]6 X2 v1 i$ y4 |; \* t2 H/ v5 \
Starting SMB services:                        [OK]
, Z: b7 B  B. @6 B+ I# V4 R/ w
, o- N7 r8 G2 { Starting NMB services:                        [OK]  
, T! N( J3 V8 b, t7 c* l8 A2 J) P3 G% y# s
檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol。" E  f8 C1 [8 [
#netstat -tnl
) h/ S6 q: ^8 o+ F% Q9 l! l9 @7 \& v2 D. T3 F! z3 J$ ]0 {) s
Active Internet connections (only servers)& D! ~( [/ D5 T3 c

; A; c; F9 |# j( K5 O6 I: k0 t3 v Proto Recv-Q   Send-Q   Local Address    Foreign Address    State( e) ]" I6 E& D( R1 \* X; t

0 }1 Q. S1 f$ j% ]8 z4 V tcp        0        0     0.0.0.0:139          0.0.0.0:*    LISTEN
: c9 j7 F% a" E# |' C; r
1 C7 h$ T7 o9 @2 U& ^2 ^" l' J4 {6 b tcp        0        0     0.0.0.0:445          0.0.0.0:*    LISTEN. _5 [4 d8 h! P2 B

5 W  p6 C$ k$ R& x" x  m3、Samba Client
/ c# @# Y! p% [6 V. B以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源。
$ W& m/ u+ d4 c* ?' J& ?* \9 ?
5 R5 z$ B( i+ i" @6 sWindows Client5 M: w9 v) [2 h& t/ X& {+ x; V2 v
# J6 _, q! g, ?5 ~6 I( M2 P' ~- o
上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下:
' n8 `5 z$ m: U2 J0 E檔案總管網址列輸入: \\weithenn-smb\home,也就是 /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 home。
  d8 i- t4 |/ S' K驗證視窗欄位輸入: 使用者帳號: user1、使用者密碼: 123456。# v3 x: ^1 _3 ~* B
. W8 D, _+ k" _: @+ C% z7 ^
若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定):
/ q0 M% F' W" w: Q3 z+ {# e; O; [# C; c9 C8 r  E# v6 u) Y
方式一、將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)
, A' R* ~3 `0 x5 g' D net use w: \\Samba_Server_IP\home! F: _2 L" ~3 g' C7 e# P; o+ F" r

/ s4 j4 Z. @/ A! L  m0 q方式二、將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料); ~4 h' ]" Z& s
net use w: \\Samba_Server_IP\home /user:user1 123456
0 z8 l: B* V# {. F  t2 @  u, m% v& d, ]6 D" a1 ]
CentOS Client
: R3 C+ B9 w& F
7 a, J  f+ h! K" t% w! n* R若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源。+ i' o/ `, n- i0 |5 I  R
3 b! v) [# {4 Q+ F9 n
方式一、將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)- y9 J' Z' T  ]7 I; Y0 N
mount.cifs //Samba_Server_IP/home /mnt/home -o
/ W5 i% {6 Y- ^" G' b7 U+ p0 C  N/ h* Y9 v
方式二、將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)' U, ?/ z" u% l/ P, G+ O8 B
mount.cifs //Samba_Server_IP/home /mnt/home -o username=user1,password=123456
1 p2 ]7 \9 I( E! a- Q& H
: e4 t( J1 Q% F$ b7 x若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)。; w5 i, c. z* e  Z. m& s. F
umount.cifs /mnt/home
" j/ V( N! ^8 O! P) e) G1 v, k) D
umount /mnt/home
! B6 r8 f9 O1 _" }9 d- U
0 `% A6 q5 @9 R6 L& q) L. z: t4、CentOS 存取 Windows 分享資源" B9 y% Z$ @% I: ^. g+ A' X
Samba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢? 以下先說明實作時的相關條件:; t+ W  ~0 Q, ]8 n7 Z
! p; @; c* U6 F
Windows 電腦名稱: user1-XP- M/ z* r* P4 m' l1 b
分享資料夾名稱: Shares+ D# m/ P" t8 }! v. I
可存取 Windows 分享資料夾的使用者帳號: user1 (請確定該使用者帳號存在於 Windows 機器內)
' J8 v0 z2 G2 ?8 c; ~/ w9 \  m- @可存取 Windows 分享資料夾的使用者密碼: 123456
0 x5 f# l  ~+ `+ w6 a- Q3 r' f7 `# L
CentOS 掛載至本地端檔案系統: /mnt/shares
0 l1 A! T" V4 U; r+ ACentOS 帳號密碼檔: /home/user1/secret.txt' I; K! @& a! \  \, M# A
安全性權限設定: chmod 600 secret.txt
/ K) C) O! O7 p5 N$ A% l
* s! c" p$ E. j5 O7 r了解後我們修改檔案系統設定檔 /etc/fstab。
( o+ [# U  Q9 k" N+ Q* O& k#vi /etc/fstab
: R! k$ F0 j& b9 Q, T* f
8 D9 }' `( K/ ?- H8 M- K( ]( a7 R LABEL=/1           /        ext3    defaults        1 1, G) v3 }  T1 [) u" {+ A

9 Z. u5 T. Q/ C( x# L4 M LABEL=/home1      /home     ext3    defaults        1 24 @# m: w3 m8 v- [/ E, ^) f8 J
! Q8 {1 d; v. i0 `; L, h/ |, q
LABEL=/tmp1       /tmp      ext3    defaults        1 2
5 s3 ~  I! }) a% P# V
! H+ u5 V, J* h( S LABEL=/usr1       /usr      ext3    defaults        1 2
6 ?- a1 ]4 \4 M8 x
" d9 O  m- ]4 h6 z& c1 z( x1 K, m LABEL=/var1       /var      ext3    defaults        1 27 X! n- p  E3 J

, t+ \6 F, m( C: ^7 E) C tmpfs             /dev/shm  tmpfs   defaults        0 0
: l- S; Y: o+ E' M& L0 L; R! p+ q1 L; k5 V
devpts            /dev/pts  devpts  gid=5,mode=620  0 0
: U6 Y3 c4 L6 Y9 U$ _1 i  W
3 i0 R; z+ ^( \+ J' I" ~ sysfs             /sys      sysfs   defaults        0 0
% H8 ?/ t; U9 Y4 B
7 q" C$ V. P. e7 ?/ T/ `6 {5 I proc              /proc     proc    defaults        0 0$ o2 v7 _0 i+ H- @
1 m; f$ V/ `& S- P
LABEL=SWAP-sda6   swap      swap    defaults        0 0
5 p+ q: [! k, A& a4 e9 @/ i" {. u9 U: w( {2 H5 \6 O
//user1-XP/Shares  /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/user1/secret.txt 0 0 //加入此行
% G! X/ b- u! m% i/ R
3 Q+ L$ o* q0 m8 j5 \+ F6 {6 F( E! v, d& `建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內:
, T2 M7 E  X" {* x( @5 A9 L7 s#vi /home/user1/secret.txt( H9 T, R+ O- {
) e1 X& C4 I1 _
username=user13 Y2 F  {* V5 f  x

# ^* {; C% b5 Q& @- Q* c* U) P# p% n password=123456
& O/ k8 m/ Y  t; g- `6 m2 I3 u' z: C+ T* M$ H* }
設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)。
% X! D! U3 V& U4 i/ p, i#mount -a     //讀取 /etc/fstab 更新' v1 ~' T0 n0 f4 f: C( r

. T" o1 Q' t/ y#df -h        //檢查是否成功存取 Windows 資源: P0 s; J- m' ^" |: ?
) n+ e* ^8 x5 \1 w
Filesystem            Size  Used Avail Use% Mounted on; B! Q8 c3 M- p; z& Z/ x$ o

9 c: X0 j' r2 q; @! _ /dev/sda1             9.7G  2.3G  6.9G  25% /8 J  H4 a- f, k* \( V1 h5 t
$ A5 `9 X7 s! i! D  p7 `
/dev/sda7             414G  211G  183G  54% /home
/ T2 r& H& V  B  f2 l8 W' n" n; p! z  j3 W! P2 R& Z
/dev/sda5             4.9G  139M  4.5G   3% /tmp7 z6 i! o' |! I0 V5 t- Y

5 [4 y' d$ k( w+ s2 {( H /dev/sda3             9.7G  2.3G  6.9G  26% /usr
+ q) B1 A7 q$ N8 r, Y6 K7 P1 d8 c8 Y
/dev/sda2             9.7G  255M  9.0G   3% /var
8 T9 h' _5 A4 V9 H2 w2 ?6 R# R7 s$ d& b9 A7 K
tmpfs                 2.0G     0  2.0G   0% /dev/shm# y; ~2 U! H+ b! \7 \; d

+ \( @- K3 a7 M( r7 | //user1-XP/Shares  251G  236G   15G  95% /mnt/shares  //存取 Windows 資源成功
$ Z7 G" K* ]" {+ x
- C8 `5 }% U! J9 y; N
[Troubleshooting]
- x2 m1 J3 ~: k% C' N從client連到server端時出現error:  , r7 N' R! z3 ]# F1 [: T/ \
samba mount error(110): Connection timed out( f. C8 X9 c' p- J! U1 h# Y8 ~2 d
一般這都是防火牆的問題,包含server端跟client都要設定正確,尤其server端需開放port 139,client端需開放 port 445) Z) ~+ c" w, m: D. Z0 a

: R. y& o& e8 R! N; Q至於 使用 sshfs 來掛載 別台主機上SSH server的檔案系統:3 o3 o9 O  B8 @8 z, O: j

9 X' W- r0 a! p3 P, M
用 yum 查一下有什麼 sshfs 相關的套件:$ q! `+ ?: B9 ~8 I  `
# yum search sshfs9 k# K$ ]0 L  C& h( [6 {
=====================================================================
$ ~9 ]- ?# c9 ?fuse-sshfs.x86_64 : FUSE-Filesystem to access remote filesystems via SSH' z4 i- c+ x; |2 M
安裝sshfs:/ `* j* w/ A% l4 l' F; w7 x6 Y+ B
#yum install fuse-sshfs
9 P9 S% k# O6 T! m; }* X建立掛載目錄:7 n% S5 T$ r8 Q5 Q' _. Z
#mkdir /mnt/temp  c3 T0 ~! ?, y* N/ a4 p2 m
用sshfs 掛載遠端的目錄:/ T9 M1 |+ @( O6 `3 c) x. `  N  w
#sshfs -p 22 root@192.168.1.2:/root/  /mnt/temp     //-p port_number , 可以掛載遠端任一目錄,包含 / 根目錄
& g% M. D: \! F! Z2 q1 B- Wroot@192.168.1.2's password:    //接著要你輸入遠端ssh root密碼; n. n. {9 ?5 H4 C) u* d
正常情況此時應該可以看到 /mnt/temp/內已經有些檔案了,而不是空的9 L" _% T- c# T2 G9 t
如果之前你有設定與主機 192.168.1.2建立公鑰私鑰免密碼連線,你就可以省略輸入密碼的程序,而直接掛載遠端目錄,比較方便
% g, W+ t( V% D; c* K) o) y; D- p& O! M6 j) O& g$ @) m
帶上密碼而不用手動輸入密碼
6 ]/ R5 B8 O% w# a. B& a#
sshfs -o ssh_command='sshpass -p my_password ssh' -o cache=yes,allow_other -p 10022 root@192.168.52.4:/root/ /mnt/temp
  w. i5 j4 l! S! |註: 如果掛載有問題,可以開啟 debug mode 觀察過程:
6 T6 \/ g& W9 m  a+ M& J- {0 i- c  M$ nsshfs -p 10022 -o sshfs_debug -o debug root@192.168.1.2:/  /mnt/temp3 e! h0 ]' T6 Q- Z
2 u' Q- s# j# z$ Y+ K
以一般帳號(非root)掛載時,出現error :
% q' ?$ z' ]  ufuse: failed to exec fusermount: Permission denied ==> 因一般使用者沒fuse的使用權限6 @2 M& _' |& j8 E6 Z! N# l4 [
ls -l /bin/fusermount
, t9 b; t* ]! [' k5 T1 x-rwsr-x--- 1 root fuse 32368 May 11  2016 /bin/fusermount
. @' y: N+ X5 u$ q1 @& V  }5 C5 O故 usermod -a -G fuse qqqbox 需加入群組才可使用 fuse
: P) t; a0 b" @# P. L* F
/ [  |# D- M" n% z
可參考 : 在 CentOS 上使用 sshfs 來掛載 SSH server 上的檔案系統     SSHFS:透過 SSH 掛載遠端 Linux 伺服器上的硬碟(適用於 Windows、Mac OS X 與 Linux)
# ]) a. H- X& K/ U$ f6 f
7 ]0 C, T8 t) r5 C; A0 }# }7 @1 ~+ ~" f7 ~, h. ]
回復

使用道具 舉報

發表於 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-2-4 00:22 , Processed in 0.074423 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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