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

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

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

samba设置账户密码登录

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

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

pdbedit -au test

出现这样的提示信息代表samba账户创建成功
CentOS 8中Smaba服务的安装与配置

防火墙开放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配置文件设置好即可。_

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

上一篇:远程访问Linux操作系统里面的MySQL数据库


下一篇:linux下mysql开启远程访问并开启3306端口