testuser1
aminglinux
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
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
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
[root@hf-01 ~]# yum install -y vsftpd
[root@hf-01 ~]# useradd -s /sbin/nologin virftp
[root@hf-01 ~]#
[root@hf-01 ~]# vim /etc/vsftpd/vsftpd_login
1,3行为用户名
2,4行为密码
testuser1
hanfeng
user1
aaaaa1111
保存退出
[root@hf-01 ~]# chmod 600 /etc/vsftpd/vsftpd_login
[root@hf-01 ~]#
[root@hf-01 ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
[root@hf-01 ~]# ls -l /etc/vsftpd/
总用量 36
-rw------- 1 root root 125 8月 3 14:10 ftpusers
-rw------- 1 root root 361 8月 3 14:10 user_list
-rw------- 1 root root 5030 8月 3 14:10 vsftpd.conf
-rwxr--r-- 1 root root 338 8月 3 14:10 vsftpd_conf_migrate.sh
-rw------- 1 root root 34 1月 18 06:02 vsftpd_login
-rw-r--r-- 1 root root 12288 1月 18 06:06 vsftpd_login.db
[root@hf-01 ~]#
[root@hf-01 ~]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@hf-01 ~]#
[root@hf-01 ~]# cd /etc/vsftpd/vsftpd_user_conf
[root@hf-01 vsftpd_user_conf]#
配置文件内容
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 //连接ftp超时时间(秒)
data_connection_timeout=120 //数据传输的超时时间(秒)
max_clients=10 //最多允许同时几个终端连接
[root@hf-01 vsftpd_user_conf]# 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
保存退出
[root@hf-01 vsftpd_user_conf]# mkdir /home/virftp/testuser1
[root@hf-01 vsftpd_user_conf]#
[root@hf-01 vsftpd_user_conf]# touch /home/virftp/testuser1/aming.txt
[root@hf-01 vsftpd_user_conf]#
[root@hf-01 vsftpd_user_conf]# chown -R virftp:virftp /home/virftp
[root@hf-01 vsftpd_user_conf]#
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
最终如下
[root@hf-01 vsftpd_user_conf]# vim /etc/pam.d/vsftpd
#%PAM-1.0
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
保存退出
[root@hf-01 vsftpd_user_conf]# 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
保存退出
[root@hf-01 vsftpd_user_conf]# systemctl start vsftpd
[root@hf-01 vsftpd_user_conf]# ps aux |grep vsftpd
root 3564 0.0 0.0 51136 564 ? Ss 06:49 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root 3566 0.0 0.0 112676 984 pts/0 R+ 06:49 0:00 grep --color=auto vsftpd
[root@hf-01 vsftpd_user_conf]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1607/master
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:40904 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 1250/rpc.mountd
tcp 0 0 0.0.0.0:37459 0.0.0.0:* LISTEN 1224/rpc.statd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1227/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1607/master
tcp6 0 0 :::2049 :::* LISTEN -
tcp6 0 0 :::41381 :::* LISTEN 1224/rpc.statd
tcp6 0 0 :::35465 :::* LISTEN -
tcp6 0 0 :::3306 :::* LISTEN 1643/mysqld
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::20048 :::* LISTEN 1250/rpc.mountd
tcp6 0 0 :::21 :::* LISTEN 3564/vsftpd
tcp6 0 0 :::22 :::* LISTEN 1227/sshd
[root@hf-01 vsftpd_user_conf]#
[root@hf-01 ~]# yum install -y lftp
[root@hf-01 ~]# lftp testuser1@127.0.0.1
口令:
lftp testuser1@127.0.0.1:~> ls
-rw-r--r-- 1 1002 1002 0 Jan 17 22:26 aming.txt
lftp testuser1@127.0.0.1:/>
lftp testuser1@127.0.0.1:/> ?
!<shell-command> (commands)
alias [<name> [<value>]] attach [PID]
bookmark [SUBCMD] cache [SUBCMD]
cat [-b] <files> cd <rdir>
chmod [OPTS] mode file... close [-a]
[re]cls [opts] [path/][pattern]
debug [<level>|off] [-o <file>] du [options] <dirs>
exit [<code>|bg]
get [OPTS] <rfile> [-o <lfile>] glob [OPTS] <cmd> <args>
help [<cmd>]
history -w file|-r file|-c|-l [cnt] jobs [-v] [<job_no...>]
kill all|<job_no> lcd <ldir>
lftp [OPTS] <site> ln [-s] <file1> <file2>
ls [<args>] mget [OPTS] <files>
mirror [OPTS] [remote [local]] mkdir [-p] <dirs>
module name [args] more <files>
mput [OPTS] <files> mrm <files>
mv <file1> <file2> [re]nlist [<args>]
open [OPTS] <site>
pget [OPTS] <rfile> [-o <lfile>]
put [OPTS] <lfile> [-o <rfile>] pwd [-p]
queue [OPTS] [<cmd>] quote <cmd>
repeat [OPTS] [delay] [command] rm [-r] [-f] <files>
rmdir [-f] <dirs> scache [<session_no>]
set [OPT] [<var> [<val>]] site <site-cmd>
source <file>
torrent [-O <dir>] <file|URL>... user <user|URL> [<pass>]
wait [<jobno>] zcat <files>
zmore <files>
lftp testuser1@127.0.0.1:/>
lftp testuser1@127.0.0.1:~> get aming.txt
lftp testuser1@127.0.0.1:/>
lftp testuser1@127.0.0.1:/> quit
[root@hf-01 ~]#
[root@hf-01 ~]# ls
111 1_sorft.txt 2.txt.bak amin bb.txt lll.sh
123 1.txt 3.txt aming.txt grep sed
1.cap 234 aa.txt anaconda-ks.cfg haha shell
1_heard.txt 2.txt admin awk id.txt
[root@hf-01 ~]#
第一种方案:
Type `help' to browse available commnands.
sftp:/root> ls
dr-xr-x--- 13 root root 4096 Jan 18 09:12 .
dr-xr-xr-x 20 root root 282 Dec 14 21:06 ..
-rw-r--r-- 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r-- 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r-- 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r-- 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r-- 1 root root 129 Dec 29 2013 .tcshrc
-rw------- 1 root root 1422 Oct 19 07:00 anaconda-ks.cfg
drwx------ 2 root root 80 Oct 18 23:58 .ssh
-rw------- 1 root root 29340 Jan 16 23:47 .bash_history
drwxr-xr-x 3 root root 110 Dec 5 21:23 111
-rw-r--r-- 1 root root 184 Dec 9 17:54 123.txt
-rw-r--r-- 1 root root 4461632 Dec 9 18:00 aaa.txt
-rw-r--r-- 1 root root 4464640 Dec 9 18:04 aaa.txt.tar
drwxr-xr-x 2 root root 58 Dec 10 21:11 aaaaa
-rw-r--r-- 1 root root 10240 Dec 12 19:59 chamlinux.tar
-rw-r--r-- 1 root root 20395803 Dec 15 15:04 mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
drwxr-xr-x 2 root root 6 Dec 16 00:09 apache
-rw------- 1 root root 1024 Jan 8 23:30 .rnd
-rw------- 1 root root 1978 Jan 16 01:15 .mysql_history
-rw-r--r-- 1 root root 490 Nov 17 14:21 1.txt
-rw------- 1 root root 8372 Jan 18 09:06 .viminfo
drwxr-xr-x 3 root root 18 Jan 18 09:12 .config
-rw-r--r-- 1 root root 31 Nov 17 14:42 2.txt
-rwxrwxrwx 1 user1 test 231 Dec 9 17:49 a.txt
drwxrwxrwx 2 root user1 19 Dec 12 19:57 chamlinux
drwxr-xr-x 3 root root 65 Nov 26 13:52 grep
drwxr-xr-x 2 root root 70 Nov 26 14:20 sed
drwxr-xr-x 2 root root 35 Nov 22 22:07 awk
-rw-r--r-- 1 root root 8638793 Oct 21 03:39 httpd-2.4.29.tar.gz
drwxr-xr-x 3 root root 19 Jan 18 09:12 .local
drwxr----- 3 root root 19 Nov 27 18:56 .pki
sftp:/root> cd /tmp/
sftp:/tmp> get php-fcgi.sock/
sftp: cannot open /tmp/php-fcgi.sock/ to read
sftp:/tmp> get user.sql
Fetching /tmp/user.sql to user.sql
sftp: received 6.83 KB in 0.08 seconds