开心一刻
一家飞机上边有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账户创建成功
防火墙开放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配置文件设置好即可。_
文中都是我个人的理解,如有错误的地方欢迎下方评论告诉我,我及时更正,大家共同进步