15.1-15.5 vsftpd, xshell和xftp,pure-ftpd
ftp是方便的文件传输方式但是存在一定的安全风险所以现今主要是个人使用,企业使用的比较少。
ftp搭建的方式主要有两种,vsftpd以及pure-ftpd。
vsftpd
vsftpd需要yum安装,同时也需要db4_utils包,但是在yum安装vsftpd时会自动安装db4_utils。
db4_utils的用途是把用户名密码文件生成为二进制文件。
账号
因为ftp是远程登录,为了避免一些安全问题,账户思路是,创建一个linux系统账户,这个账户不可登录。然后在这个linux账户下创建多个虚拟账户,这些账户专门用于ftp的登录。
yum install -y vsftpd
useradd virftp -s /sbin/nologin //-s是指定使用的shell为nologinshell
vim /etc/vsftpd/vsftpd_login //创建用于ftp登录的虚拟帐号,奇数行为账号,偶数行为密码
testuser1
123123
testuser2
123123
chmod 600 /etc/vsftpd/vsftpd_login //更改权限提高安全性
db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db //生成密码库文件
mkdir /etc/vsftpd/vsftpd_user_conf //创建虚拟帐号目录及配置文件
cd !$
vim testuser1 //内容如下
local_root=/home/virftp/testuser1
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
//创建用户家目录
mkdir /home/virftp/testuser1
touch /home/virftp/testuser1/111.txt
chown -R virftp:virftp /home/virftp //递归的改变这个文件夹的属主和组
vim /etc/pam.d/vsftpd //在最开头添加如下两行内容
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
//修改全局配置文件
vim /etc/vsftpd/vsftpd.conf
将anonymous_enable=YES 改为 anonymous_enable=NO
将#anon_upload_enable=YES 改为 anon_upload_enable=NO
将#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO
再增加如下内容
chroot_local_user=YES
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
allow_writeable_chroot=YES
systemctl start vsftpd //启动vsftpd服务
[root@cent01 testuser1]# ps aux |grep ftp //查看服务是否已启动
root 4620 0.0 0.0 53212 572 ? Ss 00:12 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root 4622 0.0 0.0 112676 980 pts/2 S+ 00:13 0:00 grep --color=auto ftp
ftp登录
登录需要用lftp客户端,先yum安装
yum install -y lftp
[root@cent01 ~]# lftp testuser1@127.0.0.1
口令:
lftp testuser1@127.0.0.1:~> ls
-rw-r--r-- 1 1007 1008 0 Nov 17 14:42 aming.txt
1007和1008分别是virftp用户的uid和gid。
[root@cent02 ~]# lftp testuser1@192.168.27.128 //在其他机器上登录也能成功
口令:
lftp testuser1@192.168.27.128:~> ls
-rw-r--r-- 1 1007 1008 0 Nov 17 14:42 aming.txt
如果遇到登录问题,可以查看日志/var/log/secure和/var/log/messages
pure-ftpd
pure-ftpd是一款小巧的ftp软件,平时用的比较多。
linux帐号以及虚拟账号建立的思路与vsftpd类似。
需要yum安装,但是得从epel扩展源安装
yum install -y epel-release
yum install -y pure-ftpd
启动pure-ftp之前先更改配置文件
vim /etc/pure-ftpd/pure-ftpd.conf //找到pureftpd.pdb这行,把行首的#删除
因为与vsftpd都是用的21端口,所以先关闭vsftpd
systemctl stop vsftpd
systemctl start pure-ftp
[root@cent01 testuser1]# ps aux|grep pure
root 5506 0.0 0.0 202480 1208 ? Ss 01:10 0:00 pure-ftpd (SERVER)
root 5508 0.0 0.0 112676 980 pts/2 S+ 01:11 0:00 grep --color=auto pure
mkdir /data/ftp //创建共享目录
useradd -u 1010 pure-ftp //创建linux用户
chown -R pure-ftp:pure-ftp /data/ftp //更改共享家目录递归的属主和组
pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp //把虚拟账号ftp_usera与pure-ftp帐号关联,其登录后使用pure-ftp的身份进行下载,并且只能访问pure-ftp的指定目录
Password: //设置密码
Enter it again:
[root@cent01 testuser1]# pure-pw mkdb //生成密码库文件,这一步很重要
[root@cent01 testuser1]# pure-pw list //列出系统已有的虚拟账号
ftp_usera /data/ftp/./
ftp_userb /data/ftp/./
[root@cent01 testuser1]# lftp ftp_usera@127.0.0.1 //登录测试
口令:
lftp ftp_usera@127.0.0.1:~> ls
drwxr-xr-x 2 1010 pure-ftp 21 Nov 17 23:59 .
drwxr-xr-x 2 1010 pure-ftp 21 Nov 17 23:59 ..
-rw-r--r-- 1 1010 pure-ftp 0 Nov 17 23:59 123.txt
pure-pw list/userdel/usermod/passwd 分别是列出用户,删除用户,更改用户权限,更改用户密码
xshell,xftp
xshell与xftp配合时也可以用做ftp软件。可以很方便的管理ftp。且服务端不需要做任何配置。但是这种情况实际是用linux账号登录的,只能管理员自己使用。