linuxSAMBA共享
轉自http://blog.chinaunix.net/uid-20537084-id-2977850.html
?
?
經常要在Windows與Linux之間共享文件,Samba是一個很常見的選擇:Linux運行Samba服務,Windows訪問Linux上共享的文件。在不需要用戶訪問控制的場景下,Samba服務的安全級別設置為共享(share)就可以了。我的需求是想對Samba服務的訪問者進行身份驗證,所以選擇用戶安全級別(user)。user級別要求用戶訪問samba服務時提供用戶名和密碼,而且身份驗證由 samba server 負責。下面是用smbpasswd方式做的,因我的需求很單一,所以Samba的配置文件也非常簡單。這里做個筆記記錄一下以備忘。
一、準備Samba軟件
1. 安裝Samba相關軟件包,安裝過程略
2. 備份samba配置文件,我們后面要自己從頭新建一個配置文件
sudo mv /etc/samba/smb.conf /etc/samba/smb-original.conf
sudo touch /etc/samba/smb.conf
二、工作場所
我們在/etc/samba目錄下工作,涉及的文件都在這個目錄下。
三、相關文件
用smbpasswd完成user安全級別需要修改或者生成的文件只有下面3個:
/etc/samba/smb.conf ? ? ? ?# samba配置文件,大家都懂的
/etc/samba/smbusers ? ? ? ?# 用來定義用戶名映射,比如可以將root換成administrator、admin等
/etc/samba/smbpasswd ? ? ? # samba密碼存放文件
下面簡單描述一下這3個文件。
四、smb.conf 文件
samba自帶的smb.conf文件注釋很多,例子給的也不少,容易讓人覺得這個文件很復雜,其實它的框架很簡單,主要包括下面幾個小節:
[global]
?
[homes]
?
[printers]
?
[自定義小節]
其中[自定義小節]可以有多個,分別共享不同的目錄。
我不關心打印機共享,所以注釋掉了[printers]小節。
我也不想讓用戶登陸samba之后看到自己的“家”目錄,所以也注釋掉了[homes]小節。因為登陸samba server的用戶也同時必須是linux系統的用戶,即存在于/etc/passwd文件中的用戶,所以每個samba用戶會有自己的“家”目錄,在/home下,目錄名稱是使用者自己的帳號。
我們主要關注[global]小節和[自定義小節],[global]小節中我們此次關注的重要參數有以下幾個:
workgroup = WORKGROUP
說明:指明共享所在的工作組,可以是NT域名、工作組名
server string = samba server on ubuntu
說明:客戶端看到的服務器的描述信息
netbios name = ubuntu_smb
說明:設置Samba Server的NetBIOS名稱。如果不填,則默認會使用該服務器的DNS名稱的第一部分。netbios name和workgroup名字不要設置成一樣了
interfaces = 127.0.0.0/8 eth0
說明:設置Samba Server監聽哪些網卡,可以寫網卡名,也可以寫該網卡的IP地址
hosts allow = 192.168.1. 192.168.163. 192.168.153.
說明:表示允許連接到Samba Server的客戶端,多個參數以空格隔開。可以用一個IP表示,也可以用一個網段表示。我這里只允許3個網段里的所有客戶端訪問samba server。
security = user
說明:設置用戶訪問Samba Server的驗證方式,一共有四種驗證方式。?
1. share:用戶訪問Samba Server不需要提供用戶名和口令, 安全性能較低。?
2. user:Samba Server共享目錄只能被授權的用戶訪問,由Samba Server負責檢查賬號和密碼的正確性。賬號和密碼要在本Samba Server中建立。?
3. server:依靠其他Windows NT/2000或Samba Server來驗證用戶的賬號和密碼,是一種代理驗證。此種安全模式下,系統管理員可以把所有的Windows用戶和口令集中到一個NT系統上,使用Windows NT進行Samba認證, 遠程服務器可以自動認證全部用戶和口令,如果認證失敗,Samba將使用用戶級安全模式作為替代的方式。?
4. domain:域安全級別,使用主域控制器(PDC)來完成認證。
我只需要user級別的安全驗證就可以了。
username map = /etc/samba/smbusers
說明:用來定義用戶名映射,比如可以將root換成administrator、admin等。要事先在smbusers文件中定義好。比如:root = administrator admin,這樣就可以用administrator或admin這兩個用戶來代替root登陸Samba Server,以保護Linux的系統賬號root。后面會介紹這個文件。
encrypt passwords = true
說明:是否將認證密碼加密。因為現在windows操作系統都是使用加密密碼,所以一般要開啟此項。
passdb backend = smbpasswd
說明:passdb backend密碼驗證后端。目前支持的有三種:smbpasswd、tdbsam和ldapsam。其中smbpasswd方式是使用smb自己的工具smbpasswd來給系統用戶(真實用戶或者虛擬用戶)設置一個Samba密碼,客戶端就用這個密碼來訪問Samba的資源。smbpasswd文件默認在/etc/samba目錄下,不過有時候要手工建立該文件。這里我選用smbpasswd。
smb passwd file =/etc/samba/smbpasswd
說明:用來定義samba用戶的密碼文件。smbpasswd文件如果默認不存在,要手工新建。后面有介紹這個文件。
log file = /var/log/samba/log.%m
說明:設定 samba server 日志文件的儲存位置和文件名(%m代表客戶端主機名)。
max open files = 1000
說明:同一客戶最多能打開的文件數目
socket options = TCP_NODELAY
說明:用來設置服務器和客戶端之間會話的Socket選項,可以優化傳輸速度。
[自定義小節]小節主要的參數如下:
comment = code
說明:comment是對該共享的描述,可以是任意字符串。
path = /home/songyd/code
說明:path用來指定共享目錄的路徑。
writable = yes
說明:writable用來指定該共享路徑是否可寫。這里我們允許寫入,以滿足文件雙向共享。
browseable = yes
說明:browseable用來指定該共享是否可以瀏覽。
available = yes
說明:available用來指定該共享資源是否可用。
五、smbusers 文件
該文件格式如下:
系統用戶名 = 映射的虛擬賬號1,映射的虛擬賬號2,...
例如:
songyd = admin
songyd用戶是samba用戶,也是一個Linux系統的賬號,為了不讓samba用戶知道存在songyd這個系統賬號,可用這個文件實現songyd賬號到虛擬賬號admin的一個映射。只需告訴使用者用admin賬號登陸即可,這樣就保護了songyd這個賬號。當然此時用songyd賬號登陸samba也是可以的。
六、smbpasswd 文件
該文件格式如下:
name:uid:Lanman Password Hash:NT Password Hash:Account Flags:Last Change Time:
該文件可能默認并不存在,需要手動建立。建立后使用以下命令添加samba賬號songyd的密碼:
sudo smbpasswd -a songyd
這個命令會在/etc/samba/smbpasswd中寫入類似如下內容:
songyd:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:BC53166B76BB840735D6AB4438B4CD5E:[U ? ? ? ? ?]:LCT-4EA2F59B:
這些內容是命令自己添加的,我們不用去管。
【注意】有時發現smbpasswd命令即使執行沒有錯誤,但/etc/samba/smbpasswd中卻沒有添加任何內容。這是由于smb.conf的passdb backend參數配置不正確,此參數必須設置為smbpasswd,這時smbpasswd -a songyd才會在/etc/samba/smbpasswd文件中添加記錄。
七、最后結果
[global]
? ? workgroup = WORKGROUP
? ??server string = samba server on ubuntu
? ??netbios name = ubuntu_smb
? ??interfaces = 127.0.0.0/8 eth0
? ??hosts allow = 192.168.1. 192.168.163. 192.168.153.
? ??security = user
? ??username map = /etc/samba/smbusers
? ??encrypt passwords = true
? ??passdb backend = smbpasswd
? ??smb passwd file =/etc/samba/smbpasswd
? ??log file = /var/log/samba/log.%m
? ??max open files = 1000
? ??socket options = TCP_NODELAY
?
;[homes]
;? ?comment = home directories
; ? browseable = no
; ? writable = yes
; ? valid users = %S
; ? create mode = 0664
?
;[printers]
; ? printable = Yes
; ? browseable = No
; ? path = /var/spool/samba
?
[code]
? ??comment = code
? ??path = /home/songyd/code
? ??writable = yes
? ??browseable = yes
? ??available = yes
八、重啟服務
smb.conf修改完成,smbusers也已添加完畢,smbpasswd文件也已通過命令成功添加了記錄,下面重啟samba服務即可。Samba 有兩個守護進程(nmbd 和 smbd),需要運行它們Samba 才能正常工作。
nmbd 是一個服務器,它可以理解和響應 NetBIOS over IP 命名服務請求,比如 Windows 95/98/ME、Windows NT、Windows 2000、Windows XP 和 LanManager 客戶機等 SMB/CIFS客戶機產生的請求。它還參與瀏覽協議,從而構建 Windows 網絡鄰居視圖。
smbd 是服務器守護進程,它向 Windows 客戶機提供文件共享和打印服務。這個服務器使用 SMB(或CIFS)協議向客戶機提供文件空間和打印服務。
sudo service smbd restart
sudo service nmbd restart
九、軟件環境
Linux系統 ?:ubuntu 11.10
Samba版本:Samba 3.5.11
轉載于:https://blog.51cto.com/weimouren/1793605
總結
以上是生活随笔為你收集整理的linuxSAMBA共享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: svg学习网站
- 下一篇: 关于HTML5标签不兼容(IE6~8)