(图片来自bing壁纸)
vsftpd服务安装及使用
1.安装
yum -y install vsftpd
2.启动
systemctl start vsftpd
3.登陆
1) 匿名用户登陆
主配置文件路径: /etc/vsftpd/vsftpd.conf
a.首先要在配置文件将 anonymous_enable=YES 打开
首先另外开启一台Linxu服务器作为客户端,或者在Windows安装ftp软件,这里我们用前者,下载安装ftp客户端软件: yum -y install ftp
b.在客户端输入: ftp ftp 服务器的 ip
账号:ftp或者anonymous 密码:空(直接回车)
默认家目录是: /var/ftp ,下面有一个pub文件夹,不建议在此目录下操作,最好新建一个。默认是可以下载文件的,但不能上传。
修改主配置文件,将anon_upload_enable=YES注释去掉。将我们新建的目录为其他人添加w权限。重启服务即可生效。
但此时上传过的文件是无法下载的,因为其文件的权限为:当我们下载时候显示:
提示我们没有权限去打开文件,因此我们对于其他用户而言没有r权限,因此修改主配置文件:
我们还可以修改配置文件是的匿名用户可以创建目录,删除,覆盖等操作。
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
2) 本地用户登陆
a.首先要添加一个用户用作登陆,为了安全,建议添加一个系统用户。
useradd -s /sbin/nologin ftpuser
passwd ftpuser
b.修改主配置文件,,如果不取消注释,用户登陆到服务器后,可随意切换目录,后果不可控。
此时用新创建的ftpuser用户登陆,输如正确密码后不能登陆,将 /etc/pam.d/vsftpd 中 auth required pam_shells.so 注释掉(原因目前还不知....),但是注释掉之后登陆还是会有错误,显示:500 OOPS: vsftpd: refusing to run with writable root inside chroot() ,是因为 从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。 解决方法:
1.将 /home/ftpuser 用户家目录的写权限去除 chmod -w /home/ftpuser,但这样就不能上传文件了,因此推荐第二种方法。
2.在主配置文件中添加 allow_writeable_chroot=YES .
3.登陆ftp服务器。
若是想要禁止某些本地用户登陆到ftp服务器:
userlist_enable=YES
userlist_deny=YES
只允许名单中的用户登陆,将上述配置第二条改为NO即可。
在 /etc/vsftpd/ftpusers 中的用户,也是无法登陆到服务器的,该文件优先级比配置文件中的要高,无需重启,立即生效。
对于有些用户,我们允许其在登陆到ftp服务器后允许其能够随意切换目录:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
由于是本地用户,因此在登陆到服务器后,可以上传下载,以及创建目录....都不需要在配置文件中配置了。
3)虚拟用户登陆
上述登陆方式,不能实现个性化配置,比如有几个用户,想要让每个用户的权限都不同,因此需要用到虚拟用户。
在虚拟用户登陆之前,要先将之前的匿名用户的配置要注释掉,因为虚拟用户默认使用的是匿名用户的配置,如果不注释,那么使用的是全局配置,每个用户自己的配置便不生效.
a.建立虚拟用户文件(vuser.txt),奇数行为用户,偶数行为密码
zhangsan
123456
...........
b.将上述 vuser.txt 转换成数据库文件: db_load -T -t hash -f vuser.txt vuser.db,并将文件权限改为600(必须)
c.由于是虚拟用户,我们要建立一个真正的Linux的用户来提供登陆的目录给虚拟用户,该用户仅仅提供登陆目录,因此不需要设置密码:useradd -d /var/ftproot -s /sbin/nologin virtual , 同样设置为系统用户。
d.在配置文件中添加支持虚拟用户的条目:
guest_enable=YES
guest_username=virtual
user_config_dir=/etc/vsftpd/dir
e.由于 ftp 服务器支持只支持本地和匿名用户的pam认证方式,不支持虚拟用户,因此需要手动添加 pam 认证:vim /etc/pam.d/vsftpd
auth sufficient pam_userdb.so db=/etc/vsftpd/vuser
account sufficient pam_userdb.so db=/etc/vsftpd/vuser (之前编写的数据库文件,不需要加db后缀,自动识别)注意: sufficient 本来是required,但如果这样写本地和虚拟用户不能共存了,具体原因目前不清楚.....
f.最后配置每个用户的单独的配置文件,在 /etc/vsftpd/dir 下分别建立以虚拟用户为名字的文件,里面写入各自的权限(跟匿名用户一样)。
g. 重启服务,分别用不同的用户登陆验证。
记得将匿名用户的家目录其他人给与相应权限