samba:用於實現Linux和windows之間文件共享linux
功能:實現匿名用戶和本地用戶的文件共享數據庫
工做原理:vim
smb進程:控制發佈目錄與權限,負責文件傳輸TCP 139 445windows
nmb進程:用於名稱解析udp 137 138緩存
Samba安裝:服務器
步驟:(安裝|查詢|軟件列表)工具
#yum install samba -y測試
#rpm -qa|grep samba.net
samba-winbind-3.6.23-36.el6_8.x86_64unix
samba-client-3.6.23-36.el6_8.x86_64 //客戶端
samba-3.6.23-36.el6_8.x86_64 //服務端
samba4-libs-4.0.0-66.el6_6.rc4.x86_64 //庫文件
samba-common-3.6.23-36.el6_8.x86_64 //工具包
samba-winbind-clients-3.6.23-36.el6_8.x86_64
[root@Server ~]# rpm -ql samba|grep etc
/etc/logrotate.d/samba //日誌輪轉
/etc/pam.d/samba //認證模塊
/etc/rc.d/init.d/nmb //啓動腳本
/etc/rc.d/init.d/smb //啓動腳本
/etc/samba/smbusers //用戶別名
二進制命令
/usr/sbin/nmbd
/usr/sbin/smbd
/etc/samba/smb.conf //主配置文件
/usr/bin/smbpasswd //配置smb用戶密碼命令
/usr/bin/testparm //檢查語法命令
/usr/bin/smbxlient //客戶端命令
瞭解主配置文件
#cat /etc/samba/smb.conf|grep -v ^#|grep -v ^';'|grep [a-z]
[global] //全局選項
workgroup = MYGROUP //工做組
server string = Samba Server Version %v //smb服務的版本描述
# logs split per machine
log file = /var/log/samba/log.%m //日誌文件及格式
# max 50KB per log file, then rotate
max log size = 50 //日誌的最大大小
security = user //認證模式:user(用戶名密碼),share(匿名用戶),server(外部服務器)
passdb backend = tdbsam
# the login script name depends on the machine name
# the login script name depends on the unix user used
# disables profiles support by specifing an empty path
load printers = yes //加載打印機
cups options = raw //打印機選項
#obtain list of printers automatically on SystemV
[homes] //局部選項,默認共享本地用戶的家目錄
comment = Home Directories //描述
browseable = no //隱藏標籤
writable = yes //可寫
[printers] //共享名稱
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no ------> public = no
writable = no ------> read only = yes
printable = yes //打印選項
不修改配置文件啓動服務
[root@Server ~]# /etc/init.d/nmb start
[root@Server ~]# /etc/init.d/smb start
默認狀況:
security = user
客戶端測試:
配置oldboy的數據庫密碼
[root@Server ~]# smbpasswd -a oldboy
-a 打開
-d 關閉
linux客戶端鏈接:
[root@client01 ~]# smbclient -L 192.168.8.132 -U oldboy
[root@client01 ~]# smbclient //192.168.8.132/oldboy -U oldboy
Enter oldboy's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-36.el6_8]
smb: \>
windows客戶端鏈接
\\192.168.8.132 ---->輸入用戶名密碼便可訪問
總結:默認狀況,本地用戶能夠訪問本身的家目錄, 可是須要將用戶加入到smb數據庫中,匿名用戶沒有可訪問的目錄.
若是security = share 本地用戶沒法訪問;
security = user 本地用戶能夠訪問, 匿名用戶可否訪問取決因而否有共享目錄容許匿名用戶訪問。
匿名用戶共享:
server: /samba/share
mkdir /samba/share -p
[root@Server /]# vim /etc/samba/smb.conf
security = share
[anon_share]
comment = anon share
path = /samba/share
public = yes writable = yes
browseable = yes
service smb restart //重啓服務
測試:
#smbclient 192.168.8.132/anon_share
security = share 匿名用戶能夠訪問本地用戶不能夠
基於本地用戶和密碼訪問
[root@Server /]# vim /etc/samba/smb.conf
security = user
[local_share]
comment = local share
path = /samba/local
public = no
writable = yes
browseable = yes
service smb restart //重啓服務
測試:
#smbclient 192.168.8.132/local_share
======================================================================
samba實踐:
基於用戶名密碼的綜合訪問
需求: 公司:uplooking
一、財務部 /samba/upl_cw cw01用戶有可讀可寫權限,財務部門員工可讀,boss01對其有管理權限
二、市場部 /samba/upl_sc 該部門的員工可讀可寫,公司全部員工能夠查詢相關資料,boss02對其有管理權限
三、人事部 /samba/upl_rs rs01總監可讀寫,人事部門員工能夠對財務部門查詢,vip用戶可查詢人事部門
四、休息區 /samba/upl_pub 全部人均可以本身管理本身的文件
步驟:
一、建立用戶組
groupadd uplooking
groupadd cw
groupadd sc
groupadd rs
每一個部門2個員工:
useradd -g cw -G uplooking cw01
useradd -g cw -G uplooking cw02
useradd -g sc -G uplooking sc01
useradd -g sc -G uplooking sc02
useradd -g rs -G uplooking rs01
useradd -g rs -G uplooking rs02
useradd -g uplooking -G cw boss01
useradd -g uplooking -G sc boss02
useradd vip
二、建立目錄及修改相應的權限
mkdir /samba/upl_{cw,sc,rs,pub} -p
chmod 770 /samba -R
chown root.uplooking /samba
chown root.cw upl_cw
chown root.sc upl_sc
chown root.rs upl_rs
chmod 1777 upl_pub
三、搭建Samba服務,發佈共享目錄
vim /etc/samba/smb.conf
[財務共享目錄]
commet = 財務
path = /samba/upl_cw
valid users = @cw,boss01,@rs
read list = @cw,boss01,@rs
write list = cw01,boss01
[市場共享目錄]
commet = 市場
path = /samba/upl_sc
valid users = @uplooking
read list = @uplooking,boss02,@sc
write list = boss02,@sc
[HR共享目錄]
commet = HR
path = /samba/upl_rs
valid users = @rs,vip
read list = @rs,vip,boss02
write list = rs01
[休息區共享目錄]
commet = 休息
path = /samba/upl_pub
valid users = @uplooking
read list = @uplooking
write list = @uplooking
四、檢查語法
/usr/bin/testparm
五、配置smb用戶名密碼
smbpasswd -a cw01
smbpasswd -a cw02
smbpasswd -a rs01
smbpasswd -a rs02
smbpasswd -a sc01
smbpasswd -a sc02
smbpasswd -a boss01
smbpasswd -a boss02
smbpasswd -a vip
/usr/bin/pdbedit -L 列出smb數據庫裏的用戶
五、重啓服務 service smb restart
六、測試驗證 Linux windows cmd ---->net use * /del /y //清空緩存
七、相應的acl控制策略
#setfacl -m u:rs01:rx upl_cw
#setfacl -m u:vip:rx upl_rs #setfacl -m u:vip:rx .
用戶別名:
#vim /etc/samba/smusers
vip = zhangsan
[global]
username
map = /etc/samba/smbusers
-------------------------------------------------------------------
以上可能須要acl控制權限設置
setfacl 設置文檔訪問控制列表
-b 刪除全部附加的ACL條目
-k 刪除默認的ACL
-m 添加ACL條目
-x 刪除制定的ACL條目
-R 遞歸處理全部的子文件與子目錄
使用getfacl查看文檔的ACL權限,使用setfacl來設置文檔的ACL權限。