【第18天】
vsftpd----very secure ftp
dnf install vsftpd
主配置文件:/etc/vsftjpd/vsftpd.conf
umask-----反掩码 文件–666 目录—777
端口号:21–控制端口 20–传输数据
三种验证模式:
1、匿名公开模式
使用的目录:/var/ftp
anonymous_enable=YES
anon_uamsk=022
anon_upload_enable=YES---------上传文件权限
anon_mkdir_write_enable=YES--------新建文件权限
anon_other_write_enable=YES------其他的写入权限(复制,粘贴,剪切)
1)匿名公开使用的目录:/var/ftp
chmod -R 777 /var/ftp
2)SElinux:
getsebool -a | grep ftp
setsebool -P ftpd_anon_write=on
setsebool -P ftpd_full_access=on
2、本地用户模式:
使用的目录:本地用户的家目录
local_enable=YES
local_uamsk=022
write_enable=YES
禁止名单:/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
userlist_deny=YES
userlist_enable=YES
pam_service_name=vsftpd
3、虚拟用户模式:
使用的目录:映射用户的家目录
anonymous_enable=NO 禁止匿名开放模式
local_enable=YES 允许本地用户模式
guest_enable=YES 开启虚拟用户模式
guest_username=virtual 指定虚拟用户账户
pam_service_name=vsftpd.vu 指定PAM文件
allow_writeable_chroot=YES 允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求(牢笼机制)
user_config_dir=/etc/vsftpd/vuser_dir-----针对不同的虚拟用户设置不同的权限
vim zhangsan
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
vim lisi---------为空则使用虚拟用户的默认权限(啥都没)
为什么能访问本机用户与密码?
pam模块:—可插拔式认证模块
应用程序通过pam提供的api可访问鉴别模块层
新建一个用于虚拟用户认证的PAM文件vsftpd.vu,其中PAM文件内的“db=”参数为使用db_load命令生成的账户密码数据库文件的路径,但不用写数据库文件的后缀:
创建虚拟用户:
vim /etc/vsftpd/vuser.list
账号
密码
账号
密码
加密:
db_load -T -t hash -f vuser.list vuser.db
chmod 600 vuser.db
建立映射用户:
useradd virtualuser
建立映射关系:
chmod -Rf 722 /home/virtualuser
guest_username=virtual 指定虚拟用户账户
创建pam模块:
[root@linuxprobe ~]# vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
-----------------------------简单文件传输协议 TFTP 69/udp
dnf isntall tftp-server tftp xinetd
使用的目录:/var/lib/tftpboot
tftp----太简单了,所以说有些服务没有(如:ls)
xinetd---------守护程序,发起程序,带动并配置tftp服务
vim /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
重启xinetdtftp服务
systemctl restart tftp
systemctl enable tftp
systemctl restart xinetd
systemctl enable xinetd
firewall-cmd --zone=public --permanent --add-port=69/udp
success
firewall-cmd --reload
success
登陆后使用的目录:/var/lib/tftpboot
tftp命令中可用的参数以及作用
参数 作用
? 帮助信息
put 上传文件
get 下载文件
verbose 显示详细的处理信息
status 显示当前的状态信息
binary 使用二进制进行传输
ascii 使用ASCII码进行传输
timeout 设置重传的超时时间
quit 退出
------------------------------------------------------SAMBA文件共享服务
SMB(Server Messages Block,服务器消息块)协议
1991年,当时还在读大学的Tridgwell为了解决Linux系统与Windows系统之间的文件共享问题,基于SMB协议开发出了SMBServer服务程序。这是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作。
Samba服务程序现在已经成为在Linux系统与Windows系统之间共享文件的最佳选择。
dnf install samba samba-client
vim /etc/samba/smb.conf
[global]
workgroup = SAMBA-----工作组–“网上邻居”
security = user ------验证模式:1、share 2、user 3、domain 4、server
passdb backend = tdbsam
security参数代表用户登录Samba服务时采用的验证方式。总共有4种可用参数。
share:代表主机无须验证密码。这相当于vsftpd服务的匿名公开访问模式,比较方便,但安全性很差。
user:代表登录Samba服务时需要使用账号密码进行验证,通过后才能获取到文件。这是默认的验证方式,最为常用。
domain:代表通过域控制器进行身份验证,用来限制用户的来源域。
server:代表使用独立主机验证来访用户提供的密码。这相当于集中管理账号,并不常用。
在最早期的RHEL/CentOS系统中,Samba服务使用的是PAM(可插拔认证模块)来调用本地账号和密码信息,后来在5、6版本中替换成了用smbpasswd命令来设置独立的Samba服务账号和密码。到了RHEL 7/8版本,则又进行了一次改革,将传统的验证方式换成使用tdbsam数据库进行验证。这是一个专门用于保存Samba服务账号密码的数据库,用户需要用pdbedit命令进行独立的添加操作,下文中会有实战演示。
----------------配置共享资源
参数 作用
[database] 共享名称为database,----访问时使用
comment = Do not arbitrarily modify the database file 警告用户不要随意修改数据库
path = /home/database 共享目录为/home/database
public = no 关闭“所有人可见”
writable = yes 允许写入操作
第1步:创建用于访问共享资源的账户信息。
用于pdbedit命令的参数以及作用
参数 作用
-a 用户名 建立Samba用户
-x 用户名 删除Samba用户
-L 列出用户列表
-Lv 列出用户详细信息的列表
pdbedit -a -u linuxprobe
new password:此处输入该账户在Samba服务数据库中的密码
retype new password:再次输入密码进行确认
第2步:创建用于共享资源的文件目录。
[root@linuxprobe ~]# mkdir /home/database
[root@linuxprobe ~]# chown -Rf linuxprobe:linuxprobe /home/database
[root@linuxprobe ~]# semanage fcontext -a -t samba_share_t /home/database
[root@linuxprobe ~]# restorecon -Rv /home/database
Relabeled /home/database from unconfined_u:object_r:user_home_dir_t:s0 to unconfined_u:object_r:samba_share_t:s0
第3步:设置SELinux服务与策略,使其允许通过Samba服务程序访问普通用户家目录。
getsebool -a | grep samba
setsebool -P samba_enable_home_dirs on
第4步:在Samba服务程序的主配置文件中,根据表12-2所提到的格式写入共享信息。
[root@linuxprobe ~]# vim /etc/samba/smb.conf
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
[database]--------共享名称,访问时用的也是这个
comment = Do not arbitrarily modify the database file
path = /home/database
public = no
writable = yes
第5步:Samba服务程序的配置工作基本完毕。Samba服务程序在Linux系统中的名字为smb,所以重启smb服务并加入到启动项中,保证在重启服务器后依然能够为用户持续提供服务。
[root@linuxprobe ~]# systemctl restart smb
[root@linuxprobe ~]# systemctl enable smb
Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service.
访问:smbclient -U linuxprobe -L 192.168.10.10



