samba:用于实现Linux和windows之间文件共享
功能:实现匿名用户和本地用户的文件共享
工作原理:
smb进程:控制发布目录与权限,负责文件传输TCP 139 445
nmb进程:用于名称解析udp 137 138
Samba安装:
步骤:(安装|查询|软件列表)
#yum install samba -y
#rpm -qa|grep samba
samba-winbind-3.6.23-36.el6_8.x86_64
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
1、财务部 /samba/upl_cw cw01用户有可读可写权限,财务部门员工可读,boss01对其有管理权限
2、市场部 /samba/upl_sc 该部门的员工可读可写,公司所有员工可以查询相关资料,boss02对其有管理权限
3、人事部 /samba/upl_rs rs01总监可读写,人事部门员工可以对财务部门查询,vip用户可查询人事部门
4、休息区 /samba/upl_pub 所有人都可以自己管理自己的文件
步骤:
1、创建用户组    
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
2、创建目录及修改相应的权限   
  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
3、搭建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
4、检查语法
/usr/bin/testparm
5、配置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数据库里的用户
5、重启服务 service smb restart
6、测试验证 Linux windows cmd ---->net use * /del /y          //清空缓存
7、相应的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权限。