smb(samba):
1耕捞、用于linux和windows之間的文件共享烫幕,可以實現匿名用戶和本地用戶之間的文件共享
2、工作原理:
smb進程 控制發(fā)布共享目錄與權限? tcp 139 445
nmb進程 主要用于名稱解析 udp 137 138
步驟:
1磷斧、關閉防火墻和selinux
2、配置yum源
3弛饭、軟件三步曲(查看|安裝|查看軟件列表)
# rpm -aq|grep samba
samba-winbind-clients-3.6.9-164.el6.x86_64? 客戶端工具
samba-3.6.9-164.el6.x86_64? 服務端
samba-client-3.6.9-164.el6.x86_64? 客戶端工具
samba4-libs-4.0.0-58.el6.rc4.x86_64 庫文件
samba-common-3.6.9-164.el6.x86_64? 工具包
samba-winbind-3.6.9-164.el6.x86_64 客戶端工具
# 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
# rpm -ql samba-client
/usr/bin/smbclient? 客戶端工具
# rpm -ql samba-common
/etc/samba? 主目錄
/etc/samba/smb.conf 主配置文件
/usr/bin/pdbedit 查看smb數據庫用戶
/usr/bin/smbpasswd 設置用戶密碼
/usr/bin/testparm 檢測語法
4孩哑、了解主配置文件
# cat /etc/samba/smb.conf |grep -v ^#|grep -v '^;'|grep [a-z]
[global] 全局標簽
workgroup = MYGROUP 工作組
server string = Samba Server Version %v? samba服務器版本描述
# logs split per machine
log file = /var/log/samba/log.%m 日志文件
# max 50KB per log file, then rotate
max log size = 50 日志大小kb
security = user 認證模式:user用戶名密碼;share匿名胳蛮;server
passdb backend = tdbsam smb數據庫 /var/lib/samba/private/
# 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
5丛晌、需求:無
測試驗證默認情況下的共享文件
6、啟動服務抚垄,開機自啟動
7谋逻、測試驗證
總結:
1、默認情況下浙滤,服務端會將系統中的所有本地用戶的家目錄共享出去;并且不允許匿名用戶訪問
2纺腊、本地用戶都可以通過用戶名和smab數據庫的密碼去訪問當前用戶的家目錄
client:10.1.1.2
匿名用戶查看:
# smbclient -L 10.1.1.1
Enter root's password: 不輸入密碼
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
匿名用戶訪問共享資源:
# smbclient //10.1.1.1/stu1
Enter root's password:
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
tree connect failed: NT_STATUS_ACCESS_DENIED
原因:共享的家目錄不允許匿名用戶訪問
本地用戶查看:
將本地用戶加入到smb數據庫里
# smbpasswd -a stu1
New SMB password:
Retype new SMB password:
Added user stu1.
# pdbedit -L 查看smb數據庫的用戶
stu1:500:
# smbclient -L 10.1.1.1 -U stu1? 查看smb服務端共享了哪些目錄
本地用戶訪問:
# smbclient //10.1.1.1/stu1 -U stu1
Enter stu1's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
smb: \> 揖膜?
\\172.16.13.86
我的電腦——>\\172.16.13.86
需求1:匿名用戶訪問本地用戶的家目錄
[homes]
comment = Home Directories
browseable = yes
writable = yes
guest ok = yes
chmod o+rx /home/user01
service smb restart
需求2:認證模式更改為share
結果:
匿名用戶可以訪問查看梅桩;本地用戶不可以訪問查看
需求3:共享本地目錄/samba/share
vim /etc/samba/smb.conf
[share]
comment = samba share
path? ? = /samba/share
public? = yes
writable = yes
browseable = yes
客戶端掛載使用:
# mount.cifs -o username=stu1,password=stu1 //10.1.1.1/share /u02
自己完成開機自動掛載和autofs自動掛載
需求4:允許harry用戶可寫,sysadmin組的成員只讀
[share]
comment = samba share
path? ? = /samba/share
browseable = yes
valid users = harry,@sysadmin
write list = harry
[share]
comment = samba share
path? ? = /samba/share
browseable = yes
valid users = harry,@sysadmin
writable = yes
read list = @sysadmin
[share]
comment = samba share
path? ? = /samba/share
browseable = yes
valid users = harry,@sysadmin
write list = harry
read only = yes
控制讀寫訪問:
writable = yes/no
read only = yes/no
write list = tom,@admin
read list = tom,@admin
對象的訪問控制:
valid users = tom,@admin 指定可用用戶
invalid users = tom,@admin 指定不可用用戶
兩個參數不要同時存在
[share]
comment = samba share
path? ? = /samba/share
browseable = yes
valid users = harry,@sysadmin
網絡訪問控制:
hosts allow = 150.203. EXCEPT 150.203.6.66
hosts allow = 150.203.15.0/255.255.255.0
hosts allow = *.uplooking.com
hosts deny = 192.168.1.3 vm01.example.com
如果deny和allow沖突趁仙,allow優(yōu)先
[share]
comment = samba share
path? ? = /samba/share
browseable = yes
valid users = harry,@sysadmin
#writable = yes
write list = harry
read only = yes
hosts allow = 172.16.13.0/255.255.255.0 EXCEPT 172.16.13.250
基于用戶名密碼的綜合訪問:
需求:
公司:uplooking
1犀呼、財務部門 /samba/upl_cw? cw01財務總監(jiān)有可讀可寫權限,財務部門員工可讀坐儿,boss01對其有管理權限。
2炭菌、市場部門 /samba/upl_sc? 市場部門員工可讀可寫逛漫,公司員工可以查詢資料,boss02對其有管理權限酌毡。
3、HR部門? /samba/upl_rs? rs01HR總監(jiān)可讀寫菩暗,HR部門員工可以對財務部查詢,vip用戶可以查詢
4停团、休息區(qū)? /samba/upl_pub? 自己管理自己的文件
清空windows緩存:cmd——>net use * /del /y
思路:
1掏熬、選擇哪個服務做文件共享(samba)
2、需要一臺Linux服務器(rhel/centos)
3舌胶、根據部門創(chuàng)建不同的工作目錄來保存不同部門的文件
4岗屏、將目錄發(fā)布出去
5漱办、測試驗證
步驟:
node1:samba服務端 10.1.1.1 172.16.13.44
1、在服務器上創(chuàng)建相應的工作目錄
mkdir /samba/upl_{cw,sc,rs,pub} -p
chmod 700 -R /samba
2娩井、創(chuàng)建相應的用戶和組
groupadd uplooking
groupadd cw
groupadd rs
groupadd sc
useradd cw01 -g cw -G uplooking
useradd cw02 -g cw -G uplooking
useradd rs01 -g rs -G uplooking
useradd rs02 -g rs -G uplooking
useradd sc01 -g sc -G uplooking
useradd sc02 -g sc -G uplooking
useradd boss01 -g uplooking -G cw
useradd boss02 -g uplooking -G sc
useradd vip
3、軟件三步曲(查看軟件|安裝|查看軟件列表)
根據需求將不同部門的共享目錄發(fā)布出去
vim /etc/samba/smb.conf
[cw_share]
comment= cw01財務總監(jiān)有可讀可寫權限咐刨,財務部門員工可讀扬霜,boss01對其有管理權限
path = /samba/upl_cw
valid users = @cw,boss01,@rs
write list = cw01,boss01
[sc_share]
comment= 市場部門員工可讀可寫,公司員工可以查詢資料联予,boss02對其有管理權限
path = /samba/upl_sc
valid users = @uplooking
read only = yes
write list = @sc,boss02
[hr_share]
comment = rs01HR總監(jiān)可讀寫,HR部門員工可以對財務部查詢季眷,vip用戶可以讀寫
path = /samba/upl_rs
valid users = @rs,vip
write list = rs01,vip
[pub]
comment = 自己管理自己的文件
path = /samba/upl_pub
public = yes
writable = yes
hosts allow = 172.16.13.0/24
4卷胯、將用戶加入到samba數據庫里
1077? smbpasswd -a cw01
1078? smbpasswd -a cw02
1079? smbpasswd -a rs01
1080? smbpasswd -a rs02
1081? smbpasswd -a sc01
1082? smbpasswd -a sc02
1083? smbpasswd -a boss01
1084? smbpasswd -a boss02
1085? smbpasswd -a vip
1086? pdbedit -L
5、重啟服務測試驗證
# service smb restart
Shutting down SMB services:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
Starting SMB services:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
linux:
windows:
建議清空環(huán)境 再次操作<恢復快照>
綜合練習
配置samba要求如下
1)工作組名為RHCE
2)認證類型為user
3) 使用lvm? 建立 /dev/mapper/UPL-smb 10G? 固定掛載到 /upl
4)公司uplooking挺峡,有3個部門担钮,rs、sc病线、cw部門,每個部門需要共享文件給不同人送挑,要求如下:
1.財務部門(/upl/cw)暖眼,只有財務總監(jiān)(cw01)可以修改文件,財務成員(cw02)審核文件诫肠,boss01 匯總公司財務
2.人事部門(/upl/rs),人事部門可以修改文件挤安,公司所有員工都可以查看文件丧鸯,boss02 也可以修改文件
3.市場部門(/upl/sc),只有市場總監(jiān)可以修改文件围肥,市場成員可以查詢,boss03 也可以修改文件
4.vip? 可以訪問rs部門穆刻,sc部門
6.在公共目錄(/upl/pub)自己文件自己管理
5) 拒絕用戶在192.168.1.0/24除了192.168.1.2訪問該共享目錄
6) 定義vip的別名為趙二
7) smb密碼自行定義
別名定義:
# cat /etc/samba/smbusers
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
主配置文件/etc/samba/smb.conf
[global]
杠步。撰洗。腐芍。
username map = /etc/samba/smbusers
作業(yè)2:自動掛載家目錄
vm1:stu1 stu2 stu3...? /home/$username
vm2:/rhome/stu1 /rhome/stu2 ...
node1:stu1 ? ? ? stu2 stu3
node2:/rhome/stu1 /rhome/stu2 /rhome/stu3
每個用戶只能在自己家目錄新增修改文件
答:
vm1:
mkdir /rhome/stu{1..3} -p
cp -a /etc/skel/. /rhome/stu1
cp -a /etc/skel/. /rhome/stu2
cp -a /etc/skel/. /rhome/stu3
vim /etc/exports
/rhome/stu1? 10.1.0.28(rw,anonuid=501,anongid=501)
/rhome/stu2? 10.1.0.28(rw,anonuid=502,anongid=502)
/rhome/stu3? 10.1.0.28(rw,anonuid=503,anongid=503)
chmod 750 /rhome/*
setfacl -m u:501:rwx /rhome/stu1
setfacl -m u:502:rwx /rhome/stu2
setfacl -m u:503:rwx /rhome/stu3
service nfs restart
vm2:
# useradd -u 501 -M -d /nfs/stu1 stu1
# useradd -u 502 -M -d /nfs/stu2 stu2
# useradd -u 503 -M -d /nfs/stu3 stu3
echo 123|passwd? --stdin stu1
echo 123|passwd? --stdin stu2
echo 123|passwd? --stdin stu3
# id stu1
uid=501(stu1) gid=501(stu1) groups=501(stu1)
mkdir nfs
vim /etc/auto.master
/nfs /etc/auto.test
vim /etc/auto.test
* -nfs,rw? 10.1.0.27:/rhome/&
service autofs restart
stu1驗證:
[root@vm28 nfs]# su - stu1
[stu1@vm28 ~]$ pwd
/nfs/stu1
[stu1@vm28 ~]$ touch /nfs/stu1/file1? ? ? ? ? ? --在stu1建立成功
[stu1@vm28 ~]$ ls /nfs/stu1/file1
/nfs/stu1/file1
[stu1@vm28 ~]$ touch /nfs/stu2/file2? ? ? ? ? ? --在stu2建立失敗
touch: cannot touch `/nfs/stu2/file2': Permission denied
stu2驗證:
[root@vm28 nfs]# su - stu2
[stu2@vm28 ~]$ pwd
/nfs/stu2
[stu2@vm28 ~]$ touch /nfs/stu2/file3? ? ? ? ? --在stu2建立成功
[stu2@vm28 ~]$ ls /nfs/stu2/file3
/nfs/stu2/file3
[stu2@vm28 ~]$ touch /nfs/stu1/file4? ? ? ? ? --在stu1建立失敗
touch: cannot touch `/nfs/stu1/file4': Permission denied