zoukankan      html  css  js  c++  java
  • RHEL7-Samba共享测试

    Linux<----->windows之间共享

    Samba使用2个进程
    smb    ip之间的通信用smb  (tcp)      
    nmb    主机名之间的通信用nmb (netbios协议)

    端口

    smb tcp   139  445
    nmb udp   137  138

    配置文件 /etc/samba/smb.conf

    安装samba

    yum install samba*
    firewall-cmd --permanent --add-service=samba # 添加防火墙策略
    firewall-cmd --reload
    systemctl restart smb  #启动或重启smb服务。nmb服务可以不用启动
    systemctl enable smb
    netstat -anplut | grep smb  #查看端口 139 445

    配置samba

    hosts allow = 192.168.100. EXCEPT 192.168.100.99
    hosts deny  = 192.168.10.0/24 192.168.1.
    同时出现,allow生效
    workgroup = MYGROUP    windows的工作组名
    server string = Samba Server Version %v
    #对方看到的共享信息,出于防止泄漏版本号的安全考虑,最好改掉
    log file = /var/log/samba/log.%m
    #%m代表客户端ip,多个客户端连接生成多个以客户端ip结尾的日志
    max log size = 50       
    #日志大小50K
    security = user    #设置共享的模式
    #share 不用输入用户名/密码 (注:rhel7.4中设置为share时报错“WARNING: Ignoring invalid value 'share' for parameter 'security'”)
    #user  服务器用口令文件进行验证,客户端连接需要提供用户名和口令
    #server 网络中配置专门的服务器认证
    #domain 使用微软的DC认证

    测试环境说明:

    LINUX系统:RHEL7.4

    物理机系统:win10

    虚拟机软件:OracleVirtualbox5.1

    RHEL1 IP:192.168.100.1 作为samba主服务器

    RHEL2 IP:192.168.100.2 作为客户机

    1、实验-share模式

    在RHEL1上
    yum install samba*
    firewall-cmd  --permanent --add-service=samba
    firewall-cmd --reload
    systemctl restart smb
    systemctl enable smb
    netstat -anplut | grep smb
    mkdir /share1 #创建测试目录及文件
    mkdir /share2
    mkdir /share3
    touch /share1/111111
    touch /share2/222222
    touch /share3/333333
    chmod o+rwx /share1    #生产中尽量采用setfacl赋权更安全
    chmod o+rwx /share2
    chmod o+rwx /share2
    chcon -R -t samba_share_t  /share1 #设置安全上下文
    chcon -R -t samba_share_t  /share2
    chcon -R -t samba_share_t  /share3
    getsebool -a | grep samba

    #部分samba服务需打开samba_export_all_rw和samba_enable_home_dirs
    # setsebool -P samba_export_all_rw  on
    # setsebool -P samba_enable_home_dirs on

    vim /etc/samba/smb.conf

    sercurity = share    #更改 
    [share1]        #客户端连接后看到的文件夹名
    comment = Public Stuff    #客户端连接后看到的描述
    path = /share1        #本地的真实路径
    public = yes         #share模式,此处必须为yes
    browseable = yes    #客户端可见

    在RHEL2上

    yum install -y samba-client cifs-utils
    smbclient  -L //192.168.100.1    #查看服务器共享目录,无需输入密码
    smbclient //192.168.100.1/share1    #无需输入密码即可进入
    smb: > ls
    smb: > get file1    #put上传
    如需写入需要在RHEL1的配置文件上打开writable = yes,并设置共享目录/share1有o+w权限
    批量下载
    smb: >prompt
    smb: >mget file*
    windows客户端
    设置虚拟机通过虚拟网络与真机连接
    \192.168.100.1
    net use * /del清除缓存

    2、实验-user模式

    客户端要使用用户名、密码登录,已经在服务器存在的用户名密码/etc/passwd,客户端使用的密码可以和服务器上的/etc/shadow不同。samba自己有一个文件保存用户名密码,必须public=no
    在RHEL1上
    useradd -s /sbin/nologin user1
    useradd -s /sbin/nologin user2
    useradd -s /sbin/nologin user3
    smbpasswd -a user1 #创建samba用户
    smbpasswd -a user2
    smbpasswd -a user3
    -d         禁用samba用户disable
    -e         允许samba用户enable
    -x         删除samba用户delete

    修改配置文件:

    vim /etc/samba/smb.conf

    security = user        #更改
    [share1]
    comment = samba-share1
    path = /share1
    public = no
    browseable = yes
    writable = yes

    [share2]
    comment = samba-share2
    path = /share2
    public = no
    browseable = yes
    writable = no
    write list = user1

    [share3]
    comment = samba-share3
    path = /share3
    public = no
    browseable = yes
    writable = no
    write list = user1    #只有user1授权写入
    valid users = user1   #只有user1授权登录

    systemctl restart smb #重启smb服务

    #优先级valid users>writable>write list
    #writable=yes表示所有用户都有写的权限
    #write list生效时必须writable=no
    #write list和valid users可采用user1 @shichangbu +shichangbu的格式,中间用空格分开

    在RHEL2上
    smbclient -L //192.168.100.1
    smbclient -U user1 //192.168.100.1/share1    #输入user1密码可进入
    用user1登录share1-3均可写入
    用user2登录share1可写入,share2可登陆不可写入,share3不可登录

    windows客户端测试
    设置虚拟机通过虚拟网络与真机连接
    \192.168.100.1
    net use * /del清除缓存
    如果搭建了samba服务,无法写入
    1.检测配置文件writable   write list
    2.检测文件系统是否有写的权限   ugo  setfacl
    3.检测selinux
    1.布尔值
    2.上下文
    4.防火墙

    3、实验-单独用户配置文件

    修改配置文件:vim /etc/samba/smb.conf
    [Golble]
    config file = /etc/samba/smb.conf.%U    #增加,%U代表用户名,以后有对应配置文件的用户将直接跳转读取自己的配置文件
    cp /etc/samba/smb.conf  /etc/samba/smb.conf.user3
    vim /etc/samba/smb.conf.user3
    删除config file = /etc/samba/smb.conf.%U

    [share3]
    comment = samba-share3
    path = /share3
    public = no
    browseable = yes
    writable = yes

    systemctl restart smb

    在RHEL2上
    smbclient -L  //192.168.100.1    #不输入密码可查看到所有共享资源
    smbclient -L  //192.168.100.1 -U user3    #输入user3的密码只可以看到自己的资源
    smbclient -U user3 //192.168.100.1/share3
    #之前user3对share3不可登录,现在可登陆可写入,由于自己的配置文件中没有share1和share2,所以user3不能登录share1和share2

    4、实验-普通挂载

    在RHEL2上

    mount -t cifs -o username=user1,password=user1 //192.168.100.1/share1/ /mnt/share1/

    #-t cifs可省略,系统会自动识别
    ll /mnt/share1/
    umount /mnt/share1/
    mount -o username=user1 //192.168.100.1/share1/ /mnt/share1/    #输入密码可挂载
    vim /etc/fstab
    //192.168.100.1/share1    /mnt/share1   cifs  credentials=/etc/filename  0  0

    vim /etc/filename
       user=user1
       pass=user1

    或者:
    //192.168.100.1/share1    /mnt/share1   cifs  username=user1%user1  0  0
    或者
    //192.168.100.1/share1    /mnt/share1   cifs  username=user1,password=user1   0  0

    #普通挂载su到其他用户可以直接使用挂载资源

    5、实验-multiuser方式挂载一个用户

    在RHEL1上
    pdbedit -L    #查看哪些用户可以挂载
    rm -f /etc/samba/smb.conf.user3

    vim /etc/samba/smb.conf.user3

    删除config file = /etc/samba/smb.conf.%U
     

    [share1]
    comment = samba-share1
    path = /share1
    public = no
    browseable = yes
    writable = no
    write list = user1
    valid users = user1 user2

    systemctl restart smb

    在RHEL2上
    useradd user1    #本地必须有和服务器对应的用户
    useradd user2
    useradd user3

    在root用户下执行挂载
    mount -o multiuser,user=user1,sec=ntlmssp  //192.168.0.1/share1   /mnt/share1

    #输入密码可挂载,也加入password=user1直接挂载

    su - user1

    ll /mnt/share1    #无权限
    cifscreds add 192.168.100.1   #输入RHEL1上user1的密码,从samba服务器获取认证
    ll /mnt/share1    #获得RHEL1上user1的权限,可登陆,可写入
    su - user2
    ll /mnt/share1    #无权限
    cifscreds add 192.168.100.1   #输入RHEL1上user2的密码,从samba服务器获取认证
    ll /mnt/share1    #获得RHEL1上user2的权限,可登陆,不可写入
    su - user3
    ll /mnt/share1    #无权限

    cifscreds add 192.168.100.1   #输入RHEL1上user3的密码,从samba服务器获取认证
    或者cifscreds update //192.168.100.1 #更新认证
    ll /mnt/share1    #获得RHEL1上user3的权限,不可登陆
    在root用户下cifscreds clearall可清除获得的认证,su到其他用户需重新获取认证
    多用户各自有配置文件的情况,可以建立用户文件,一次挂载多个用户,

    vim /sambauser.txt
    username=user1
    password=user1
    username=user2
    password=user2
    mount -o multiuser,credentials=/sambauser.txt,sec=ntlmssp //192.168.100.1/share1 /mnt/share1

    fstab自动挂载

    //192.168.100.1/share1 /mnt/share1 cifs defaults,multiuser,credentials=/sambauser.txt,sec=ntlmssp     0 0

    mount -a

    smb客户端的multiuser挂载技术
    --管理员只需要作一次挂载
    --客户端在访问挂载点时,若需要不同权限,可临时切换新的共享用户【无需重新挂载】
    实现方式
    --挂载smb共享时启用multiuser支持
    --使用cifscreds临时切换身份
    挂载参数调整
    mount.cifs的挂载参数
    --multiuser, 对客户端多个用户身份的区分支持
    --sec=ntlmssp,NT局域网管理安全支持
  • 相关阅读:
    算法53----换钱的最小次数和方法数【动态规划】
    算法52-----矩阵最小路径【动态规划】
    Data
    Git
    Git
    Git
    Git
    DevOps
    Docker
    Tools
  • 原文地址:https://www.cnblogs.com/rusking/p/7629445.html
Copyright © 2011-2022 走看看