首页 > 其他分享 >Vsftpd 三种用户模式

Vsftpd 三种用户模式

时间:2024-09-01 20:14:01浏览次数:9  
标签:ftp ftpd vsftpd zhpj etc 用户 Vsftpd 三种 root

Vsftpd 三种用户模式

命令行模式下登录后,执行 help 可以看下能执行的命令有哪些。ls 查看服务器上的文件,!ls 查看本地的文件

匿名用户(不安全)

使用 ftp 或 anonymous 用户登录,而不需要输入密码,默认访问的目录是 /var/ftp​(这个目录的权限不能被设置为 777)

相关配置:

anonymous_enable=YES
anno_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

SELinux 会导致无法上传:

[root@zhpj ~]# getsebool -a | grep ftp
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off
[root@zhpj ~]# 

需要开启 ftpd_anon_write​ 和 ftpd_full_access

[root@zhpj ~]# setsebool -P ftpd_anon_write on
[root@zhpj ~]# 
[root@zhpj ~]# setsebool -P ftpd_full_access on
[root@zhpj ~]#

本地用户(较不安全)

通过系统本地用户登录,需要输入密码。

相关配置:

local_enable=YES
write_enable=YES
local_umask=022

# 下面两行限制通过 ftp 登录后限制在用户的家目录里(手册里并不建议开启此选项)
#chroot_local_user=YES
#allow_writeable_chroot=YES

ftpusers 是黑名单,user_list 可以是黑名单也可以是白名单。ftpusers 的优化级大于 user_list 的。

[root@zhpj ~]# ftp 192.168.71.128
Connected to 192.168.71.128 (192.168.71.128).
220 (vsFTPd 3.0.5)
Name (192.168.71.128:root): root
530 Permission denied.
Login failed.
ftp> 

默认 userlist_deny​ 为 YES,user_list 中的用户禁止登录:

[root@zhpj ~]# cat /etc/vsftpd/user_list 
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
[root@zhpj ~]# 

[root@zhpj ~]# ftp 192.168.71.128
Connected to 192.168.71.128 (192.168.71.128).
220 (vsFTPd 3.0.5)
Name (192.168.71.128:root): zhpj01
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 
ftp> pwd
257 "/home/zhpj01" is the current directory
ftp> 

默认情况下无法下载隐藏文件:

ftp> put anaconda-ks.cfg
local: anaconda-ks.cfg remote: anaconda-ks.cfg
227 Entering Passive Mode (192,168,71,128,75,126).
150 Ok to send data.
226 Transfer complete.
975 bytes sent in 0.000513 secs (1900.58 Kbytes/sec)
ftp>
ftp> get test_tr.txt
local: test_tr.txt remote: test_tr.txt
227 Entering Passive Mode (192,168,71,128,73,171).
150 Opening BINARY mode data connection for test_tr.txt (385 bytes).
226 Transfer complete.
385 bytes received in 0.000456 secs (844.30 Kbytes/sec)
ftp>
ftp> get .local
local: .local remote: .local
227 Entering Passive Mode (192,168,71,128,27,61).
550 Failed to open file.
ftp>

虚拟用户(安全)

用户名和密码保存到数据库文件,将虚拟机用户映射到无法登录系统的用户上。

创建用户列表 vuser.list​,单行是用户名,双行是密码:

[root@zhpj ~]# vim /etc/vsftpd/vuser.list 
[root@zhpj ~]# cat /etc/vsftpd/vuser.list 
abc
123
def
123
[root@zhpj ~]# 

通过 db_load 将明文密码转为加密的:

[root@zhpj ~]# yum install -y libdb-utils
[root@zhpj ~]# 
[root@zhpj ~]# db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db
[root@zhpj ~]# 
[root@zhpj ~]# chmod 600 /etc/vsftpd/vuser.db 
[root@zhpj ~]# 

PAM模块——可插拔认证模块

创建认证配置,并将配置文件名称替换到 vsftpd.conf 文件中(pam_service_name=vsftpd.vu​)

[root@zhpj ~]# vim /etc/pam.d/vsftpd.vu
[root@zhpj ~]# 
[root@zhpj ~]# cat /etc/pam.d/vsftpd.vu 
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
[root@zhpj ~]# 

修改 vsftpd 的配置文件:

guest_enable=YES
guest_username=www
allow_writeable_chroot=YES
user_config_dir=/etc/vsftpd/vusers.d
#pam_service_name=vsftpd
pam_service_name=vsftpd.vu

创建每个用户的虚拟配置文件:

[root@zhpj ~]# mkdir /etc/vsftpd/vusers.d
[root@zhpj ~]# 
[root@zhpj ~]# touch /etc/vsftpd/vusers.d/{abc,def}
[root@zhpj ~]#
[root@zhpj ~]# vim /etc/vsftpd/vusers.d/abc 
[root@zhpj ~]# cat /etc/vsftpd/vusers.d/abc 
virtual_user_local_privs=YES
local_umask=022
# 给这个虚拟用户设置独立的目录
# local_root=/custom/path
[root@zhpj ~]# 

创建虚拟用户映射到的系统用户(此用户禁止登录系统):

[root@zhpj ~]# groupadd -r www && useradd -r -g www -s /sbin/nologin -m www
[root@zhpj ~]# 

使用虚拟的 ftpd 用户登录:

[root@zhpj ~]# ftp 192.168.71.128
Connected to 192.168.71.128 (192.168.71.128).
220 (vsFTPd 3.0.5)
Name (192.168.71.128:root): abc
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 
ftp> pwd
257 "/home/www" is the current directory
ftp>

标签:ftp,ftpd,vsftpd,zhpj,etc,用户,Vsftpd,三种,root
From: https://www.cnblogs.com/zhpj/p/18391653/vsftpd-three-user-mode-z25mla

相关文章

  • python读取txt文本文件-批量更改mysql数据库中一批用户的用户名的python脚本保存及转
    一、python读取txt文本文件-批量更改mysql数据库中一批用户的用户名的python脚本保存    做一个简单的事:使用python读取一个txt文件,里面存储着N行用户id,需要一行行读取后再读取另一个存储用户昵称的txt文件,判断昵称是否有重复,如果没有重复就将数据库中的当前uid用户的昵称......
  • 【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
    目录......
  • 240722 knn 使用皮尔逊找到相似用户
    importjsonimportnumpyasnp#计算皮尔逊系数defpearson_score(dataset,user1,user2):ifuser1notindataset:raiseTypeError('User'+user1+'notpresentinthedataset')ifuser2notindataset:raiseType......
  • 240721 knn 计算用户1和用户2之间的评分-相关度
    knn通过计算电影相关度,计算用户1和用户2的评分importjsonimportnumpyasnp#计算欧式距离分数defeuclidean_score(dataset,user1,user2):ifuser1notindataset:raiseTypeError('User'+user1+'notpresentinthedataset')ifuser2n......
  • MongoDB 中国用户大会8月31日 (MongoDB 8.0 发布)
    1.会议时间地点「2024MongoDB中国用户大会」上海站线下活动(2024年8月31日09:00)正式开始,开放签到时间08:00-09:00。活动地址:上海凯宾斯基酒店3F舜华宴会厅(上海市浦东新区陆家嘴环路1288号)2.会议内容:MongoDB8.0闪亮登场:基于YC88和T888的基准测试OLTP,时......
  • 鸿蒙(HarmonyOS)常见的三种弹窗方式
    最近有一个想法,做一个针对鸿蒙官方API的工具箱项目,介绍常用的控件,以及在项目中如何使用,今天介绍Harmony中如何实现弹窗功能。警告弹窗警告弹窗是一个App中非常常用的弹窗,例如:删除一条记录,提示一下用户:您确定要删除吗?在App首页,点击返回时,提示一下用户:您确定要退出App吗?使用A......
  • [js] 页面可见性API 监测用户切屏
    PageVisibilityAPI在做考试系统或者网课系统的时候,通常需要监测用户是否隐藏了当前标签页在看其它页面。PageVisibilityAPI提供了一个事件和两个状态来监测页面可见性,可以用它来判断用户是否切屏。visibilitychange这个事件会在页面可见性变化时触发。(隐藏时、打开时)//......
  • [js] 页面可见性API 监测用户切屏
    PageVisibilityAPI在做考试系统或者网课系统的时候,通常需要监测用户是否隐藏了当前标签页在看其它页面。PageVisibilityAPI提供了一个事件和两个状态来监测页面可见性,可以用它来判断用户是否切屏。visibilitychange这个事件会在页面可见性变化时触发。(隐藏时、打开时)//......
  • [js] 页面可见性API 监测用户切屏
    PageVisibilityAPI在做考试系统或者网课系统的时候,通常需要监测用户是否隐藏了当前标签页在看其它页面。PageVisibilityAPI提供了一个事件和两个状态来监测页面可见性,可以用它来判断用户是否切屏。visibilitychange这个事件会在页面可见性变化时触发。(隐藏时、打开时)//......
  • [js] 页面可见性API 监测用户切屏
    PageVisibilityAPI在做考试系统或者网课系统的时候,通常需要监测用户是否隐藏了当前标签页在看其它页面。PageVisibilityAPI提供了一个事件和两个状态来监测页面可见性,可以用它来判断用户是否切屏。visibilitychange这个事件会在页面可见性变化时触发。(隐藏时、打开时)//......