==========ftp===========================
https://ke.qq.com/webcourse/index.html#cid=275195&term_id=100325482&taid=1955155012760315&vid=m14243r4at7
列出所有已安装的软件包
命令:yum list installed
iptables -L //查看防火墙状态
getenforce //查看slind防火墙状态
ss -tnpl //看端口
ps -ef|grep ftp //查看ftp是否开启
netstat -tnlp
yum -y install vsftpd //安装插件 ftp客户端
service vsftpd start 或stop或status //开启ftp
1. 永久性生效
开启:chkconfig iptables on
关闭:chkconfig iptables off
2. 即时生效,重启后失效
开启:service iptables start
关闭:service iptables stop
3.临时关闭Selinux
setenforce 0 //关闭Selinux
getenforce //查看Selinux 状态Enforcing:开启的 Permissive:关闭的
匿名用户上传文件配置,其他基本不用动:
anonymous_enable=YES //允许匿名登录,匿名用户ftp 没有密码
write_enable=YES
anon_umask=022 #没有,需要手写
anon_upload_enable=YES #允许匿名用户上传文件,上传权限
anon_mkdir_write_enable=YES #允许匿名用户建立目录,可写权限
anon_other_write_enable=YES #允许匿名用户更多操作 如删除文件、更名。需要手写上去
而如果userlist_deny=YES,则user_list文件中的用户将不允许登录FTP服务器
#userlist_enable=YES/NO
mkdir testdir
setfacl -m u:ftp:rwx testdir/ //给ftp用户设置读写权限
getfacl testdir/ //查看testdir的读写权限
登录用户访问配置
local_enable=YES //允许linux登录用户,默认是允许的
write_enable=YES //是否允许系统用户上传文件
local_root=/ftproot //非匿名用户登录所在目录,否则为家目录
local_umask=022 //指定系统用户上传文件的默认权限
chroot_local_user=YES //打开注释,只能访问家目录。是全局属性
useradd -s /sbin/nologin ftpuser //创建用户
echo "123456" |passwd --stdin ftpuser //加密码
user_list中的本地用户可以访问ftp,而其他本地用户不能访问ftp
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
user_list中指定的本地用户不能访问ftp,而其他本地用户可以访问ftp
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list
chroot_list中指定的用户 只能访问家目录,其他用户可以访问其他目录。
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
指定pam配置文件,配置虚拟用户访问ftp
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.db
user_config_dir=/etc/vsftpd/vusers.d/
在/etc/vsftpd/vusers.d/目录下新建与登录用户名相同的文件
如zhangsan
anon_upload_enable=YES //允许上传
anon_mkdir_write_enable=YES //允许创建目录
anon_other_write_enable=YES //允许删除目录
==========ftp end===========================
--------------配置虚拟用户访问FTP,亲测有效:-------------------------
CentOS release 6.4 (Final)
vsftpd 2.2.2
1.虚拟用户都需要使用一个系统本地用户
id ftpuser //查看是否存在ftpuser用户
useradd -s /sbin/nologin ftpuser
echo "ftpuser" |passwd --stdin ftpuser //加密码
chmod a-w /home/ftpuser
mkdir /home/ftpuser/pub
chmod 777 /home/ftpuser/pub/
2.vsftpd的安全配置
# vim /etc/vsftpd/vuser.txt
test //登录用户
123456 //登录密码
生成db文件
# db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
编辑vsftpd的PAM认证文件:vsftpd文件最上面增加两行
# vim /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
3.配置文件
# vim /etc/vsftpd/vsftpd.conf
#禁止匿名用户
anonymous_enable=NO
local_enable=YES
write_enable=YES
#不启动锁定用户名单,所有的用户都将被锁定不允许访问上级目录,只允许访问其主目录
chroot_local_user=YES
chroot_list_enable=NO
#启动log
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/etc/vsftpd/vsftpd.log
#开启虚拟用户
guest_enable=YES
#FTP虚拟用户对应的系统用户
guest_username=vsftpd
#PAM认证文件/etc/pam.d/vsftpd
pam_service_name=vsftpd
virtual_use_local_privs=YES
[root@localhost ~]# cat /etc/vsftpd/vsftpd.conf |grep ^[^#]
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/etc/vsftpd/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=NO
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
guest_enable=YES
guest_username=ftpuser
virtual_use_local_privs=YES
pam_service_name=vsftpd
listen_ipv6=NO
#local_root=/home/ftpuser/pub #配置到test文件中也行
#user_config_dir=/etc/vsftpd/vuser_conf #这个配置是有效的,增加如下test文件。不配置也行
test文件名跟vuser.txt中登录用户名一致:
[root@localhost ~]# cat /etc/vsftpd/vuser_conf/test
local_root=/home/ftpuser/pub
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=20
chroot_list_enable=YES
4)启动:最后让vsftpd加载指定的配置文件来启动:
# vsftpd /etc/vsftpd/vsftpd.conf
5) 访问:ftp://192.168.1.253
-------------配置虚拟用户访问FTP,亲测有效 end-----------------
cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
vsftpd 3.0.2
配置同上。但是会报错如下解决:
报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
因为:/home/ftpuser/pub 这个文件夹 对于ftpuser这个用户不能有写的权限,设置为755即可
可以使用下面命令修改权限:
sudo chown -R root:root /home/ftpuser/pub
将/home/ftpuser/pub目录包含所有的子目录和文件,所有者改变为root,所属组改变为root,-R意思是循环遍历
登录ftp后 没有写的权限:解决如下:
mkdir /home/ftpuser/pub/ftpfiles //新建一个文件夹
chown -R ftpuser:ftpuser /home/ftpuser/pub/ftpfiles //所有者改为ftpuser