SAMBA文件共享服务
在讲解FTP文件传输服务确实可以让主机之间的文件传输变得简单方便,但是FTP协议的本质是传输文件,而非共享文件,因此要想通过客户端直接在服务器上修改文件内容还是一件比较麻烦的事情。
首先需要先通过软件仓库来安装Samba服务程序(Samba服务程序的名字也恰巧是软件包的名字),顺手再安装一个samba-client软件包,这是用于一会测试共享目录的客户端程序
[root@linuxprobe ~]# dnf install samba samba-client
安装完毕后打开Samba服务程序的主配置文件,好在参数并不多,只有37行。其中第17至22行代表共享该登录用户的家目录内容,虽然某些情况下可以更方便的共享文件,但这个默认操作着实有些危险,建议删除掉不要共享;而24-29行是用SMB协议共享本地的打印机设备,方便局域网内的用户可以远程使用,当前我们没有打印机设备,因此也删除掉不共享;最后的31至37行依然为共享打印机设备的参数,同样建议予以删除。
[root@linuxprobe ~]# vim /etc/samba/smb.conf
1 # See smb.conf.example for a more detailed config file or
2 # read the smb.conf manpage.
3 # Run 'testparm' to verify the config is correct after
4 # you modified it.
5
6 [global]
7 workgroup = SAMBA
8 security = user
9
10 passdb backend = tdbsam
11
12 printing = cups
13 printcap name = cups
14 load printers = yes
15 cups options = raw
16 #以下全部删除
17 [homes]
18 comment = Home Directories
19 valid users = %S, %D%w%S
20 browseable = No
21 read only = No
22 inherit acls = Yes
23
24 [printers]
25 comment = All Printers
26 path = /var/tmp
27 printable = Yes
28 create mask = 0600
29 browseable = No
30
31 [print$]
32 comment = Printer Drivers
33 path = /var/lib/samba/drivers
34 write list = @printadmin root
35 force group = @printadmin
36 create mask = 0664
37 directory mask = 0775
对着Samba服务的主配置文件一顿删减操作,最后的有效配置参数只剩下了8行。所剩不多的参数中,我们还能继续删除不需要的参数,例如5-8行参数中所提到的cups全称叫做Common UNIX Printing System,中文名叫通用UNIX打印系统服务,依然是用于打印机或打印服务器的,继续予以删除。
[root@linuxprobe ~]# cat /etc/samba/smb.conf
1 [global]
2 workgroup = SAMBA
3 security = user
4 passdb backend = tdbsam
5#以下删除
6 printing = cups
7 printcap name = cups
8 load printers = yes
8 cups options = raw
注意:删除掉不需要的代码是常规操作,能够让服务程序“轻装前进”,关闭非必要功能,实现更好的性能,把硬件资源用到刀刃上。其次还能让运维人员更好的找到所需的代码,对比一百行代码来讲,从十行代码中找到一个参数要容易很多。
参数 | 作用 |
---|---|
[global] | 全局参数 |
workaroup = SAMBA | 工作组名称 |
security = user | 安全验证的方式,总共有4种) |
passdb backend = tdbsam | 定义用户后台的类型,总共有3种 |
printing = cups | 打印服务协议 |
printcap name = cups | 打印服务名称 |
load printers = yes | 是否加载打印机 |
cups options = raw | 打印机的选项 |
[homes] | 共享名称 |
comment = Home Directories | 描述信息 |
valid users= %S,%D%w%S | 可用账户 |
browseable=No | 指定共享信息是否在”网上邻居“中可见 |
read only = No | 是否只读 |
inherit acls = Yes | 是否继承访问控制列表 |
[printers] | 共享名称 |
comment = All Printers | 描述信息 |
path = /var/tmp | 共享路径 |
printable = Yes | 是否可打印 |
create mask = 0600 | 文件权限 |
browseable = No | 指定共享信息是否在"网上邻居"中可见 |
[print$] | 共享名称 |
comment = Printer Drivers | 描述信息 |
path=/var/lib/samba/drivers | 共享路径 |
write list= @printadmin root | 可写入文件的用户列表 |
force group = @printadmin | 用户组列表 |
create mask = 0664 | 文件权限 |
directory mask = 0775 | 目录权限 |
1.#share:来访主机无需验证密码口令;比较方便,但安全性较差
2.#user:需验证来访主机提供的口令后才可以访问;提高了安全性
3.#server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
4.#domain:使用域控制器进行身份验证
1.#smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码
2.#tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
3.#ldapsam:基于LDAP服务进行账户验证
全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资源都有效。区域配置参数则用于设置单独的共享资源,且仅对该资源有效。创建共享资源的方法很简单,只要将表中的参数写入到Samba服务程序的主配置文件中,然后重启该服务即可。
参数 | 作用 |
---|---|
[database] | 共享名称为database |
comment = Do not arbitrarily modify the database file | 警告用户不要随意修改数据库 |
path = /home/database | 共享目录为/home/database |
public = no | 关闭”所有人可见“ |
writable = yes | 允许写入操作 |
创建用于访问共享资源的账户信息。在RHEL 8系统中,Samba服务程序默认使用的是用户口令认证模式(user)。这种认证模式可以确保仅让有密码且受信任的用户访问共享资源,而且验证过程也十分简单。不过,只有建立账户信息数据库之后,才能使用用户口令认证模式。另外,Samba服务程序的数据库要求账户必须在当前系统中已经存在,否则日后创建文件时将导致文件的权限属性混乱不堪,由此引发错误。
pdbedit命令用于管理samba服务程序的账户信息数据库,格式为“pdbedit [选项] 账户”。在第一次把账户信息写入到数据库时需要使用-a参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。
参数 | 作用 |
---|---|
-a 用户名 | 建立Samba用户 |
-x 用户名 | 删除Samba用户 |
-L | 列出用户列表 |
-Lv | 列出用户详细信息的列表 |
[root@linuxprobe ~]# id linuxprobe
uid=1000(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe)
[root@linuxprobe ~]# pdbedit -a -u linuxprobe
new password:此处输入该账户在Samba服务数据库中的密码
retype new password:再次输入密码进行确认
Unix username: linuxprobe
NT username:
Account Flags: [U ]
User SID: S-1-5-21-650031181-3622628401-3290108334-1000
Primary Group SID: S-1-5-21-650031181