歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux配置 >> Samba服務配置詳解

Samba服務配置詳解

日期:2017/2/27 14:59:36   编辑:Linux配置
Samba是一種自由軟件包,用來讓Unix系統的操作系統與微軟Windows操作系統的SMB/CIFS(Server Message Block/Common Internet File System)網絡協定做連結。和windows上的網上鄰居原理是一樣的。通過SMB協議可以實現資源共享及打印機共享。Samba是Windows與Unix系統OS(Operating System的縮寫,操作系統:windows、linux、Unix、Mac等)之間搭建起的一座橋梁,可以實現資源共享,可以像FTP這樣使用。
SAMBA的工作原理:
步驟1:協議協商
步驟2:建立連接
步驟3:資源共享
步驟4:斷開連接
Samba服務主要安裝包為前三個安裝包:
samba-2.2.7a-7.9.0.i386.rpm //Samba的服務端軟件(第一張鏡像盤)
samba-client-2.2.7a-7.9.0.i386.rpm //Samba客戶端軟件(第一張鏡像盤)
samba-common-2.2.7a-7.9.0.i386.rpm //包括Samba服務器和客戶端都需要的文件(第一張鏡像盤)
samba-swat-2.2.7a-7.9.0 //Samba的WEB配置工具(第一張鏡像盤)
redhat-config-samba-1.0.4-1.noarch.rpm //Samba的GUI配置工具(第一張鏡像盤)
samba-swat-2.2.7a-7.9.0.i386.rpm //Samba的Web配置工具(在第三張鏡像盤)
samba的主配置文件是/etc/samba/smb.conf
[root@localhost root]# rpm -qa|grep samba
//顯示是否安裝的samba服務
如果沒有安裝,“主菜單”--“系統設置”--“添加/刪除應用程序”--“打開軟件包”--“windows 文件服務器”--“更新”,或安裝linux第三塊鏡像盤中的rpmdb輔助安裝包,然後切換到第一張linux鏡像盤,用mount /dev/cdrom /mnt/cdrom命令將第一張鏡像盤掛載,安裝samba主程序包,samba-client客戶端軟件包,還有samba的工具包samba-common.用,#rpm –ivh –aid samba*.rpm。如果安裝samba所需的依賴軟件包都輔助安裝了,就不用一個一個找依賴包數據包安裝上去,才安裝軟件包了。一次性安裝。
[root@localhost root]# smb
//安裝好後,samba服務端及客戶端工具也安裝上去了,輸入smb按兩次Tab鍵就會彈出以smb開頭的工具出來。這些工具都存放在/usr/bin目錄中。
smbadduser smbcontrol smbmount smbspool smbumount
smbcacls smbd smbpasswd smbstatus
smbclient smbmnt smbprint smbtar
[root@localhost root]# service smb start
//啟動samba服務可以上面的命令啟動,也可以在主菜單--系統設置--服務器設置--服務--在smb前打勾--開始--啟動samba服務,重新啟動服務時service smb restart命令
[root@localhost root]# ls -l /usr/sbin |grep mbd
//顯示兩個超級用戶服務器,是Samba的核心兩個守護進程,一個是nmbd,一個是smbd,在服務器啟動到停止期間持續的運行。Smbd負責監聽139TCP端口,nmdb負責監聽137TCP和137UDP端口。可以在/etc/samba/smb.conf主配置文件中了解smbd和nmbd全部配置信息,smbd進程的主要作用是處理來到的SMB數據包,為使用該數據包的資源與Linux協商,而nmbd進程使得其他主機(或工作站)能浏覽Linux服務器。
-rwxr-xr-x 1 root root 632276 2003-03-14 nmbd
-rwxr-xr-x 1 root root 1794708 2003-03-14 smbd
[root@localhost root]# pstree |grep mbd
//查看服務器是否啟動
|-nmbd
|-smbd
[root@localhost root]# pgrep smbd
//查看smbd是否運行
[root@localhost root]# pgrep nmbd
//查看nmbd是否運行
[root@localhost root]# netstat -tlnp|grep smb
//查看smb的139端口和445端口是否被防火牆封掉,只有一139個也行了
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN
9193/smbd
[root@localhost root]# iptables –F
//如果不懂開放端口,就用上面的命令清楚防火牆規則,我也是新手。呵呵。或用#/sbin/iptables –F命令清除是一樣效果的。
查看windows xp的IP配置,開始--運行(WIN+R)--cmd --ipconfig/all
[root@localhost root]# netconfig
//用netconfig網絡配置工具進行配置,如果你不想這樣配置也可以用vi 打開編輯/etc/sysconfig/network-scripts/ifcfg-eth0配置文件,
DEVICE=eth0 //網卡設備別名
ONBOOT=yes //重啟系統時啟動該服務
BOOTPROTO=static //使用靜態IP類型
IPADDR=172.19.22.85 //IP地址是172.19.22.85
NETMASK=255.255.255.0 //子網掩碼是255.255.255.0
GATEWAY=172.19.22.254 //網關IP是172.19.22.254
BROADCAST=172.19.22.255 //網絡的廣播地址.
NETWORK=172.19.22.85 //網絡的初始地址
USERCTL=no//非root用戶沒有控制設備的權限
PEERDNS=no //dhcp類型一般都默認為yes,讓服務器修改/etc/resolv.conf文件.靜態默認為no
TYPE=Ethernet //以太網類型
按Esc,然後按:wq保存退出
//提示是否進行網絡設置,點擊yes
不要選擇Use dynamic IP configuration這是自動獲取IP,要設置我們想要的IP 地址,及子網掩碼。IP address:172.19.22.85,netmask:255.255.255.0網關和主DNS服務不用到先不設置用tab建切換到OK,回車。 [root@localhost root]# service network restart
//重新啟動網絡服務器
[root@localhost root]# ifconfig
//用inconfing命令查看是否配置成功。
[root@localhost root]# ping -c 4 172.19.22.84
//網絡是可以ping通的,ping 加一個選項c,跟參數4,意思是發送4次數據包。到指定的主機中。返回的信息顯示是通的 //在windows xp創建一個文件夾,如:在F盤創建一個windows,在windows文件夾,並設為共享,設置共享名為share,共享的文件夾其實為windows,然後再windows文件夾中創建一個linux.txt文件,如果不能設置共享,就要安裝網絡向導了,然後關掉防火牆。 現在我們開始在linux下借助於smbmount命令來實現網絡驅動器映射,具體命令是:
smbmount //windowsHostName/ShareName /mnt/smbdir -U administrator
說明:此處的sharename指代windows共享目錄名稱,smbdir指代掛載點名稱,U指代登陸windows系統的用戶名,administrator指代登陸windows主機下的共享文件夾sharename映射為/mnt/smbdir.目錄具體步驟是:
在實現網絡驅動映射前,首先在linux下建個文件夾:
[root@localhost root]# mkdir -p /mnt/linux
//在/mnt/目錄下建一個名為linux的目錄掛載點,如果/mnt不存在,就先創建一個/mnt目錄在建一個linux目錄,如果/mnt存在,就直接建linux目錄。這就是mkdir 帶一個參數-p的作用。
[root@localhost root]# smbmount //172.19.22.84/share /mnt/linux -U administrator
//用smbmount掛載工具掛載windows的共享目錄到,/mnt/linux目錄中,如果windows用戶沒有設置密碼,直接回車。如果設置密碼,輸入windows登陸用戶密碼,回車會行了。
[root@localhost root]# ls -l /mnt/linux/
//顯示/mnt/linux目錄下是否有linux.txt文件
[root@localhost root]# smbclient -L //172.19.22.84
//smbmount是samba的Linux的客戶端,查看windows的共享資源
接下來配置,用samba服務將linux下的共享目錄共享出來
Linux下有samba有四種安全級別,即Share、User、Server、Domain,它們的安全級別由低到高,在配置文件中具體由security參數指定。其中,Share級是指用戶不需要賬戶和口令即可登錄服務器;User級是Samba服務器默認的安全級別,是指服務器負責檢查登陸者的賬戶和口令;Server級是指賬戶和口令的檢查由另外的Samba或Windows服務器負責;Domain級是指由一台Windows NT/2000域服務器負責檢查賬戶和口令。用戶在配置Samba服務器時,可以根據所需要的不同安全等級來具體配置
[root@localhost root]# cd /etc/samba/
//切換到/etc/samba目錄
[root@localhost samba]# mv smb.conf smb.conf.bak
//將smb.conf文件改名為smb.conf.bak
[root@localhost samba]# grep -v "#" smb.conf.bak > ./smb.conf
//顯示去掉前面“#”說明,並顯示文件的內容重定向導到當前目錄的smb.conf文件中。
[root@localhost samba]# vim smb.conf
//打開編輯smb.conf配置文件
[global] //設置全局參數global
workgroup = MYGROUP //windows的工作組
netbios name=Linuxsamba //設置主機名,Linux系統的主機名
server string = Samba Server //samba服務說明
; hosts allow = 192.168.1. 192.168.2. 127.
printcap name = /etc/printcap //設置打印機配置文件路徑
load printers = yes //設置是否允許共享打印
printing = cups //設置目錄文件的路徑
; guest account = pcguest //

log file = /var/log/samba/%m.log //設置目錄文件的路徑
max log size = 0 //對日志文件的文件長度不作限制
security = share //設置User級的安全等級
; password server = <NT-Server-Name>
; password level = 8
; username level = 8
encrypt passwords = yes //設置用戶采用口令加密
smb passwd file = /etc/samba/smbpasswd //設置口令文件的路徑
; ssl CA certFile = /usr/share/ssl/certs/ca-bundle.crt
unix password sync = Yes //設置Samba用戶和Linux系統賬戶同步
passwd program = /usr/bin/passwd %u //設置本地口令程序
passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*
pam password change = yes //設置用戶使用pam更改口令
; username map = /etc/samba/smbusers
; include = /etc/samba/smb.conf.%m
obey pam restrictions = yes //認證用戶時,服從pam管理
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 //設置服務器和客戶間會話的Socket選項
dns proxy = no //不為客戶做DNS查詢
[homes] //設置用戶的主目錄共享
comment = Home Directories //提供用戶主目錄服務
browseable = no //其他用戶不能浏覽該用戶主目錄
writable = yes //允許用戶進行寫操作
valid users = %S
create mode = 0664 //創建文件模式制定的權限為當前用戶為讀寫,組用戶為讀寫,其他用戶為讀
directory mode = 0775//創建目錄模式為當前用戶為讀寫執行權限,組用戶為讀寫執行權限,其他用戶為讀執行權限
; map to guest = bad user
; [netlogon] //網絡登錄服務共享名
; comment = Network Logon Service //網絡登錄說明
; path = /usr/local/samba/lib/netlogon //網絡登錄的共享文件夾路徑
; guest ok = yes //是否允許匿名用戶訪問
; writable = no //是否允許匿名用戶讀操作
; share modes = no //共享模式默認為否
[Profiles] //共享目錄為profile
; path = /usr/local/samba/profiles //共享目錄路徑
; browseable = no //是否可浏覽的
; guest ok = yes //是否允許匿名用戶訪問
[printers] //設置全部打印機共享
comment = All Printers //共享說明為所有的打印共享
path = /var/spool/samba //打印共享目錄為/var/spool/samba
browseable = no //浏覽時是否顯示
guest ok = no //是否允許匿名用戶訪問
writable = no //是否允許匿名用戶寫操作
printable = yes //是否允許打印

;[tmp] //設置共享目錄名為tmp
; comment = Temporary file space //共享目錄說明
; path = /tmp //共享目錄
; read only = no //是否為只讀操作
; public = yes //是否是公用的

;[public] //公用目錄共享名
; comment = Public Stuff //共享說明
; path = /home/samba //共享目錄的路徑
; public = yes //是否公開目錄
; writable = yes //是否有寫的權限
; printable = no //是否允許打印
; write list = @staff //staff組有寫的權限

;[fredsprn]
; comment = Fred's Printer //共享目錄說明
; valid users = fred //說明訪問fredsprn的用戶是fred
; path = /home/fred //共享路徑
; printer = freds_printer //打印機類型
; public = no //是否允許匿名用戶訪問
; writable = no //目錄是否可寫
; printable = yes //是否可以打印

;[pchome]
; comment = PC Directories
; path = /usr/local/pc/%m
; public = no
; writable = yes
;[myshare] //共享目錄名
; comment = Mary's and Fred's stuff //共享目錄說明
; path = /usr/somewhere/shared //共享目錄路徑
; valid users = mary fred //允許mary 和fred用戶訪問
; public = no //是否允許匿名用戶訪問
; writable = yes //是否有寫的權限
; printable = no //是否允許打印
; create mask = 0765 //創建文件的默認的權限,當前用戶有讀寫執行,組有讀寫權限,讀執行權限
現在來試一下share安裝級別,找到security=user,將其改為security=share,如果很多顯示文件,可以通過下列方式尋找,在命令模式中輸入/security 然後回車就行跳到安全級別security單詞位置先查了一遍smb.conf文件所有的單詞都標上另特定的顏色,最後跳到第一個security單詞位置,按i進入編輯模式。按左右光標進行向左向右移動,按上下光標進行上下移動。 編輯好後,將光標移到末尾[myshare]共享目錄這行,按Esc鍵轉為命令模式。要將[myshare]共享目錄名以後的樣本前的分號去掉,將光標定在[myshare]行 在命令模式,輸入”:”,”.”點代表“當前行”,”,”逗號“到”,“$”最後一行,”s”替換“/^”行首的“;”,”\”轉意符合,“//”刪除 如果到這部會發現[myshare]的分號沒有被刪除,可以手動刪除 然後保存退出 [root@localhost samba]# mkdir -p /usr/somewhere/else/public
//創建目錄public目錄,如果前面的目錄不存在,就同時創建。
[root@localhost samba]# mkdir -p /usr/somewhere/shared
//創建目錄與共享目錄名下的path對應,如果沒有shared前面的目錄不存在,先創建,如果存在不會提示
[root@localhost samba]# service smb restart
//重啟smb服務,讓配置生效 開始—運行或(win+R)在打開輸入linux的IP地址:\\172.19.22.85,然後按確定 可以看到myshare、public共享目錄及打印機和傳真共享 在目錄中創建word文件不允許創建 [root@localhost samba]# ls -ld /usr/somewhere/else/public/
//因為window訪問屬於其它用戶,從顯示的詳細的文件信息中看出,其它用戶只有執行的權限,其它用戶對目錄沒有讀寫的權限
drwxr-xr-x 2 root root 4096 4月 12 22:19 /usr/somewhere/else/public/
[root@localhost samba]# chmod o+rw /usr/smewhere/else/public/
//設置其它用戶的權限,其它用戶可以讀寫 //關掉窗口在重新打開,可以對目錄進行讀寫操作了 如果訪問myshare是不允許訪問的,安全級別不是share不能訪問。 [root@localhost samba]# useradd mary
//創建mary用戶
[root@localhost samba]# useradd fred
//創建fred用戶
[root@localhost samba]# smbpasswd -a mary
//設置smb用戶mary的密碼,可以用smbpasswd +用戶,進行修改密碼,加選項參數-d:刪除用戶權限,無法訪問。-x:刪除用戶。-e:使用戶重新恢復權限。-m:加成信任主機賬戶
New SMB password:
Retype new SMB password:
unable to open passdb database.
Added user mary.
[root@localhost samba]# smbpasswd -a fred
//設置smb用戶fred的密碼
New SMB password:
Retype new SMB password:
Added user fred.
[root@localhost samba]# [root@localhost samba]# grep mary /etc/passwd
//查看mary用戶密碼,如果將:x:中的x去掉,該用戶就不要用密碼,就可以登錄了。
mary:x:501:501::/home/mary:/bin/bash
[root@localhost samba]# grep fred /etc/passwd
fred:x:502:502::/home/fred:/bin/bash [root@localhost samba]# more /etc/samba/smbpasswd
//smb用戶的密碼被加密保存在/etc/samba/smbpasswd文件中 將Security=share的級別修改為security = user,然後重啟smb服務 在訪問就會彈出一個連接到172.19.22.85的對話框,要求輸入用戶及密碼 訪問一次後,mary的用戶和密碼被系統記住了,如果在訪問會直接跳到下面的界面。要想讓目錄可以讀寫,要同時滿足兩條件,一個是smb.conf配置權限設置,一個是目錄權限設置 [root@localhost samba]# ls -ld /usr/somewhere/shared/
//查看權限,其他用戶是不可讀寫的
[root@localhost samba]# chmod o+rw /usr/somewhere/shared/
//設置其它用戶的權限為讀寫
[root@localhost samba]# ls -ld /usr/somewhere/shared/
//查看修改的權限,其它用戶是可讀可寫可執行
drwxr-xrwx 2 root root 4096 4月 12 22:19 /usr/somewhere/shared/ //用fred用戶登錄的,如果以前做的是服務器記住訪問用戶,當重啟Linux系統後就用fred用戶登錄 //可讀可寫可了 練習security=user安全級別。設一個簡單的共享。
編輯samba主配置文件/etc/samba/smb.conf
[root@localhost root]# cd /etc/samba
//切換到/etc/samba目錄
[root@localhost samba]# mv smb.conf smb.conf.bak
//將smb.conf改名為smb.conf.bak,進行備份
[root@localhost samba]# grep -v "#" smb.conf.bak > ./smb.conf
//去掉smb.conf.bak文件以“#”開頭的說明信息,顯現剩下的內容重定向導到當前目錄的smb.conf文件中
[root@localhost samba]# vim smb.conf
//打開編輯smb.conf文件
[redhat] //共享目錄名為redhat
comment=redhat is share directory //說明redhat是一個共享目錄
path=/mnt/share //共享目錄的路徑
valid users = redhat @root //只用redhat用戶及root超級用戶可以訪問
wirte list = redhat //只有redhat用戶有寫的權限
writable = yes //說明目錄是可寫的
public = no //是否是公用的
printable = yes //是否可以打印
create mode = 0664 //創建文件後,文件的權限
directory mode = 0775 //創建目錄後,目錄的權限

然後保存退出。
[root@localhost samba]# useradd redhat
//創建一個redhat用戶
[root@localhost samba]# smbpasswd -a redhat
//對redhat添加smb密碼,與passwd redhat沒有關系呀,這個是登陸本機用戶密碼。
[root@localhost samba]#smbpasswd -a root
//給root用戶添加smb密碼。
[root@localhost samba]# mkdir -p /mnt/share
//創建路徑目錄,如果/mnt不存在,同時創建。
[root@localhost samba]#chmod 0777 /mnt/share
//給用戶添加,當前用戶,組,及其他用戶,對目錄/mnt/share有讀寫執行的權限。
[root@localhost samba]# service smb restart
//重啟smb服務,讓配置文件重新加載
最好在win7進行訪問,win+R(開始--運行):\\IP(linux下的IP地址)回車。
用戶輸入:redhat
密碼:***(你設置的redhat的smb密碼)
Copyright © Linux教程網 All Rights Reserved