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局域网管理安全支持
  • 相关阅读:
    Coursera机器学习week11 单元测试
    关于 TypeReference 的解释
    getModifiers 方法解释。
    instanceof isInstance isAssignableFrom 比较
    elasticsearch 基础 语法总结
    kibana 启动 关闭 和进程查找
    MD5 SHA1 SHA256 SHA512 SHA1WithRSA 的区别
    spring boot 项目 热启动
    java zip 压缩文件
    Packet for query is too large (1660 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
  • 原文地址:https://www.cnblogs.com/rusking/p/7629445.html
Copyright © 2011-2022 走看看