smb(samba):
1、用于linux和windows之间的文件共享,可以实现匿名用户和本地用户之间的文件共享
2、工作原理:
smb进程 控制发布共享目录与权限 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优先
[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财务总监有可读可写权限,财务部门员工可读,boss01对其有管理权限。
2、市场部门 /samba/upl_sc 市场部门员工可读可写,公司员工可以查询资料,boss02对其有管理权限。
3、HR部门 /samba/upl_rs rs01HR总监可读写,HR部门员工可以对财务部查询,vip用户可以查询
4、休息区 /samba/upl_pub 自己管理自己的文件
清空windows缓存:cmd——>net use * /del /y
思路:
1、选择哪个服务做文件共享(samba)
2、需要一台Linux服务器(rhel/centos)
3、根据部门创建不同的工作目录来保存不同部门的文件
4、将目录发布出去
5、测试验证
步骤:
node1:samba服务端 10.1.1.1 172.16.13.44
1、在服务器上创建相应的工作目录
mkdir /samba/upl_{cw,sc,rs,pub} -p
chmod 700 -R /samba
2、创建相应的用户和组
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、软件三步曲(查看软件|安装|查看软件列表)
根据需求将不同部门的共享目录发布出去
vim /etc/samba/smb.conf
[cw_share]
comment= cw01财务总监有可读可写权限,财务部门员工可读,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总监可读写,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:
建议清空环境 再次操作<恢复快照>
综合练习
配置samba要求如下
1)工作组名为RHCE
2)认证类型为user
3) 使用lvm 建立 /dev/mapper/UPL-smb 10G 固定挂载到 /upl
4)公司uplooking,有3个部门,rs、sc、cw部门,每个部门需要共享文件给不同人,要求如下:
1.财务部门(/upl/cw),只有财务总监(cw01)可以修改文件,财务成员(cw02)审核文件,boss01 汇总公司财务
2.人事部门(/upl/rs),人事部门可以修改文件,公司所有员工都可以查看文件,boss02 也可以修改文件
3.市场部门(/upl/sc),只有市场总监可以修改文件,市场成员可以查询,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
作业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