SAMBA服务简介

SAMBA是解决Windows和Linux的互通。

相关包

Samba 提供smb服务
Samba-client 客户端软件
samba-common 通用软件
cifs-utils smb客户端工具
samba-winbind 和AD相关

相关服务进程

smbd 提供smb(cifs)服务 TCP:139,445
nmbd NetBIOS名称解析 UDP:137,138

配置文件

主配置文件/etc/samba/smb.conf
语法检查: testparm [-v] [/etc/samba/smb.conf]
客户端工具:smbclient,mount.cifs
内核:
    [root@centos7 ~]# locate cifs.ko
    /root/linux-4.16.8/fs/cifs/.cifs.ko.cmd
    /root/linux-4.16.8/fs/cifs/cifs.ko
    /usr/lib/modules/3.10.0-693.el7.x86_64/kernel/fs/cifs/cifs.ko.xz
    /usr/lib/modules/4.16.8-4.4-lianglinux/kernel/fs/cifs/cifs.ko

安装方法

yum install samba
查看各安装包:
rpm -ql samba-client
rpm -ql samba

smbclient使用

1. 在windows上共享一目录
2. 在windows cmd下建立一用户net user test 123 /add
3. 在windows上查看共享的资源net share;  net share testdir=d:\nfs(把d盘下的nfs文件夹共享为testdir)
4. 在同网段的Linux上,执行smbclient -L 172.20.107.222 -U test%123查看共享资源
5. 访问共享资源 smbclient //172.20.107.222/testdir -U test%123
6. smb: \> get liang.txt (下载)
7. smb:\> put test (上传)
8. mount -o username=test,password=123 //172.20.107.222/testdir /mnt/win (临时挂载到Linux服务器上) 
9. vim /etc/fstab
    //172.20.107.222/testdir /mnt/win    cifs    username=test,password=123 0 0 
    /etc/fstab的权限为-rw-r--r--,系统默认的权限最好保留,因此把username和password放在/etc/fstab是很不安全的
10. 更安全的永久挂载
    /172.20.107.222/testdir /mnt/win    cifs  credentials=/etc/user.txt 0 0 
    vim /etc/user.txt
    username=test
    password=123
    chmod 600 user.txt

SMB服务器端

启动:systemctl start smb

建立SMB账号,SMB的账号必须首先是Linux账号:

    useradd -s /sbin/nologin smb1
    smbpasswd  -a smb1(把linux账号smb1加为smb账号)
    smbpasswd smb1(更改smb1的口令)
SMB账号存储在/var/lib/samba/private/passdb.tdb

/etc/samba/smb.conf(#指说明 ;表是指令,同时注释)

1.  netbios name = smbsrv7 (配合systemctl status nmb服务使用)
    客户端验证:smbclient -L //smbsrv7 -U smb1%verimatrix
2.  hosts allow = 网段名字如192.168.12.
3. log设置
    log file = /var/log/samba/log.%m
    log level = 2
    max log size = 50
4. 家目录共享
    [homes]
    comment = Home Directories
    valid users = %S, %D%w%S
    browseable = No (yes表示隐藏,类似windows里共享加$)
    read only = No
    inherit acls = Yes
5. 共享目录 
    [share]  (共享文件夹名)
    comment=tools share
    path=/data/tools (实际共享的文件夹)
    writable = yes (/data/tools也要对smb用户对应的linux用户有写权限)
    read only = no
    public = yes (可以匿名访问,文件权限映射为Linux用户nobody)
    valid user = smb1
    write list =  +staff(在staff组里的可以写,不在此组的只读)
    valid user = smb1 smb2 (只允许smb1, smb2用户访问)
    valid user =+staff (staff组的用户可以访问)

实验

不同的用户访问同样的SAMBA共享文件夹,访问的资源不同

SAMBA服务器:
    mkdir /data/smb1
    mkdir /data/smb2
    vim /etc/samba/smb.conf
    config file = /etc/samba/conf.d/%U
    /etc/samba/conf.d
    vim smb1
        [share]
        path=/data/smb1
        writeable = yes
    vim smb2
        [share]
        path=/data/smb2
        writeable = yes
    SAMBA客户端:smb1和smb2访问是同一共享share,但是访问的资源不一。
    smbclient //172.20.42.201/share -U smb2%verimatrix
    smbclient //172.20.42.201/share -U smb1%verimatrix

多用户挂载(CentOS7支持)

客户端:
    建立和服务器同名的账户:
        useradd smb1
        useradd smb2
        useradd smb3
        mount -o username=smb3,password=verimatrix,multiuser //172.20.42.201/share /mnt/test
        su - smb1
        cifscreds add -u smb1 172.20.42.201 (输入密码是服务器smb1用户的密码)
        cd /mnt/test
        touch test.txt
        su - smb2
        cifscreds add -u smb2 172.20.42.201 
        cd /mnt/test
        touch test2.txt (失败,因为smb2不属于staff组)
服务器:
[share]
    path=/data/tools
    writable = no
    write list = +staff
创建smb1, smb2, smb3用户,同时smb1,smb3属于staff组。同时用smbpasswd –s把三个用户加入到smb用户数据库里。
posted @ 2018-06-28 12:01  Evan_Wolf  阅读(355)  评论(0编辑  收藏  举报