主機與vmware fedora 9.0 共享文件

samba服務器可以實現windows與linux的文件共享,SMB協議是建立在NetBIOS協議之上的應用協議,是基於TCP138、139兩個 端口的服務,NetBIOS出現之後,Microsoft就使用 NetBIOS實現了一個網絡文件/打印服務系統。這個系統基於NetBIOS設定了一套文件共享協議,Microsoft稱之爲SMB(Server Message Block) 協議,這個協議被用於Lan Manager和Windows服務器系統中,實現不同計算機之間共享打印機和文件等。

Fedora Samba使SMB協議運行在NetBIOS協議上,並且使用Windows的NetBEUI協議讓Unix/Linux服務器可以在Windows的網絡鄰居上被訪問到。

 

在做嵌入式linux開發的時候,難免需要在linux宿主機開發環境與windows操作系統之間共享文件和打印等,實現的方法當然是多種多樣的,這裏我通過在Fedora14下建立Samba 服務器實現fedora與windows之間的文件共享。

 

一、安裝samba服務器

?安裝samba服務器的方法是通過 yum 來在線安裝 Samba 。

     yum -y install samba (注意:此時你的計算機必須可以上網,或你的VM虛擬機可以上網,這個命令纔可以正確運行

也可以通過系統-管理-添加/刪除程序菜單來安裝,在窗口中搜索smaba,選擇合適的程序版本安裝即可。

(安裝過程中需要確保yum可用,網絡配置正確。)

 

?然後安裝 個 samba 的  圖形界面管理軟件 

yum -y install system-config-samba

 

二、配置smaba服務器(建議用方法2

方法1:

配置主要通過編輯/etc/samba/smb.conf來實現。(要有讀寫權限,su到root)

修改權限

[root@localhost ~]#chmod 777 smb.conf

 

[root@localhost ~]#gedit /etc/Samba/smb.conf ← 編輯Fedora Samba 的配置文件

 

workgroup = WORKGROUP //設置工作組

server string = %U's Samba %v //描述信息%U代表當前登陸用戶

netbios name = fedora //netbios名字,fedora9 默認沒有啓用

log file = /var/log/Samba/log.%m //日誌文件保存路徑%m你的windows主機名

max log size = 50 //日誌最大容量

security = user //安全級別,user需要用戶名和密碼,share級別則不要

[Fedora Samba] //建立一個共享名爲Fedora Samba的共享

comment = Samba//描述信息

path = /home /samba//共享路徑

public = no //是否允許guest用戶訪問(相當於guest ok = yes/no)

writable = yes //是否可寫

write list = bsc //可以寫入的用戶列表(@代表用戶組)

 

方法2:

注意:也可以不用打開smb.conf進行配置

打開smb 的 管理軟件

# system-config-samba

Preference(首選項)->Samba User (用戶配置)

上面是我配置的兩個用戶,如(點擊Add User)增加mysystem這個用戶:

在這裏要記得用戶名和密碼,在後面的XP登錄時要用到。

 

點擊 增加共享的路徑和可以使用共享的用戶(在這裏設置爲: )

單擊OK,就會自動配置好smb.conf文件。

 

三、建立共享目錄(若用第二種方法配置,則只需執行這部分下面的紅色部分

[root@localhost ~]# mkdir /home /samba ← 建立共享文件專用目錄

[root@localhost ~]# chown -R nobody /home /samba ← 設置專用目錄歸屬爲 nobody

[root@localhost ~]# chmod 777 /home/samba/ ← 將專用目錄屬性設置爲 777,否則不能將文件放在共享文件夾中

[root@localhost ~]# smbpasswd -a root ← 將系統用戶 bsc(此用戶必須未已存在的,如果不存在,useradd name添加吧)加入到 Fedora Samba 用戶數據庫

New SMB password:  ← 輸入該用戶用於登錄 Samba 的密碼

Retype new SMB password:  ← 再次確認輸入該密碼

[root@localhost ~]#

 

第四步 啓動 samba服務

關閉防火牆

[root@localhost ~]#service iptables stop

 或者配置防火牆:

[root@localhost ~]#gedit /etc/sysconfig/iptables  ← 編輯 iptables 配置文件

-A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT  ← 找到此行,在下面添加如下行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

-A INPUT -p udp -m udp --dport 137 -j ACCEPT

-A INPUT -p udp -m udp --dport 138 -j ACCEPT

下面重新啓動iptables是修改生效

[root@localhost ~]# /etc/rc.d/init.d/iptables restart。顯示ok就行了

 

第五步 啓動 Fedora Samba 服務(含兩個守護進程:smb,nmb)

 

[root@localhost ~]# chkconfig smb on  ← 設置 Fedora Samba 自啓動

[root@localhost ~]# chkconfig --list smb  ← 確認 Fedora Samba 啓動標籤,確認 2-5 爲 on 的狀態

[root@localhost ~]#chkconfig nmb on  ← 設置 nmb 自啓動

[root@localhost ~]## chkconfig --list nmb  ← 確認 nmb 啓動標籤,確認 2-5 爲 on 的狀態

nmb 0:off 1:off 2:on 3:on 4:on 5:on 6:off

[root@localhost ~]#/etc/rc.d/init.d/smb start(或者service smb start)  ← 啓動 Fedora Samba 服務

Starting SMB services: [ OK ]

[root@localhost ~]# /etc/rc.d/init.d/nmb start  ← 啓動 nmb 服務

Starting NMB services: [ OK ]

 

通過以上配置samba服務器建立成功了,那就測試下吧:

 

打開xp開始 -> 運行―>\\你的linux的ip地址([root@localhost ~]# ifconfig查看ip),輸入用戶名和密碼,就可看到共享的文件夾了,好了,samba完全配置好了,但是真的行了嗎?當你試圖打開文件夾的時候發現,沒有權限。

解決方法如下:

在其它版本的linux中(AS5,AS4,Centos)中做如上設置後就可以正常訪問共享了,但是在fedora中卻不行,我們只能看到共享,但是訪問的時候會出現拒絕訪問的情況,這是爲什麼呢?因爲selinux對samba共享做了限制,我們只用把selinux中對samba的限制給解決了就行了,我們做如下設置就OK了:

如下所示:

samba_enable_home_dirs --> off

samba_export_all_ro --> off

samba_export_all_rw --> off

將其全部解限:

         #setsebool  samba_enable_home_dirs on

         #setsebool  samba_export_all_ro on

         #setsebool  samba_export_all_rw on

     我們可以用命令getsebool -a查看:

     查看上面三項是否爲on,打開的話你的共享應該就正常了。

或者關閉selinux

注意:如果使用service iptables stop 這種的方式關閉防火牆,則在下次使用samba時,要再次關閉防火牆。

  出現的問題:

1、在連接時出現:

主機與vmware fedora 9.0 共享文件 - 風之子 - 風之子

 

fedora 9.0 的防火牆未關

2、可以連接上目標機,但是進入文件夾時,出錯,如下圖:

 

主機與vmware fedora 9.0 共享文件 - 風之子 - 風之子
 
 

這是你的selinux對samba進行了限制,解決方法:

         #setsebool  samba_enable_home_dirs on

         #setsebool  samba_export_all_ro on

         #setsebool  samba_export_all_rw on

 


對於上面的兩個問題,因爲是每次開機都是要輸入上面的命令。你可以寫個shell,這樣每次只需運行這個shell 就得。

個人寫個shell如下,供大家參考:

samba-shell:

#samba start shell

#!/bin/bash

service iptables stop

setsebool  samba_enable_home_dirs on

setsebool  samba_export_all_ro on

setsebool  samba_export_all_rw on

echo

echo

service iptables status

getsebool -a |grep samba

service smb status

service nmb status

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章