自学内容网 自学内容网

linux 安装 vsftpd 服务以及配置全攻略,vsftpd 虚拟多用户多目录配置,为每个用户配置不同的使用权限

linux 安装 vsftpd 服务以及配置全攻略,vsftpd 虚拟多用户多目录配置,为每个用户配置不同的使用权限。

在这里插入图片描述

linux 安装 vsftpd 服务以及配置全攻略

FTP 是 File Transfer Protocol 的简称,用于 Internet 上的控制文件的双向传输。同时,他也是一个应用程序,基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一协议传输文件。在 FTP 的使用当中,用户经常遇到两个概念:上传和下载,下载文件就是从远程主机拷贝文件到自己的计算机上,上传文件是指将自己计算机中的文件拷贝至远程主机上。FTP 常用于开发阶段文件上传工具,常用的客户端软件有 filezilla、flashfxp、winscp、xftp 等

服务端安装
服务端最常用的软件就是 vsftpd,其安装方式也很简单,如下:

yum install vsftpd -y # CentOS
apt-get install vsftpd -y # Ubuntu

启动与停止命令如下:

systemctl start vsftpd.service # 启动
systemctl stop vsftpd.service # 停止
systemctl restart vsftpd.service # 重启

或者:

service vsftpd start # 启动
service vsftpd stop # 停止
service vsftpd restart # 重启

配置
配置文件说明
vsftpd 的默认基础配置文件位于 /etc/vsftpd/vsftpd.conf,这个文件是 vsftpd 的核心配置文件,操作修改之前最好先备份,配置文件内容的基础说明:

# 是否允许匿名登录 FTP 服务器,默认设置为 NO 表示允许
# 用户可使用用户名 ftp 或 anonymous 进行 ftp 登录,口令为用户的 E-mail 地址。
# 如在内网使用不需要登录可设置为 YES
anonymous_enable=NO
# 是否允许本地用户(即 linux 系统中的用户帐号)登录 FTP 服务器,默认设置为 YES 允许
# 本地用户登录后会进入用户主目录,而匿名用户登录后进入匿名用户的下载目录 /var/ftp/pub
# 若只允许匿名用户访问,前面加上#注释掉即可阻止本地用户访问 FTP 服务器
local_enable=YES
# 是否允许本地用户对 FTP 服务器文件具有写权限,默认设置为 YES 允许
write_enable=YES 
# 掩码,本地用户默认掩码为 077
# 你可以设置本地用户的文件掩码为缺省 022,也可根据个人喜好将其设置为其他值
local_umask=022
# 是否允许匿名用户上传文件,须将全局的 write_enable=YES 默认为 NO
#anon_upload_enable=YES
# 是否允许匿名用户创建新文件夹
#anon_mkdir_write_enable=YES 
# 是否激活目录欢迎信息功能
# 当用户用 CMD 模式首次访问服务器上某个目录时,FTP 服务器将显示欢迎信息
# 默认情况下,欢迎信息是通过该目录下的 .message 文件获得的
# 此文件保存自定义的欢迎信息,由用户自己建立
dirmessage_enable=YES
# 是否让系统自动维护上传和下载的日志文件
# 默认情况该日志文件为 /var/log/vsftpd.log 也可以通过下面的 xferlog_fil e选项对其进行设定
xferlog_enable=YES
# 是否设定 FTP 服务器将启用 FTP 数据端口的连接请求
# ftp-data 数据传输,21 为连接控制端口
connect_from_port_20=YES
# 设定是否允许改变上传文件的属主,与下面一个设定项配合使用
# 注意,不推荐使用 root 用户上传文件
#chown_uploads=YES
# 设置想要改变的上传文件的属主,如果需要,则输入一个系统用户名
# 可以把上传的文件都改成 root 属主。whoever:任何人
#chown_username=whoever
# 设定系统维护记录 FTP 服务器上传和下载情况的日志文件
# /var/log/vsftpd.log 是默认的,也可以修改为其它
#xferlog_file=/var/log/vsftpd.log
# 是否以标准 xferlog 的格式书写传输日志文件
# 默认为 /var/log/xferlog,也可以通过 xferlog_file 选项对其进行设定
# 默认值为 YES
xferlog_std_format=YES
# 设置数据传输中断间隔时间,此语句表示空闲的用户会话中断时间为 600 秒
# 即当数据传输结束后,用户连接 FTP 服务器的时间不应超过 600 秒。可以根据实际情况对该值进行修改
#idle_session_timeout=600
# 设置数据连接超时时间,该语句表示数据连接超时时间为 120 秒,可根据实际情况对其个修改
#data_connection_timeout=120
# 运行 vsftpd 需要的非特权系统用户,缺省是 nobody
#nopriv_user=ftpsecure
# 是否识别异步 ABOR 请求。
# 如果 FTP client 会下达 “async ABOR” 这个指令时,这个设定才需要启用
# 而一般此设定并不安全,所以通常将其注释
#async_abor_enable=YES
# 是否以 ASCII 方式传输数据。默认情况下,服务器会忽略 ASCII 方式的请求。
# 启用此选项将允许服务器以 ASCII 方式传输数据
# 不过,这样可能会导致由 "SIZE /big/file" 方式引起的 DoS 攻击
#ascii_upload_enable=YES
#ascii_download_enable=YES
# 登录 FTP 服务器时显示的欢迎信息
# 如有需要,可在更改目录欢迎信息的目录下创建名为 .message 的文件,并写入欢迎信息保存后
#ftpd_banner=Welcome to blah FTP service.
# 黑名单设置。可以阻止某些特殊的 email address 链接
#deny_email_enable=YES
# 当上面的 deny_email_enable=YES 时,可以利用这个设定项来规定哪些邮件地址不可登录 vsftpd 服务器
# 此文件需用户自己创建,通常情况下为一行一个 email address
#banned_email_file=/etc/vsftpd/banned_emails
# 用户登录 FTP 服务器后是否具有访问自己目录以外的其他文件的权限
# 设置为 YES 时,用户被锁定在自己的 home 目录中,vsftpd 将在下面 chroot_list_file 选项值的位置寻找 chroot_list 文件
# 必须与下面的设置项配合
#chroot_list_enable=YES
# 被列入此文件的用户,在登录后将不能切换到自己目录以外的其他目录
# 从而有利于 FTP 服务器的安全管理和隐私保护。此文件需自己建立
#chroot_list_file=/etc/vsftpd/chroot_list
# 是否允许递归查询。默认为关闭,以防止远程用户造成过量的 I/O
#ls_recurse_enable=YES
# 是否允许监听。
# 如果设置为 YES,则 vsftpd 将以独立模式运行,由 vsftpd 自己监听和处理 IPv4 端口的连接请求
listen=NO
# 设定是否支持 IPV6
listen_ipv6=YES
# 设置 PAM 外挂模块提供的认证服务所使用的配置文件名,即 /etc/pam.d/vsftpd 文件
# 此文件 中file=/etc/vsftpd/ftpusers 字段,说明了 PAM 模块能抵挡的帐号内容来自文件 /etc/vsftpd/ftpusers 中
pam_service_name=vsftpd
# 是否允许 ftpusers 文件中的用户登录 FTP 服务器,默认为 YES
# 若此项设为 YES,则 user_list 文件中的用户允许登录 FTP 服务器
# 而如果同时设置了userlist_deny=YES,则 user_list 文件中的用户将不允许登录 FTP 服务器,甚至连输入密码提示信息都没有
userlist_enable=YES

/etc/vsftpd/ftpusers 这个文件是禁止使用 vsftpd 的用户列表文件。记录不允许访问 FTP 服务器的用户名单,一般把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从 FTP 登录后获得大于上传下载操作的权利,而对系统造成损坏。其默认值为:

在这里插入图片描述

/etc/vsftpd/user_list 文件是允许或禁止使用 vsftpd 的用户列表文件。这个文件中指定的用户缺省情况(即在 /etc/vsftpd/vsftpd.conf 中设置 userlist_deny=YES)下也不能访问 FTP 服务器,在设置了 userlist_deny=NO 时,仅允许 user_list 中指定的用户访问 FTP 服务器。

用户访问模式
vsftpd 服务访问模式有三种,分别是:匿名用户、系统用户和虚拟用户

匿名用户模式
匿名模式即 FTP 服务器建立一个公开账户 (一般为 anonymous),并赋予该账户访问公共目录的权限(默认为 /var/ftp/pub),该模式适合只在内网使用或公开文件的场景使用。默认情况下,匿名用户只有查看权限,无法创建、删除、修改。如果想要允许匿名用户能够上传、下载、删除文件,需在 /etc/vsftpd/vsftpd.conf 配置文件中修改:

anon_upload_enable=YES      # 允许匿名用户上传文件;
anon_mkdir_write_enable=YES # 允许匿名用户创建目录;
anon_other_write_enable=YES # 允许匿名用户其他写入权限。

vsftpd 默认的匿名用户有两个:anonymous 与 ftp ,所以如果需要使用匿名用户上传、删除文件需要 anonymous 用户对 /var/ftp/pub 目录有写入权限:

chown -R ftp /var/ftp/pub/

系统用户模式
如果在非内网情况下,匿名模式可以让任何人使用 ftp 服务,比较公开,多适用于共享文件。如果只想要部分特定用户使用,就需要使用系统用户登录访问,这种模式我们需要创建不同的用户:

groupadd www # 创建用户组
useradd -g www www -s /sbin/nologin # 创建用户

参数说明:

groupadd 创建对应的用户组,参数 www 即创建的组名
useradd 创建用户
-g www 指定用户组,www 即为指定的用户组名
www 指定本次创建的用户名
-s /sbin/nologin 禁止用户通过 ssh 登录系统

然后需要修改配置文件(/etc/vsftpd/vsftpd.conf):

anonymous_enable=NO   # 禁止匿名用户登录
chown_uploads=NO      # 设定禁止上传文件更改宿主
nopriv_user=ftptest   # 设定支撑 vsftpd 服务的宿主用户为新建用户
ascii_upload_enable=YES
ascii_download_enable=YES # 设定支持 ASCII 模式的上传和下载功能。
userlist_enable=YES
userlist_deny=NO

然后修改 /etc/vsftpd/user_list 文件,将新建(或原有)的用户添加到文件的最后一行,这种模式下,登录 FTP 后访问的就是 /home/www/,即为当前用户的家目录

虚拟用户配置
系统用户模式可以有效的控制访问,但是随着使用用户增多,需要创建大量系统用户,这对服务器系统的管理产生了巨大影响,甚至对服务器安全造成威胁。这时我们就可以使用虚拟用户进行登录,以方便管理。

虚拟用户模式实际上没有真实的系统用户,其是通过映射到一个真实的用户以及设置的权限来实现访问验证,虚拟用户在 linux 中实际不存在,提升了系统的安全性。

修改配置文件 /etc/vsftpd/vsftpd.conf:

anonymous_enable=NO  # 设定不允许匿名访问
local_enable=YES  # 设定本地用户可以访问。
write_enable=YES  # 设定可以进行写操作。
local_umask=022  # 设定上传后文件的权限掩码。
anon_upload_enable=NO  # 禁止匿名用户上传。
anon_mkdir_write_enable=NO  # 禁止匿名用户建立目录。
dirmessage_enable=YES  # 设定开启目录标语功能。
xferlog_enable=YES  # 设定开启日志记录功能。
connect_from_port_20=YES # 设定端口 20 进行数据连接。(主动模式)
chown_uploads=NO  # 设定禁止上传文件更改宿主。
xferlog_file=/var/log/xferlog
# 设定 vsftpd 的服务日志保存路径。
xferlog_std_format=YES # 设定日志使用标准的记录格式。
async_abor_enable=YES  #设定支持异步传输功能。
ascii_upload_enable=YES
ascii_download_enable=YES  #设定支持ASCII模式的上传和下载功能。

chroot_list_enable=NO #禁止用户登出自己的 FTP 主目录。
ls_recurse_enable=NO  #禁止用户登陆 FTP 后使用 "ls -R" 的命令。
listen=YES

userlist_enable=YES  # 设定 userlist_file 中的用户将不得使用 FTP
tcp_wrappers=YES  # 设定支持 TCP Wrappers

guest_enable=YES  # 设定启用虚拟用户功能。
guest_username=www  # 指定虚拟用户的宿主用户,即 linux 中真实存在的用户
virtual_use_local_privs=YES  # 设定虚拟用户的权限符合他们的宿主用户。
pam_service_name=vsftpd  # 设定 PAM 服务下 vsftpd 的验证配置文件名。因此,PAM 验证将参考 /etc/pam.d/ 下的 vsftpd 文件配置。
user_config_dir=/etc/vsftpd/virtualconf  # 设定虚拟用户个人 vsftp 的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个 vsftp 虚拟用户个性的配置文件,一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同。

随后需要创建对应的虚拟用户配置文件夹

mkdir -p /etc/vsftpd/virtualconf

制作虚拟用户数据库文件 vim /etc/vsftpd/virtusers,这个文件的文件名以及路径是可以自定义的,用于储存虚拟用户用户名与密码的文件,在文件中写入如下内容:

user1
123456
user2
123456

该文件格式为:一行用户名对应一行密码

随后生成虚拟用户数据文件:

db_load hash /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

设置 PAM 验证文件,并指定上一步创建的虚拟用户数据库文件,vsftp 的 PAM 验证配置文件路径为 /etc/pam.d/vsftpd ,编辑该文件,并在文件末尾新增如下内容:

#%PAM-1.0
auth    sufficient      /lib/security/pam_userdb.so     db=/etc/vsftpd/virtusers
account sufficient      /lib/security/pam_userdb.so     db=/etc/vsftpd/virtusers

如当前系统是 64 位的,则需要使用如下内容:

#%PAM-1.0
auth    sufficient      /lib64/security/pam_userdb.so     db=/etc/vsftpd/virtusers
account sufficient      /lib64/security/pam_userdb.so     db=/etc/vsftpd/virtusers

其中 /etc/vsftpd/virtusers 为第二步生成的虚拟用户数据库文件。

修改虚拟用户配置文件,将虚拟用户配置文件存入 /etc/vsftpd/virtualconf/ 目录,文件名为虚拟用户名,例如虚拟用户为 user1,则对应的文件名为 /etc/vsftpd/virtualconf/user1,对应配置项与主配置项基本相同,该配置文件未指定的内容则由主配置文件决定,对应配置项如下:

local_root=/www/server/blog # 指定虚拟用户的具体主路径。
write_enable=YES # 设定允许写操作。
anon_upload_enable=NO # 设定不允许匿名用户上传。
anon_mkdir_write_enable=NO # 设定不允许匿名用户建立目录。
idle_session_timeout=600 # 设定空闲连接超时时间。
data_connection_timeout=120 # 设定单次连续传输最大时间。
max_clients=10 # 设定并发客户端访问个数。
max_per_ip=5 # 设定单个客户端的最大线程数,这个配置主要来照顾 Flashget、迅雷等多线程下载软件。
local_max_rate=50000 # 设定该用户的最大传输速率,单位 b/s。

重启 vsftpd 即可使用虚拟用户连接:

service vsftpd restart # 重启

4.增加虚拟账号
ftp默认使用所有系统账号,在较多情况下我们希望添加ftp的账号但不添加系统账号,这便是ftp虚拟账号

4.1修改配置文件启用虚拟账号功能

启用虚拟账号功能,修改配置文件/etc/vsftpd/vsftpd.conf,在其末尾追加:

guest_enable=YES   #启用虚拟账号功能
guest_username=ftp #虚拟账号在系统的宿主用户,vsftpd安装时已自动创建
user_config_dir=/etc/vsftpd/vuser_conf #虚拟账号配置文件要存放在的目录

4.2安装db_load命令所在包

yum install -y db4-utils

4.3创建虚拟用户

创建/etc/vsftpd/vuser_passwd.txt文件,在其中输入用户名密码奇数行是用户名,用户名下一行为该用户的密码(文件名其实随便,用来生成vuser_passwd.db而已)

cat > /etc/vsftpd/vuser_passwd.txt << EOF
test
abcd1234
EOF

生成用户认证使用的db文件(除了后辍为.db文件名其实随便,/etc/pam.d/vsftpd中指定的认证文件与此相同即可)

db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

编缉/etc/pam.d/vsftpd,在最前边插入以下两行(注意是在最前边插入,也不要注释原来的配置;注释原来的配置追加只有虚拟账号可登录系统账号不可登录;不注释原来的配置追加只有系统用户可登录虚拟用户不可登录)

auth sufficient pam_userdb.so db=/etc/vsftpd/vuser_passwd
account sufficient pam_userdb.so db=/etc/vsftpd/vuser_passwd

创建虚拟用户配置文件(在前边我们已指定配置文件目录为/etc/vsftpd/vuser_conf,用户为test)

mkdir /etc/vsftpd/vuser_conf/
mkdir /tmp/test
cat > /etc/vsftpd/vuser_conf/test <<EOF
local_root=/tmp/test
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
EOF

重启vsftpd生效

service vsftpd restart

vsftpd 虚拟多用户多目录配置

vsftpd 如果需要在同一站点上利用多个用户来区分多个主目录,并将其限制在相应的目录权限内,需要用到虚拟用户来进行配置。以下是我在 ubuntu 16.04 上面的实践经验总结。

需求分析
假设在我的服务器上,有一个主文件夹 www,下面分别有两个文件夹 model 和 lib,我希望利用不同的用户登录,让其访问不同的文件夹,同时每个用户不能切换到上级目录。同时处于安全考虑还要求该账号上传的文件权限为 644,即上传的文件具有可读可写权限,但是没有可执行权限。

另外,为了服务器的安全,还要求该用户不能是系统用户,即使用 vsftpd 的虚拟用户。

根据以上需求,我们需要进行一下配置。

vsftpd 安装
vsftpd 的安装:

sudo apt-get -y install vsftpd

安装完成后,vsftpd 初始化时使用的配置文件就是 /etc/vsftpd.conf 文件。

在 ubuntu下 要启动、停止、重启vsftpd,我们必须使用以下命令:

sudo service vsftpd stop
sudo service vsftpd start
sudo service vsftpd restart

同时,为了后续的虚拟用户,我们还需要安装加密工具:

sudo apt-get -y install db-util

vsftpd 配置
为了能够使用虚拟用户,我们首先需要创建虚拟用户,以下的操作的一些路径和文件名可以根据自己的习惯进行更改,当然,最好保持一致,防止出错。

创建本地用户
首先需要创建一个本地用户,作为虚拟用户的宿主,也同时方便组权限对于 ftp 站点的管理。

sudo useradd -m /srv/ftpadmin -s /bin/false

我们将其主目录放到 /srv/ftpadmin 中,使用 /bin/false 作为默认 bash,同时也不设置密码,这样这个用户是登录不了的,仅仅作为一种象征和宿主存在。

现在我们把数据目录的权限给这个用户。

sudo chown -R ftpadmin:ftpadmin /www

创建虚拟用户
创建一个 user.txt

sudo mkdir /etc/vsftpd
cd /etc/vsftpd
sudo vim user.txt

在 user.txt 中添加两个用户的信息,假设一个用户为 ftplib,密码为 pdlib,另一个用户为 ftpmodel,密码为 pdmodel,则 user.txt 形如下面:

ftplib
pdlib
ftpmodel
pdmodel

更多用户以此类推。然后使用 db_util 加密工具进行加密。

sudo db_load -T -t hash -f /etc/vsftpd/user.txt /etc/vsftpd/user.db

加密后得到的文件为 /etc/vsftpd/user.db。最好再改一下这个文件的权限:

sudo chmod 600 /etc/vsftpd/user.db

PAM 验证配置
我们需要配置一个新的 PAM 用于虚拟用户的验证。

sudo vim /etc/pam.d/vsftpd.vu

在这个新文件中写入如下信息:

auth required pam_userdb.so db=/etc/vsftpd/user
account required pam_userdb.so db=/etc/vsftpd/user

如果你上面没改名字,用的也是 user.db,那么这地方就不用改,如果不是 user.db,这地方需要改成你相应的。

vsftp 服务器配置
根据上面的情况,你已经有了两个虚拟用户了,下面是配置 ftp 服务器了,也是重点,先上我的配置:

grep -vE "^#|^$" /etc/vsftpd.conf
listen=NO               # 很奇怪是不是,我的是NO,网上大部分都是YES。因为我用的是公司的ftp统一配置,所以不能单独开启独立的守护进程,大家根据自己的需要来判断。
listen_ipv6=YES         # ipv6,根据实际需求了
anonymous_enable=NO     # 是否允许匿名登录,我不需要
local_enable=YES        # 设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。
write_enable=YES        # 设定可以进行写操作,也就是上传
local_umask=022         # 设定用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,022表示默认上传的文件权限是755
dirmessage_enable=YES   # 设定开启目录标语功能。
use_localtime=YES       # 时间设置
xferlog_enable=YES      # 设定开启日志记录功能。
connect_from_port_20=YES            # 默认
xferlog_file=/var/log/vsftpd.log    # 日志文件
xferlog_std_format=YES              # 日志记录格式
ftpd_banner=Hello.                  # 标语,没啥用
chroot_local_user=YES               # 重要,后面说明
chroot_list_enable=NO               # 同上
#chroot_list_file=/etc/vsftpd.chroot_list   # 同上
allow_writeable_chroot=YES                  # 同上
secure_chroot_dir=/var/run/vsftpd/empty     # 默认
pam_service_name=ftp                        # 默认,后面覆盖了
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem              # 默认
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key     # 默认
ssl_enable=NO                       # 默认
utf8_filesystem=YES                 # uft8格式
guest_enable=YES                    # 必须打开,为了虚拟用户登录
pam_service_name=vsftpd.vu          # 覆盖默认的pam文件,验证虚拟用户
user_config_dir=/etc/vsftpd/user_conf       # 用户配置的目录

上面的配置注释的很清楚了,还有一些需要说明:

首先是 chroot_*,这几个参数主要是为了设置 ftp 登录之后可以访问的目录。还记得我们的需求里面有一个就是限制用户只能够访问自己的主目录吧,这几个参数就能满足我们的要求,具体配置的方法如下:

chroot_local_user:是否将所有用户限制在主目录,YES 为启用 NO 禁用(该项默认值是 NO,即在安装 vsftpd 后不做配置的话,ftp 用户是可以向上切换到要目录之外的)。
chroot_list_enable:是否启动限制用户的名单 YES 为启用 NO 禁用(包括注释掉也为禁用)。
chroot_list_file=/etc/vsftpd/chroot_list:是否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于 chroot_local_user 的值。

chroot_local_user=YESchroot_local_user=NO
chroot_list_enable=YESYYYN
chroot_list_enable=NONYNN

具体解释如下:

YY:所有用户都被限制在其主目录下,使用chroot_list_file指定的用户列表,这些用户作为“例外”,不受限制。
YN:所有用户都不被限制其主目录下,使用chroot_list_file指定的用户列表,这些用户作为“例外”,受到限制。
NY:所有用户都被限制在其主目录下,不使用chroot_list_file指定的用户列表,没有任何“例外”用户。
NN:所有用户都不被限制其主目录下,不使用chroot_list_file指定的用户列表,没有任何“例外”用户。
然后就是虚拟用户的自定义配置了。

用户配置
在上面的 ftp 服务器配置中,有一个是用户配置的目录:user_config_dir=/etc/vsftpd/user_conf,我们在这个目录中设置每个用户自己的配置信息。

首先创建用户名的配置文件:

sudo touch /etc/vsftpd/user_conf/ftplib
sudo touch /etc/vsftpd/user_conf/ftpmodel

在 ftplib 中添加内容:

guest_username=ftplib
virtual_use_local_privs=YES
anon_umask=133
local_root=/www/lib

首先设置用户名,然后是配置虚拟用户的权限和本地用户一样,同时设置虚拟用户的 umask 掩码为 133,也就是去除可执行权限,然后是虚拟用户的主目录。ftpmodel 同样类似这种配置,不再贴出了。

启用 ftp 站点

sudo service vsftpd start 
#或者 
sudo service vsftpd restart

让配置生效。


gdbmtool命令安装

gdbmtool是一个用于管理和维护GNU dbm数据库的小工具,它通常包含在许多Linux发行版的默认软件包中,比如Ubuntu的libdbi-devgdbm-dev,或者是CentOS的gdbm-devel。如果你还没有安装,你可以按照以下步骤来进行:

  1. 对于基于Debian的系统(如Ubuntu):

    • 打开终端并运行:
      sudo apt-get update
      sudo apt-get install libdbi-dev gdbm-dev
      
      完成后,gdbmtool应该就在PATH中了。
  2. 对于基于RPM的系统(如CentOS):

    • 使用yumdnf
      sudo yum install gdbm-devel
      
      或者
      sudo dnf install gdbm-devel
      
  3. 检查安装: 安装完成后,你可以通过输入 gdbmtool --version 来确认是否成功安装。

如果系统中没有找到该命令,可能是没有安装相应的依赖,或者命令名拼写有误。如果没有预装,你需要从源码编译安装,但这超出了常规操作范围。

相关问题

我想要在CentOS7中使用gdbmtool命令 该怎么下载,我需要详细步骤

在 CentOS 7 中,gdbmtools 是一个用于 gdbm 数据库管理的小工具包,它通常已经包含在系统中,如果你的系统版本足够新并且包含了数据库支持,那么你可能可以直接使用它而无需额外安装。

以下是确认是否已安装以及如何使用的简单步骤:

  1. 确认安装: 打开终端,输入以下命令检查 gdbmtools 是否已预装:

    which gdbmtools
    

    如果返回路径,则表示已经存在;如果显示 "command not found",则说明需要安装。

  2. 安装gdbm-dev (如果未安装): 如果 gdbmtools 没有找到,你需要安装 gdbm 开发文件。打开终端并运行:

    sudo yum install gdbm-devel
    

    或者对于使用 dnf 包管理器的系统:

    sudo dnf install gdbm-devel
    

    完成安装后再次尝试 which gdbmtools

  3. 安装gdbm-tools (如果必要): 如果你还想安装 gdbm-tools 特定的工具包,可以执行:

    sudo yum install gdbm-tools
    

    或者 dnf:

    sudo dnf install gdbm-tools
    
  4. 测试安装: 安装完成后,你可以创建一个新的 gdbm 数据库文件,并使用 gdbmtool 命令操作它,例如:

    gdbmtool create my_database
    gdbmtool add my_database key value
    gdbmtool list my_database
    

请确保你在执行以上步骤前已经使用 sudo 或者切换到 root 用户,因为有些操作可能需要管理员权限。

如何yum安装gdbmtool

在CentOS或RHEL等基于yum的Linux发行版上,你可以通过以下步骤来安装gdbmtool(如果它是一个可用的包):

  1. 打开终端:按下Ctrl+Alt+T或者搜索"终端"应用程序。

  2. 更新软件源列表:输入并运行命令

    sudo yum update -y
    

    如果系统提示需要更新,先进行更新。

  3. 安装gdbm工具:使用yum命令添加epel-release(额外功能软件包)仓库,因为有些非官方软件不在默认源里,然后安装gdbm-tools

    sudo yum install epel-release -y
    sudo yum install gdbm-tools -y
    

    -y选项表示默认接受所有安装请求,无需交互确认。

  4. 验证安装:安装完成后,可以运行 gdbmtools 来检查是否成功安装,并查看帮助文档获取更多信息:

    gdbmtools --help
    

注意:如果找不到gdbmtool这个包,可能是包名有误或者是该工具不是来自官方yum源。在这种情况下,你可能需要检查其确切名称,或者尝试查找是否有替代的包或从源码编译安装。


完整的 vsftpd.conf 配置文件内容:

# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
# When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
xferlog_file=/var/log/xferlog
#
# If you want, you can have your log file in standard ftpd xferlog format.
# Note that the default log file location is /var/log/xferlog in this case.
xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode. The vsftpd.conf(5) man page explains
# the behaviour when these options are disabled.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
#ftpd_banner=Welcome to blah FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
#chroot_local_user=YES
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
#
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=NO
#
# This directive enables listening on IPv6 sockets. By default, listening
# on the IPv6 "any" address (::) will accept connections from both IPv6
# and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
# sockets. If you want that (perhaps because you want to listen on specific
# addresses) then you must run two copies of vsftpd with two configuration
# files.
# Make sure, that one of the listen options is commented !!
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES

guest_enable=YES
pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd/user_conf

用户配置
在上面的 ftp 服务器配置中,有一个是用户配置的目录:

user_config_dir=/etc/vsftpd/user_conf

我们在这个目录中设置每个用户自己的配置信息。

首先创建用户名的配置文件:

 sudo touch /etc/vsftpd/user_conf/ftplib
sudo touch /etc/vsftpd/user_conf/ftpmodel

在 ftplib 中添加内容:

local_root=/data

virtual_use_local_privs=YES

anon_umask=133

write_enable=yes



anon_world_readable_only=no



anon_upload_enable=yes



anon_mkdir_write_enable=yes



anon_other_write_enable=yes

说明:

local_root=/home/data/ftp/jin #设置登录后禁锢的目录

write_enable=yes #开放写权限

anon_world_readable_only=no #开放下载权限

anon_upload_enable=yes #开放上传权限

anon_mkdir_write_enable=yes #开放创建目录的权限

anon_other_write_enable=yes #开放删除和重命名的权限

因为pam_userdb使用的数据库由bdb换成了gdbm,需要更换格式。
安装gdbm,使用以下命令创建数据库,增加用户:

gdbmtool -n /etc/vsftpd/virtusers.pag open

gdbmtool -n /etc/vsftpd/virtusers.pag open

gdbmtool /etc/vsftpd/virtusers.pag store ${FtpUserName} ${FtpUserPass}

如何在mac上实现远程挂载方案 | osxfuse & sshfs

一、安装国内的homebrew(mac下的软件包下载和管理工具)镜像

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

ps : 为何要装国内的镜像, 一句话 : “近水楼台先得资源,会快很多”

二、安装远程挂载工具
arduino 代码解读// 安装依赖工具fuse

brew install osxfuse

// 安装远程同步工具sshfs

brew install sshfs

ps : 安装这两个的时候遇到三个问题:
1、osxfuse包找不到, 指令改成 : brew cask install osxfuse 即可
2、brew install sshfs时提示xcode-select-install, 执行该指令后又提示buse版本不兼容,进入死循环…
解决方案 : 直接用git上的pkg包来安装:
2.1 访问osxfuse的mac下载地址 https://osxfuse.github.io/ , 选择最新的下载安装一下
2.2 访问sshfs的pkg可直接安装包, sshfs-2.5.0.pkg

三、一键配置同步路径
bash 代码解读//新建挂载目录

mkdir -p ~/webdata

// 挂载测试环境

echo {服务器密码} | sshfs -C -o reconnect,password_stdin {远程服务器用户名}@{远程服务器地址}:{需要同步的目录路径} /Users/{自己mac机器的名字}/webdata

//查看是否配置成功,如果同步的指令写入成功即可

cat ~/.bash_profile

//让写入的配置生效

source ~/.zshrc

ps :
1、写入配置失败,解决方案 “重启电脑,再来一遍就完事了”
2、如果没有安装zsh, 配置卸载~/.bashrc, 执行为 source ~/.zshrc

四、拓展知识,osxfuse及sshfs简介

osxfuse Mac版是一款专业且实用的系统优化软件,软件通过可选的MacFUSE兼容层支持旧版MacFUSE文件系统。感兴趣的朋友快来下载使用吧
FUSE for macOS(原为OSXFUSE) 使您可以通过第三方文件系统扩展OS X的本机文件处理功能。 它是MacFUSE的后继产品。作为用户,如果选择安装MacFUSE兼容层,则安装FUSE for macOS软件包将允许您使用在FUSE for macOS或MacFUSE之上编写的任何第三方文件系统。 作为开发人员,您可以使用FUSE for macOS SDK将多种类型的文件系统编写为常规用户空间程序。 这些文件系统的内容可以来自任何地方:本地磁盘,整个网络,内存或任何其他来源的组合。
SSHFS(SSH Filesystem 是一种通过普通ssh连接来挂载和与远程服务器或工作站上的目录和文件交互的文件系统客户端。


系统中 FTP 删除关联记录的账号密码

Windows 删除:

1、在文件资源管理器左侧,右击网络名称,选择删除。

2、win +r 打开运行命令对话框,输入:regedit

3、点击确定,打开文件注册表,定位到 HKEY_CURRENT_USER\SOFTWARE\Microsoft\FTP\Accounts,删除掉下面相应的项就可以了

4、定位到 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\,删除掉下面相应的项就可以了。

一般Windows注册表只需要删除上面 2 项就可以,如果其他版本Windows没有清楚,直接在 上面的注册表界面 搜索 IP 信息进行删除。

5、控制面板-》网络和Internet 》Internet选项

6、内容〉设置》删除自动完成历史记录,勾选表单数据与密码-》删除,删除完成即可。

macOS删除:

1、打开 finder,点击“前往”》“连接服务器”;

2、在列表中选择 某个 连接,然后 点击“-” 进行删除。


原文地址:https://blog.csdn.net/u014374009/article/details/144341460

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!