1、关于Samba

Samba,是种用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协议做链接的自由软件。此软件在Windows与UNIX系列OS之间搭起一座桥梁,让两者的资源可互通。
使用端口139,445

2、安装Samba

1)CentOS下yum安装配置Samba
yum install samba -y
2)设置samba服务开机启动
systemctl enable smb
3)启动&&重启服samba服务
systemctl start smb
systemctl restart smb
4)防火墙设置(可选)

  1. 开放端口
  2. iptables -I INPUT -p udp --dport 137 -j ACCEPT
  3. iptables -I INPUT -p udp --dport 138 -j ACCEPT
  4. iptables -I INPUT -p tcp --dport 139 -j ACCEPT
  5. iptables -I INPUT -p tcp --dport 445 -j ACCEPT
  6. centos7
  7. firewall-cmd --permanent --add-service=samba
  8. firewall-cmd --reload

3、配置Samba

3.1 新建用户samba
useradd samba
3.2 设置samba用户密码
passwd samba
3.3 将samba加入到Samba用户数据库
smbpasswd -a samba windows访问samba共享目录时需要输入此用户名和密码
3.4 设置目录访问权限
mkdir /data1/samba
chown -R samba:samba /data1/samba

4、samba配置-global

[global]
workgroup = WORKGROUP        #设定 Samba Server 所要加入的工作组或者域。
server string = Samba Server Version %v    #设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24    #设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址。
hosts allow = 127.   192.168.1.  192.168.10.1       #表示允许连接到Samba Server的客户端,多个参数以空格隔开。hosts deny 与hosts allow 刚好相反。 hosts allow=172.17.2.0/255.255.0.0  表示容许来自172.17.2.0/255.255.0.0子网中的所有主机连接
log file = /var/log/samba/log.%m     #设置Samba Server日志文件的存储位置以及日志文件名称。
security = user
说明:设置用户访问Samba Server的验证方式,一共有四种验证方式。
1. share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。
2. user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。
3. server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。
4. domain:域安全级别,使用主域控制器(PDC)来完成认证。

设置共享参数

[共享名]
comment = 任意字符串    #comment是对该共享的描述,可以是任意字符串。
path = 共享目录路径  
browseable = yes/no     # browseable用来指定该共享是否可以浏览。no另外可以代表是隐藏功能
writable = yes/no       #writable用来指定该共享路径是否可写。
write list = a,b,c      #可写的用户
available = yes/no      # available用来指定该共享资源是否可用。
valid users = 允许访问该共享的用户    #valid users用来指定允许访问该共享资源的用户。
例如:valid users = bobyuan,@bob,@tech(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@+组名”表示。)
invalid users = 禁止访问该共享的用户   #  invalid users用来指定不允许访问该共享资源的用户。
例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。)
public = yes/no    # public用来指定该共享是否允许guest账户访问。
readonly = yes     # 只读
hosts deny = 192.168.0.   #表示禁止所有来自192.168.0.0/24网段的IP地址访问
hosts allow = 192.168.0.24   #表示允许192.168.0.24这个IP地址访问
结合EXCEPT使用
hosts deny = All 表示所有客户端,不允许访问

testparm -v -s | grep usershare 检查

举例配置


mkdir /data1/
useradd samba
passwd samba
smbpasswd -a samba
chown -R samba:samba /data1/
#添加配置/etc/samba/smb.conf
#最后添加
[common]
        path = /data1/samba
        writable = yes
        browseable = yes
        public = yes

samba登录

windows 登录:
\\192.168.37.129\common

Linux登录Samba服务器
安装Samba客户端
yum install samba-client -y
smbpasswd -a root
设置密码

#查看Samba有哪些共享目录
smbclient  -L  //192.168.14.49/

#Linux登录
smbclient  //192.168.14.49/liyuan
#指定账户登录
smbclient  -U samba //192.168.14.49/liyuan

5、Samba挂载

安装相关包

yum install cifs-* -y
cifs:选项是Samba文件类型

挂载

mount -t cifs -o username=samba //192.168.14.49/liyuan /tmp/mountp/
mount -t cifs -o username=samba,password=redhat  //192.168.14.49/liyuan /tmp/liyuan  #-o 指定用户登录

/etc/fstab配置

//192.168.202.136/practice  /mnt/practice  cifs  defaults,sec=ntlmssp,multiuser,username=alice,password=redhat 0 0 
//192.168.202.136/practice  /mnt/practice  cifs  defaults   0 0

5、samba配置举例

5.1 例1

一、安装samaba
    yum install samba  samba-client  samba-common -y
三、设置开机启动
chkconfig smb on
四、设置匿名共享目录
注意以下几点:
全局中的security选项
和局部选项public 
打开配置文件
vim /etc/samba/smb.conf
[global]
        workgroup = MYGROUP
        server string = Samba Server Version %v
        log file = /var/log/samba/log.%m
        max log size = 50
        #security = user
        security = user        #表示登录Samba的时候需要账号,改成share说明登录的时候不需要账号
        passdb backend = tdbsam
        load printers = no
        cups options = raw
[common]
        path = /common       
        writable = yes
        browseable = yes
        public = yes        #表示访问这个文件夹时所需要的权限,默认需要账号登录
五、设置用户登录
设置登录账户名密码
useradd test
smbpassword -a test        
创建文件夹
mkdir /user_login
设置权限
chmod o+w /user_login/
vim /etc/samba/smb.conf
[global]
        workgroup = MYGROUP
        server string = Samba Server Version %v
        log file = /var/log/samba/log.%m
        max log size = 50
        #security = user
        security = share        #表示登录Samba的时候需要账号,改成share说明登录的时候不需要账号
        passdb backend = tdbsam
        load printers = no
        cups options = raw
[common]
        path = /common       
        writable = yes
        browseable = yes
        public = yes        #表示访问这个文件夹时所需要的权限,默认需要账号登录
[user_login]
path = /user_login        
browseable = yes
write list = test    ###如果不指定public,就需要用账户密码进行登录。write list=test,说明只有test这个账户可以写,其他账户不可以写。writeable = yes不要加进去
六、共享目录针对网段进行限制
[common]
        path = /common       
        writable = yes
        browseable = yes
        public = yes
            hosts allow = 192.168.0.             #192.168.0这个网段可以进行访问
[common]
        path = /common       
        writable = yes
        browseable = yes
        public = yes
            hosts deny = 192.168.0.             #192.168.0这个网段不可以进行访问