centos samba文件共享服务

一、samba服务介绍

1. SAMBA的功能:
共享文件和打印,实现在线编辑
实现登录SAMBA用户的身份认证
可以进行NetBIOS名称解析
外围设备共享
2. 所占端口
smbd 提供smb(cifs)服务 TCP:139,445
nmbd NetBIOS名称解析 UDP:137,138
3. 客户端工具:
smbclient,mount.cifs

二、samba相关设置

  samba 配置文件 /etc/smb.conf 格式 ,使用.ini文件的格式
用 [ ] 分成以下几部分

1. 全局设置:
[global] 服务器通用或全局设置的部分

2. 特定共享设置:
[homes] 用户的家目录共享
[printers] 定义打印机资源和服务
[sharename] 自定义的共享目录配置
其中:#和;开头的语句为注释,大小写不敏感

3. global 配置项
workgroup 指定工作组名称
server string 主机注释信息
netbios name 指定NetBIOS名,注意:netbios name需要启动nmb服务
interfaces 指定服务侦听接口和IP
hosts allow 可用逗号,空格,或tab分隔,默认允许所有主机访问,也可在每个共享独立配置,如在[global]设置,将应用并覆盖所有共享设置,可以是以下格式:
IPv4 network/prefix: 172.16.0.0/24 IPv4 前缀: 172.16.0.
IPv4 network/netmask: 172.16.0.0/255.255.255.0
主机名: desktop.example.com
以example.com后缀的主机名: .example.com
hosts deny 拒绝指定主机访问,格式和hosts allow 相同
config file=/etc/samba/conf.d/%U 用户独立的配置文件
Log file=/var/log/samba/log.%I 不同客户机采用不同日志
log level = 2 日志级别,默认为0,不记录日志
max log size=50 日志文件达到50K,将轮循rotate,单位KB
Security三种认证方式:
user:samba用户(采有linux用户,samba的独立口令)
share:匿名(CentOS7不再支持),已不建议使用
server:已不建议使用
passdb backend = tdbsam 密码数据库格式

4. 特定目录共享配置项
[共享名称] 远程网络看到的共享名称
comment 注释信息
path 所共享的目录路径
public 能否被guest访问的共享,默认no,和guest ok 类似
browsable 是否允许所有用户浏览此共享,默认为yes,no为隐藏
writable=yes 可以被所有用户读写,默认为no
read only=no 和writable=yes等价,如与以上设置冲突,放在后面的设置生效,默认只读
write list 用户,@组名,+组名,用,分隔,如writable=no,列表中用户或组可读写,不在列表中用户只读
valid users 特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔

5. 语法检查:
testparm [-v] [/etc/samba/smb.conf]

6. samba管理用户
说明:samba用户须是Linux用户,建议使用/sbin/nologin
1. 添加用户(两种方式)
smbpasswd -a
pdbedit -a -u
2. 修改用户密码
smbpasswd
3. 删除用户(两种方式)
smbpasswd –x
pdbedit –x –u
4. 查看用户列表
pdbedit –L –v

三、samba工具软件
  1. 查看共享
    -U代表用户%后面是密码
[root@localhost ~]#smbclient  -L 192.168.19.10 -U xiapi3%xiapi

    Sharename       Type      Comment
    ---------       ----      -------
    share           Disk      
    IPC$            IPC       IPC Service (Samba 4.9.1)
    xiapi3          Disk      Home Directories
Reconnecting with SMB1 for workgroup listing.

    Server               Comment
    ---------            -------

    Workgroup            Master
    ---------            -------
[root@localhost ~]#
  1. 交互式登录进行文件上传下载
    使用put上传,get下载,ls查看
[root@localhost ~]#smbclient  //192.168.19.10/share -U xiapi3%xiapi
Try "help" to get a list of possible commands.
smb: \> ls
.                                   D        0  Fri Dec 20 10:55:42 2019
..                                  D        0  Fri Dec 20 10:11:10 2019
samba3.txt                          N        0  Fri Dec 20 10:53:01 2019
anaconda-ks.cfg                     A     1377  Fri Dec 20 10:55:42 2019

        17811456 blocks of size 1024. 16354196 blocks available
smb: \>
  1. 挂载共享
# 手动挂载
[root@localhost ~]#yum install cifs-utils
[root@localhost ~]#mount -o user=xiapi3,password=xiapi //192.168.19.10/share /mnt
[root@localhost ~]#df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 736M     0  736M   0% /dev
tmpfs                    748M     0  748M   0% /dev/shm
tmpfs                    748M   18M  730M   3% /run
tmpfs                    748M     0  748M   0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  1.5G   16G   9% /
/dev/sda1               1014M  136M  879M  14% /boot
tmpfs                    150M     0  150M   0% /run/user/0
//192.168.19.10/share     17G  1.4G   16G   9% /mnt
[root@localhost ~]#
# fstab 开机自动挂载(文件保存登录samba的密码)
[root@localhost mnt]#chmod 600 /etc/smbpasswd 
[root@localhost mnt]#cat /etc/smbpasswd
username=xiapi2
password=xiapi
[root@localhost mnt]#vi /etc/fstab 
//192.168.19.10/share   /mnt2   cifs defaults,credentials=/etc/smbpasswd 0 0 
[root@localhost mnt]#mount -a
# fstab 开机自动挂载(密码写在fstab里)
[root@localhost ~]#vi /etc/fstab 
//192.168.19.10/share   /mnt    cifs defaults,username=xiapi3,password=xiapi 0 0 
[root@localhost ~]#mount -a
四、samba配置匿名共享(windows 无需输入密码)
  1. 配置允许匿名
# 在global中添加一行,然后添加需要共享的目录即可
[global]
    map to guest = Bad User                                                   
[share]
    path=/data/samba1
    read only=no
    guest ok=yes 
# 注意如果要有写入权限,文件系统也要给权限,可以给777 或者 文件夹给nobody权限
[root@localhost samba]#chmod 777 /data/samba1
[root@localhost samba]#ll /data/samba1
total 0
-rwxr--r--. 1 nobody nobody 0 Dec 20 11:11 youyou.txt
[root@localhost samba]#
五、samba配置开启netbios,windows可以自动通过网络邻居发现
[root@localhost ~]#vi /etc/samba/smb.conf
 # 添加如下行
 [global]
     workgroup = WORKGROUP
     netbios name=xiapilinux
 [root@localhost samba]#systemctl restart smb
 [root@localhost samba]#systemctl restart nmb
六、samba配置用户共享
# 服务器端配置
 [root@localhost ~]#yum install samba
 [root@localhost ~]#systemctl start smb
 [root@localhost ~]#useradd -s /sbin/nologin  xiapi
 [root@localhost ~]#smbpasswd -a xiapi
 [root@localhost ~]#mkdir /data/samba1 -p
 [root@localhost ~]#setfacl -m u:xiapi:rwx /data/samba1/
 [root@localhost ~]#vi /etc/samba/smb.conf
 [samba]
     path=/data/samba1
     write list=xiapi
 [root@localhost ~]#systemctl restart smb
 # 客户端配置
 [root@localhost ~]#yum install cifs-utils
 [root@localhost ~]#mount -o user=xiapi,password=xiapi //192.168.19.10/samba /mnt
七、samba实现不同samba用户访问相同的samba共享,实现不同的配置
[root@localhost ~]#vi /etc/samba/smb.conf
 #添加如下行
 [global]
     config file=/etc/samba/conf.d/%U
 [share]
 path=/data/samba1
 read only=no
 guest ok=yes 
 # 添加每个用户的配置文件
 [root@localhost ~]#cat /etc/samba/conf.d/xiapi2
 [share]
 path=/data/samba2
 read only=no
 write list=xiapi2
 [root@localhost ~]#cat /etc/samba/conf.d/xiapi3
 [share]
 path=/data/samba3
 read only=no
 write list=xiapi3
 [root@localhost ~]#
 # 测试效果
 [root@localhost mnt]#smbclient  //192.168.19.10/share -U xiapi3%xiapi
 Try "help" to get a list of possible commands.
 smb: \> ls
 .                                   D        0  Fri Dec 20 15:00:30 2019
 ..                                  D        0  Fri Dec 20 10:11:10 2019
 samba3.txt                          N        0  Fri Dec 20 10:53:01 2019
 anaconda-ks.cfg                     A     1377  Fri Dec 20 10:55:42 2019
 passwd                              A      925  Fri Dec 20 15:00:30 2019

         17811456 blocks of size 1024. 16353688 blocks available
 smb: \> exit
 [root@localhost mnt]#smbclient  //192.168.19.10/share -U xiapi2%xiapi
 Try "help" to get a list of possible commands.
 smb: \> ls
 .                                   D        0  Fri Dec 20 10:55:17 2019
 ..                                  D        0  Fri Dec 20 10:11:10 2019
 samba2.txt                          N        0  Fri Dec 20 10:52:56 2019
 anaconda-ks.cfg                     A     1377  Fri Dec 20 10:55:17 2019

         17811456 blocks of size 1024. 16353688 blocks available
 smb: \>