ftp虚拟用户
一.虚拟用户配置
vim /etc/vsftpd/users ##编辑虚拟用户文件
bss
westos
tom
westos
db_load -T -t hash -f users userd.db ##对文件进行加密
vim /etc/pam.d/vsftpd.db ##编写认证文件
auth required pam_userdb.so db=/etc/vsftpd/userd
account required pam_userdb.so db=/etc/vsftpd/userd
Vim /etc/vsftpd/vsftpd.conf ##编写主配置文件
anonymous_enable=NO ##匿名用户禁止登录
local_enable=YES ##本地用户允许登录
write_enable=YES ##本地用户可写
local_umask=022 ##创建文件预留的umask值
anon_upload_enable=YES ##匿名用户能否上传
anon_other_write_enable=YES ##匿名用户是否可写
anon_mkdir_write_enable=YES ##匿名用户能否创建目录
connect_from_port_20=YES ##指定端口为20进行数据传输(默认)
dirmessage_enable=YES ##欢迎语设置(默认)
xferlog_enable=YES ##是否启用上传/下载日志记(默认)
xferlog_std_format=YES ##如果启用,则日志文件将会写成xferlog的标 准格式(默认)
listen=NO ##设置vsftpd服务器是否以standalone模式 运行(默认)
listen_ipv6=YES ##默认
pam_service_name=vsftpd.db ##指定认证文件
guest_enable=YES ##开启虚拟用户
guest_username=ftp ##虚拟用户的宿主用户(此用户必须真实存在)
userlist_enable=YES ##是否启用vsftpd.user_list文件。(默认)
tcp_wrappers=YES ##设置vsftpd是否与tcp wrapper相结合来进 行主机的访问控制(默认)
chown ftp:ftp /var/ftp/pub ##不要更改用户家目录的权限,否则会报错
systemctl restart vsftpd
测试:
lftp 192.168.8.254 -ubss
Password:
lftp bss@192.168.8.254:/> cd pub/
ftp bss@192.168.8.254:/pub> mkdir ll
mkdir ok, `ll' created
lftp bss@192.168.8.254:/pub> cd ll/
lftp bss@192.168.8.254:/pub/ll> put ff
lftp bss@192.168.8.254:/pub/ll> rm ff
rm ok, `ff' removed
lftp bss@192.168.8.254:/pub/ll> cd ..
lftp bss@192.168.8.254:/pub> rm -r ll
rm ok, `ll' removed
lftp bss@192.168.8.254:/pub> exit
二.虚拟用户独立家目录配置
vim vsftpd.conf ##编辑配置文件(添加)
local_root=/ftphome/$USER ##指定虚拟用户的家目录
user_sub_token=$USER ##将shell变量引用到此文件中
mkdir /ftphome/bss/bss -p ##创建虚拟用户的家目录
mkdir /ftphome/tom/tom -p
chown ftp:ftp /ftphome/bss/bss/ ##更改目录用户,使其可写(也可更改其权限)
chown ftp:ftp /ftphome/tom/tom/
测试:
lftp 192.168.8.254 -ubss
Password:
lftp bss@192.168.8.254:~> ls
drwxr-xr-x 2 14 50 6 Jul 30 02:36 bss
lftp bss@192.168.8.254:/> cd bss/
lftp bss@192.168.8.254:/bss> ls
lftp bss@192.168.8.254:/bss> put ff
lftp bss@192.168.8.254:/bss> rm ff
rm ok, `ff' removed
lftp bss@192.168.8.254:/bss> exit
三.虚拟用户独立权限设定
例:bss不可上传,tom可上传
vim vsftpd.conf ##编辑配置文件(添加)
user_config_dir=/etc/vsftpd/user_conf
mkdir /etc/vsftpd/user_conf ##创建指定目录(与配置文件中一至)
cd /etc/vsftpd/user_conf
vim bss
anon_upload_enable=NO ##配置该用户的权限
systemctl restart vsftpd
测试:
lftp 192.168.8.254 -utom
Password:
lftp tom@192.168.8.254:~> ls
drwxr-xr-x 2 14 50 6 Jul 30 03:02 tom
lftp tom@192.168.8.254:/> cd tom/
lftp tom@192.168.8.254:/tom> put ff
lftp tom@192.168.8.254:/tom> ls
-rw------- 1 14 50 0 Jul 30 03:03 ff
lftp tom@192.168.8.254:/tom> exit
lftp 192.168.8.254 -ubss
Password:
lftp bss@192.168.8.254:~> ls
drwxr-xr-x 2 14 50 6 Jul 30 02:49 bss
lftp bss@192.168.8.254:/> cd bss/
lftp bss@192.168.8.254:/bss> ls
lftp bss@192.168.8.254:/bss> put ff
put: Access failed: 550 Permission denied. (ff)
lftp bss@192.168.8.254:/bss> exit
PS:
1.用户登录家目录锁定
chroot_local_user=YES ##将登录用户锁定在自己的家目录中
chroot_list_enable=YES ##和下方参数配合使用,是否读取下方文件
chroot_list_file=/etc/vsftpd/chroot_list ##此文件记录的用户将会被读取锁定在自己的家目录中(该文件需自己创建)
2.禁止登陆名单(默认)
在/etc/vsftpd/ftpusers 这个文件中的用户名是无法登录ftp服务的(默认)
同时/etc/vsftpd/user_list 这个文件也起到禁止登陆效果
但此文件的效果可以跟着usrlist_deny=NO 这个参数的配置改变
3.限速
anon_max_rate=102400 ##单位是字节
4.客户端连接限制
man_clients=2
5.`ls' at 0 [FEAT negotiation...] 遇到这个提示如何连接
lftp ftpserver -ubss ##登录后不要直接查看,在会话框中输入下面两条命令
set ftp:ssl-allow false
set ftp:use-feat false
ls
这个问题的原因未知,解决方法未知