zoukankan      html  css  js  c++  java
  • CentOS 8中Smaba服务的安装与配置

    开心一刻

           一家飞机上边有100块砖头,扔下来一块还有多少块?
           答案:99块。
           把大象塞进冰箱需要几步?
           3步 1.打开冰箱门 2.把大象塞进去 3.把冰箱门关上。
           把长颈鹿塞进冰箱需要几步?
           4步 1.把冰箱门打开 2.把大象捞出来 3.把长颈鹿塞进去 4.把冰箱门关上。
           动物之王老虎过生日,所有动物都去了,只有一个动物没去,是谁?
           长颈鹿,在冰箱里呢。。
           一个老太太在鳄鱼池里游泳,没被鳄鱼吃了,为什么?
           鳄鱼去参加老虎的生日去了。
           为什么老太太又死了?
           被天上掉下来的砖头砸死了。

    写在前面

           之前想要做到windows和linux系统之间文件共享,一个比较常用的方式是可以使用FTP,或者使用一些linux命令,例如scp、sftp、rz、sz等。后来发现一个我觉得更加好用的工具,就是Samba服务,同时我也尝试在虚拟机上配置了一下,确实很好用,这里特别写一篇博客记录一下配置的过程,不同的linux发行版都大同小异,遇到问题上网搜索一下应该也都能够解决。

    Samba服务安装及相关参数

    在CentOS 8中已经使用dnf安装软件包了(yum仍可使用,实际上就是dnf的一个软连接),所以我这里使用dnf安装samba。

    dnf install -y samba
    

    Samba服务的配置文件在/etc/samba/smb.conf中,其中的一些常用参数记录如下:

    [global] 参数 作用
    workgroup = SAMBA 工作组名称
    security = user 安全验证的方式,就使用默认的user即可,较新的samba服务将share和server弃用了,具体可以查看/etc/samba/smb.conf.example的说明
    passdb backend = tdbsam 定义用户后台的类型,共有三种
    printing = cups 设置Samba共享打印机的类型
    printcap name = cups 在 UNIX System V 系统上自动获取打印机列表
    load printers = yes 设置smaba服务启动时是否共享打印机设备
    cpu options = raw 打印机选项
    [homes] 共享参数名,名称可随意,设置好后在访问时显示的名称即为该名称
    comment = Home Directories 描述信息,也是可随意设置的,起到一个提示的作用
    valid users = %S, %D%w%S 用来指定允许访问该共享资源的用户
    browseable = No 指定共享信息是否在“网上邻居”可见
    read only = No 是否只读
    inherit acls = Yes 是否继承上一级的acl
    public = yes 是否公开(指明该共享资源是否能给游客帐号访问)
    guest ok = yes 与public意思相同
    inherit owner = yes 上传的文件继承父目录的所有者, 而不是使用登录的账号名。
    create mask = 1600 创建或上传文件时文件的权限
    directory mask = 1777 创建或上传目录时目录将被赋予的权限
    force directory mode = 1000 为目录加上sbit权限
    writable = yes 是否可上传文件
    [printers] 打印机共享参数,不要共享打印机可以忽略这部分配置信息,甚至可以直接删除
    comment = Printer Drivers 说明信息,内容可随意
    path = /var/tmp 共享路径

    打印机的功能我也没有使用过,还有一些相关参数我也不写了。

    Samba服务配置

    这里是我自己的配置文件内容,我在修改的时候先用cp命令做了一下备份。

    sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
    

    这里是我的配置文件信息:

    [global]
            workgroup = SAMBA
            security = user
    
            passdb backend = tdbsam
    
            printing = cups
            printcap name = cups
            load printers = yes
            cups options = raw
    
    [home]
            comment = Do not arbitrarily modify the file
            path = /home
            public = no
            writable = yes
            force directory mode = 1000
    

    修改好后重启samba服务,可以使用testparm命令检查samba配置文件内容是否正确。

    sudo systemctl restart smb
    sudo systemctl enable smb #第一次使用可以将其加入到开机启动项,让其开机自动启动。
    

    samba设置账户密码登录

    Samba中设置账户密码访问时要求使用系统中已存在的用户,否则创建不成功。我这里使用的是我系统中的普通账户,然后共享目录为家目录,这样只需要为每位用户创建samba账户密码,就可以直接访问各自的家目录,然后有什么需要上传或者下载的文件就可以非常方便地完成。

    我使用我自己的普通账户作为samba账户,使用以下命令设置,然后输入密码即可设置成功,samba账户的密码与用户密码不冲突,不需要设置成一样的。

    pdbedit -au test
    

    出现这样的提示信息代表samba账户创建成功
    image

    防火墙开放samba服务

    centOS8中使用firewalld服务作为默认的防火墙配置管理工具。只需要让firewalld允许samba服务通过防火墙即可。

    sudo firewall-cmd --zone=public --permanent --add-service=samba
    sudo firewall-cmd --reload
    

    如果使用的是图形化界面,那么也可以使用firewall-config工具,效果与firewall-cmd相同,但是比firewall-cmd要好用,不过cnetOS8好像没有默认装firewall-config,可以使用sudo dnf install firewall-config安装。

    防火墙开放samba服务的命令执行后,可以使用以下命令查看是否成功

    sudo firewall-cmd --zone=public --permanent --query-service=samba
    

    出现success字样说明启动是成功的。

    修改Selinux域策略

    因为设置访问家目录,而linux中由于Selinux的存在,samba是无法访问家目录的(除非关闭Selinux)。不关闭Selinux的情况下,可以通过修改Selinux的域策略来允许通过Samba服务程序访问普通用户家目录。

    可以先使用下面的命令查看一下有那些samba相关的域策略

    getsebool -a | grep samba
    

    然后修改Selinux域策略

    setsebool -P samba_enable_home_dirs on
    

    成功设置后,可以找一台同一个局域网中的电脑,然后使用win+R组合键,在运行框中输入\\samba服务器ip地址,然后回车,如果设置没有问题,就会弹出一个要求输入账号密码的对话框。

    结语

           这篇博文介绍在CentOS8中配置samba服务程序,实现linux与windows之间文件的共享,samba服务配置成功后,访问linux上的程序就像访问windows一样简单,是一个非常使用的工具了。其他linux发行版大同小异,若是嫌麻烦,甚至可以直接关掉防火前和Selinux,只需要将samba配置文件设置好即可。_

    文中都是我个人的理解,如有错误的地方欢迎下方评论告诉我,我及时更正,大家共同进步

  • 相关阅读:
    SQL Server 执行参数化脚本时的一个性能问题
    2021 年终总结
    循序渐进——NAnt构建实例
    用C#实现单链表(创建单链表,在头部插入)
    用C#实现单链表(插入,在第i个前插,在第i个后插)
    用C#实现单链表(merge两个有序单链表)
    用C#实现单链表(取第i个结点元素,删除第i个结点)
    播放器03:以文件夹的形式添加整个文件夹里面的文件到播放列表,播放刚加进来的第一首歌曲,默认顺序播放
    用C#实现单链表(初始化数据,返回链表元素个数)
    ObjectiveC中创建单例方法的步骤
  • 原文地址:https://www.cnblogs.com/xingyu666/p/15571445.html
Copyright © 2011-2022 走看看