?
前斷時間我們的開發機器硬盤壞了,修復后原來的文件無法再共享了,重新配置了samba,這篇文章是同事總結的,呵呵。好東西就自己收藏一下。
在
UNIX或者LINUX
服務器上安裝
samba
服務可以實現與
Windows
系統的文件共享和打印機共享。
關于Samba
有關
samba的資料網上很多,下面是我從網上找的一些關于samba的介紹:
Samba
組織的目標
——
Opening Windows To A Wider World
。他們之間的數據傳輸使用
SMB(Service Message Block)
協議
.
這是一個在傳輸層之上的協議
,
所以他可以支持很多不同異構系統的網絡互聯
(
比如
,Linux,Solaris,Windows
等
),Samba
之所以能夠工作
,
因為
SMB
協議模仿了
Windows
內核的文件和打印共享協議。微軟已經將SMB改名為公共因特網文件系統(CIFS,Common Internet File System ),并打算把它設計為Internet的標準協議。這在一定程度上是由于它想與最初的基于NetBIOS的SMB保持一定的距離。NetBIOS是Windows 網絡的一個偉大的工具,Microsoft使用NetBIOS實現了一個網絡文件/打印服務系統,但是為LAN設計的它卻注定了不能路由。? Samba執行了SMB/CIFS的一個版本,這個版本在很大程度上與大多數的Windows版本兼容。但是,無論是從Windows連接到Linux還是從Linux連接到Windows機器,Samba系統對于實現文件和打印服務來說總是很穩定的。我們可以通過Windows的網絡鄰居來輕松訪問安裝了Samba的UNIX/LINUX服務器。(更多的文檔見www.samba.org )。
一、安裝
samba
1.?????????
下載
samba for
Solaris
的安裝軟件包:
samba-3.0.10-sol9-sparc-local.gz
2.?????????
解壓并安裝samba軟件包:
#gunzip samba-3.0.10-sol8-sparc-local.gz
#pkgadd
–
d samba-3.0.10-sol8-sparc-local
安裝完畢后,到默認安裝目錄/usr/local下可以看到安裝的軟件包samba目錄。
二
、配置
samba
1.???
創建
samba
配置文件
samba安裝完成后
需要手工在
samba安裝
目錄
lib
目錄下創建文件名為
smb.conf
的配置文件。安裝程序不會創建該配置文件。
1.1 smb.conf文件的格式
smb.conf文件的格式有多個段構成,每段由段名開始,段名放在方括號中,下面是smb.conf文件的例子:
# cat /usr/local/samba/lib/smb.conf
# Samba config file created
# Date: 2006/03/25
# HuYingguang
[global]
workgroup = WORKFLOW
server string =??huyg??5.9
log file = /usr/local/samba/var/log.%m
max log size = 50
security = user
smb passwd file = /usr/local/samba/smbpasswd
unix charset =GBK
[emip]
comment = Network Logon Service
path = /export/home2/emip
writeable = yes
browseable = yes
guest ok = yes
[global]
段是全局變量
,
它設置了要加入的工作組
(
這里是
WORKFLOW),NetBIOS
名
,
安全參數
security
等參數
。
除了
[global]
段外
,
所有的段都可以看作是一個共享資源段可以有多組
,
段名是該共享資源的名字
,
而段里的參數就是共享資源的屬性。通過設置它的參數可以設置共享目錄路徑和訪問控制權限等。
1.2 下面看看一些重要
參數
的說明:
全局段參數
[global]
workgroup
設置
samba
服務器所要加入的工作組的名稱
,
另外如果在設置了
security = domain,
則
workgroup
可以指定域名。
????
netbios name
?
指定
samba
的
NetBIOS
名
,即
設置出現在“網上鄰居”中的主機名。默認情況下,則使用真正的主機名。
????
server string
設置服務器主機的說明信息
,
缺省為
samba %v,
即
samba
尾隨它的版本號
????
hosts allow
??
設置允許什么樣的
IP
地址的主機訪問
Samba
服務器。默認的情況下
,hosts allow
選項被注釋
,
表示允許所有
IP
地址的主機訪問。
????
guest account
設置當訪問那些被設置了“guest ok=yes”參數的資源時所要使用的帳號名。所設的帳號必須是在/etc/passwd文件中存在的用戶。
????
log file
= /usr/local/samba/var/log.%m???
設置日志文件。“%
m”表示
Samba服務器為每一個連接的機器使用一個單獨的日志文件,指定文件的位置,名稱。Samba會自動將%m轉換成連接主機的NetBios名。
????
max log size
?????? 指定日志文件的最大容量(KB),設置為0,表示沒有限制。默認值為5000。
????
max disk size
設置能夠共享的最大磁盤空間
(
MB
)
,默認值為0,表示不作任何限制。
????
max open file
設置同一客戶端最多能打開文件的數目,默認值為10000個。
????
security
????? 設置Samba服務器的安全等級,默認
為
user。
security
共有四種選項設置:
??????????????????
share
??? 用戶不需要帳號及密碼可以登陸Samba服務器。
user
由提供服務的Samba服務器檢查用戶帳號及密碼。
server
檢查帳號及密碼的工作可指定另一臺Samba服務器負責。
domain
需要指定一臺Windows NT/2000/XP服務器(通常為域控制器),以驗證用戶輸入的帳號及密碼。
????
password server
??? 如果安全等級為“server”或“domain”,則使用此選項指定要驗證密碼的主機名。
????
encrypt passwords? 設置當Samba客戶端將帳號及密碼傳送到服務器端時,是否采取密碼加密的方式,默認值為no。
????
smb passwd file
??? 設置在Samba服務器上存放加密的密碼文件的位置(Samba服務器與
Unix是
采用不同的密碼文件)。
????
config file
?? 設置此項可以用另一個配置文件覆蓋缺省的配置文件,如果文件不存在,該項無效。這使得samba的配置更靈活,讓一臺Linux
/Unix
服務器模擬多臺不同配置的NT 服務器
。可以
讓訪問
samba
服務器的客戶機使用
自己的配置文件
,如:
先在
/usr/localsamba/lib目錄
下為
host1
配置一個名為
smb.conf.host1
的文件
,然后
在缺省的
smb.conf
里加這行
:config file = /usr/localsamba/lib/smb.conf.%m。這樣host1登錄samba服務器時就會使用smb.conf.host1配置文件,其他客戶端則使用默認的配置文件。
????
d
eadtime
設置該
參數用于切斷一個不活動的連接。當一個沒有打開任何文件的連接的不活動的時間超過datetime指定的的時間后,samba就自動切斷這個連接。默認的值是零,samba不自動切斷任何連接。(值為整數,單位分鐘)
共享段參數
[emip]
????
comment
?
對共享的描述
,
可以是任意的字符串
????
path
????
設置共享資源的服務路徑
,
用
%u %m
這樣的宏來代替路徑里的
unix
用戶和客戶機的
Netbios
名。例如
:path = /home/emip/%u這樣
用戶在連接到這共享時具體的路徑會被他的用戶名代替。
????
writeable設置指定的共享路徑是否可以寫,yes或no
????
browseable
??? 指定共享是否可以瀏覽,默認是yes?
????
available指定共享資源是否可用,默認是yes,設為no則關閉該資源的共享服務,用戶無法連接到該資源上。
????
exec 和 postexec?? 、root preexec 和 root postexec? 指定在用戶與共享資源在連接和斷開時在服務器上執行一個命令,這兩對參數很有用,區別是root preexec 和root preexec 是以root的權限運行。?
load printers
? 指定在samba啟動時是否自動把printcap文件里的所有打印機加載,從而可以在瀏覽清單里看到所有的打印機,默認是yes?
printable
? 指定用戶能不能打印,默認是no,要讓一個打印共享可以讓用戶使用,必須設為yes?
print name
?
打印機名
?
printer drive
r?
打印機的驅動類型,這個參數可以讓WINDOWS知道遠程打印機上的類型,具體的值可以參考在WINDOWS里安裝打印機出現選擇打印機類型時的打印機類型。
admin users
?? 參數用來賦予某用戶為共享資源的管理員權限。缺省是admin users = no
valid users
?? 指定共享資源的有效用戶,即允許訪問該資源的用戶。多個用戶用
逗號分隔
invalid users
指定不允許訪問該共享資源的用戶
max connections
???
指定一個服務的最大連接數目
在
samba安裝目錄:samba/doc/samba/examples/smb.conf.default文件中有詳細的參數說明。
2.???
測試Samba配置文件格式是否正確
設置好smb.conf文件之后,執行下面的命令測試smb.conf的設置語法是否正確。
# cd /usr/local/samba/bin/testparm
Load smb config files from /usr/local/samba/lib/smb.conf
Processing section "[emip]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
出現如上信息表示smb.conf文
配置
正確。
3.???
設置
samba密碼文件
如果配置文件中
samba服務器的
安全等級設為:security = user就需要設置smb password file參數并創建參數值所指定的密碼文件。創建方法如下:
#cat /etc/passwd | mksmbpasswd.sh? >? /
usr/local
/samba/smbpasswd
此命令將未加密的/etc/passwd文件轉換成加密的smbpasswd文件。
# chmod? 500? /etc/samba
# chmod? 600? /etc/samba/smbpasswd
創建完成之后再利用
smbpasswd
命令
,
設置
/ usr/local/samba/smbpassword
文件中每個帳號所使用的密碼。下面以
emip用戶
為例。注意:此處設置的密碼是
emip
要訪問Samba服務器的密碼,并非登錄
Solaris
主機的密碼,默認設置
”
UNIX password? sync=YES
”
, 則登錄
Solaris
主機的密碼將改變,與Samba服務器的密碼一致。如果希望這兩個密碼不一致,則設置
”
UNIX password sync=NO
”
)
root@smb_server? root]# smbpasswd emip
New SMB password: 此處輸入密碼
Retype SMB password: 重新輸入密碼
三、Samba服務器的啟動與停止
1.???
修改啟動shell腳本
samba server
服務是
由
3
個守護進程組成:
nmbd
進程
Netbios
名稱服務器
,
該進程使用
UDP
協議提供
Netbios
名稱服務和瀏覽支持,處理命名注冊和決策請求。該進程應當是被首先啟動。
smbd
進程
SMB
服務器,使用
TCP
協議給
SMB
客戶提供文件和打印服務;應當在
nmbd
進程后立即啟動。
Winbindd
進程 當
Samba
服務器是
windows NT
或
ADS
域中的成員時,此時當啟動該守護進程。
修改配置文件路徑和服務器應用程序進程為正確的位置,并加入啟動
/
停止成功的信(注意啟動的先后順序):
將
/etc/init.d/samba
文件中
start
和
stop
部分:
start)
??????? [ -f /etc/sfw/smb.conf ] || exit 0
??????? /usr/sfw/sbin/smbd -D
??????? /usr/sfw/sbin/nmbd -D
??????? ;;
stop)
??????? pkill smbd
??????? pkill nmbd
修改為:
start)
??????? [ -f /
usr/local/samba/lib/
smb.conf ] || exit 0
???????
/usr/local/samba/sbin/smbd -D?? && echo "smbd started."
???????
/usr/local/samba/sbin/nmbd
–
D? && echo "nmbd started."
??????????? /usr/local/samba/sbin/winbindd? && echo "winbindd started."
??????? ;;
stop)
???????
pkill smbd? && echo "smbd stoped."
???????
pkill nmbd? && echo "nmbd stoped."
pkill winbindd?? && echo "winbindd stoped."
2.???
啟動/停止samba服務器
執行下面的命令來啟動Samba服務器:
# /etc/init.d/samba start
執行下面的命令來停止Samba服務器:
# /etc/init.d/samba stop
四、
Samba
服務管理配置工具
1.???
Samba實用組件
Samba
提供了幾個實用的組件
(
位于
/usr/local/samba/bin
目錄下面
):?
smbclient?? SMB
客戶程序
,
用來存取
SMB
服務器上的共享資源
;?
testprns???????
測試服務器上打印機訪問的程序
;?
testparms??
測試
Samba
配置文件的正確性的工具
;?
smbstatus??
工具可以列出當前
Samba
服務器上的連接
;?
smbtree????
工具來顯示共享目錄樹形結構。
Smbpasswd?? 工具用來設定用戶密碼;?
swat ?????? samba
的
Web
管理工具
;
通過這些工具我們可以更好的管理配置samba服務器。
例如:
#smbpasswd
–
a username 添加訪問的共享資源的用戶
#smbclient -L hostname 顯示samba server上的共享資源
2.???
web頁面管理配置工具swat
這個頁面管理工具可以配置幾乎所有的Samba參數,提高了Samba的使用便捷性和易用性。在首頁它還提供了命令和參數的幫助文檔手冊。
Samba Web 管理工具 (SWAT) 是一個通過 inetd 運行的服務程序。 因此, 需要它加入inet.d守護進程:
#Vi /etc/services
加入 swat??????????? 901/tcp
#vi /etc/inetd.conf
加入 swat stream tcp nowait/400 root /usr/local/samba/bin/swat swat
修改重新啟動
/usr/sbin/inetd
守護進程
,
這里的
Swat
使用了
TCP901
端口監聽,在瀏覽輸入:
http://x.x.x.x:901
進入
web
管理頁面。
您將首先使用系統的
root
帳號登錄。只要成功
地登錄進了
Samba
配置頁面,就可以瀏覽系統的文檔,或從
Globals(
全局
)
選項卡開始配置了。