SAMBA軟件用於在不同平台之間(Linux/Unix/Windows)共享文件。
1
SMB:Service Message Block 程序全名
CIFS: Common Internet FileSystem 程序全名
2
samba啟動的的三個進程,都是為了與Windows主機實現文件共享向工作的
smbd:共享文件
nmbd:向Windows主機廣播自己的IP
winbind:默認不啟動,Linux主機在Windiws域中時使用
3
Port:137/UDP(netbios),138/UDP(netbios),139/TCP(netbios),445/TCP(smb over TCP/IP)
4
軟件包:
samba.i386服務器端軟件包
samba-swat.i386 網頁功能的samba
5
配置文件:
/etc/init.d/smb
/etc/samba/smb.conf
6
Ps:在新版本中,samba接受selinux的控制,所以在配置時,我們最好先關閉selinux
7
配置文件:
[global]
; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24監聽的IP
; hosts allow = 127. 192.168.12. 192.168.13. 允許的IP
; log file = /var/log/samba/%m.log 記錄日志 宏%m表示當前主機的主機名
; max log size = 50 日志文件大小
security = user samba安全級別,主要根據用戶驗證方式
share:公共
user:根據用戶名密碼
domain:根據域
server:集中式認證
ads:
passdb backend = tdbsam 賬號的數據庫文件
[homes]
comment = Home Directories 說明信息
browseable = no 不允許隨意浏覽
writable = yes 允許上傳文件
; valid users = %S 定義哪些用戶可以訪問此共享
[printers]
comment = All Printers 顯示所有打印機
path = /var/spool/samba 能夠訪問到的打印機
browseable = no 不允許匿名訪問打印機
guest ok = no 來賓賬號是否允許訪問打印機
writable = no
printable = yes
; [netlogon]
; comment = Network Logon Service
; path = /var/lib/samba/netlogon
; guest ok = yes
; writable = no
; share modes = no
; [Profiles]
; path = /var/lib/samba/profiles
; browseable = no
; guest ok = yes
8
我們使用用戶登錄時,需要創建專供samba使用的用戶名密碼,直接將本地存在的用戶添加為samba用戶即可,使用smbpasswd命令
smbpasswd
-a 添加samba用戶
-x 刪除用戶
-d 臨時禁用某個用戶
-e 啟用禁用的賬號
9
testparm檢查配置文件,敲回車顯示在生效的命令
10
實例:
#yum install samba
#vim /etc/samba/smb.conf
在最後面添加共享目錄:
[share] 這裡起得名字是表示共享的目錄
comment = my share folder
path = /sharing
browseable = Yes
guest ok = Yes
writable =Yes
(writable = Yes 和 read only =No 的作用是一樣的)
#testparm 檢查配置文件
#useradd zoe 創建用戶
#smbpasswd -a zoe 將用戶添加到samba中並添加密碼
#chcon -R -t samba_share_t /sharing/ 遞歸修改其標簽在,這個在selinux中會講到
#setfacl –m u:zoe:rwx /sharing 修改用戶對於/sharing的權限
結束
現在你就可以在windows中使用網上鄰居工作組搜索該主機,登陸進去訪問sharing目錄了
11
如何使用Linux作為客戶端訪問samba共享文件:
在這裡我們使用的命令是smbclient:
Smbclient
-L hostname/IP 查看指定主機上的共享資源
-U username[%password] 使用指定用戶名登陸
smbclient //HOST/SHARE -U username%passwd
例子:smbclient //192.168.0.3/share -U zoe%redhat
12
訪問控制:
在前面的[share]中添加即可對/sharing目錄進行限制
hosts allow = 192.168.12. 允許192.168.12.0網段的主機訪問
testpqrm /etc/samba/smb.conf station34.example.com 192.168.0.34 測試指定主機是否能夠訪問指定的共享文件
寫訪問控制:
write list = @peguin 表示只有組中的成員可寫
write list = @zoe 表示只有zoe用戶可寫
13
讓一個組都有寫權限:
groupadd peguin
useradd -G peguin fedora
usradd -G peguin gentoo
smbpasswd -a fedora
smbpasswd -a gentoo
setfacl -m g:peguin:rwx /sharing/
此時,peguin族中的成員都可以訪問共享文件夾
14
我們在前面就關閉了selinux,那麼我們也可以打開selinux,修改它的規則以支持我們samba的工作。
修改selinux 以支持samba的部分功能:
selinux默認為不支持samba使用家目錄
getsebool -a | grep samba 查看selinux中包含samba的選項
samba_domain_controller --> off
samba_enable_home_dirs --> off 該項表示不允許使用家目錄
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_share_nfs --> off
use_samba_home_dirs --> off
virt_use_samba --> off
setsebool -P samba_enable_home_dirs=1 -P表示修改原文件,使它永久生效
這樣子selinux就不影響我們的samba了
15
我們也可以直接將別的linux主機共享的samba目錄掛載到本機使用,這樣子是不是就十分方便了~
掛載其他主機共享的samba目錄:
mount -t cifs //192.168.0.73/share /mnt -o username=redhat
表示掛載0.73主機上共享的share目錄到本地的/mnt目錄,使用的用戶名是redhat