续vsftp基础知识篇
8.安装配置vsftpd
(1)配置yum网络源;配置防护墙
[root@station69 ~]# cd /etc/yum.repos.d/
[root@station69 ~]# mkdir bak
[root@station69 ~]# mv *.repo bak
[root@station69 ~]# cd
[root@station69 ~]# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/
enable=1
gpgcheck=1
gpgkey=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/RPM-GPG-KEY-CentOS-6
cost=1000
[fedora-epel]
name=Fedora EPEL
baseurl=http://172.16.0.1/fedora-epel/6/x86_64/
enable=1
gpgcheck=0
cost=2000
(2)安装vsftpd
[root@station69 ~]# yum -y install vsftpd
[root@station69 ~]# rpm -ql vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/rc.d/init.d/vsftpd
/etc/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
/usr/sbin/vsftpd
有主程序和用户控制文件,即可
(3)启动vsftpd
[root@station69 ~]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
[root@station69 ~]# ps aux|grep vsftpd|grep -v "grep"
root 2705 0.0 0.0 52096 744 ? Ss 22:48 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
vsftpd是由root用户启动,但却是以普通用户的身份运行的,因为小于1024的端口号只有root才有权打开
查看当前系统是否有ftp用户
[root@station69 ~]# grep ftp /etc/passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
ss -tnl|grep ":22"查看22号端口是否启动
(4)配置vsftpd
配置文件中已启用选项的语法要求:
已启用选项必须定格写,否则可能由于语法错误,导致vsftpd服务启动失败;
等号"="两端不能有空格;
在此配置文件中,注释符#后有空格,并且其后有字符的,大多是注释信息;
注释符#后无空格,并且其后有字符的,大多是可启用的选项;
创建测试用户hadoop
[root@station69 ~]# useradd hadoop
[root@station69 ~]# echo "123456"|passwd --stdin hadoop
Changing password for user hadoop.
passwd: all authentication tokens updated successfully.
通过windows命令行的ftp工具测试:
用户登录以后,默认都会位于自己的家目录中,匿名登录时,将其映射为匿名用户的家目录
除非使用chroot,
# 是否启用匿名用户
anonymous_enable=YES
write_enable=YES
# 是否将用户禁锢在自己的家目录(推荐使用chroot)
chroot=/home/userdir
通过帮助信息查看vsftpd配置文件中的选项
是否将所有用户禁锢在自己的家目录中
(YES表示禁锢,默认是NO)
chroot_local_user={YES|NO}
是否启用chroot列表文件的功能,与chroot_list_file有关,此列表功能不启用,chroot_list_file就不会生效
chroot_list_enable=
{YES|NO}
如果chroot_list_enable=
YES,下面的项目才有意义,下面的项目与
chroot_local_user有关
chroot_list_file=/etc/vsftpd/chroot_list
若想禁锢操作对某些特定用户生效,可将这些用户写入
/etc/vsftpd/chroot_list文件,并且每行一个,然后重启服务即可生效
# 是否允许本地用户登录到系统
local_enable=
{YES|NO}
[root@station69 ~]# lftp -u hadoop,123456 172.16.251.69
[root@station69 ~]# ll -d /var/ftp/
drwxr-xr-x 3 root root 4096 Apr 1 22:40 /var/ftp/
[root@station69 ~]# ll -d /var/ftp/pub/
drwxr-xr-x 2 root root 4096 Apr 2 00:01 /var/ftp/pub/
由此观之,匿名用户ftp对
/var/ftp/pub/是没有写权限的,若修改此目录的权限,vsftpd可能会无法启动,
不过我们可以修改
/var/ftp/pub/目录下子目录的权限
[root@station69 ~]# cd /var/ftp/
[root@station69 ftp]# mkdir incoming
[root@station69 ftp]# ll
total 8
drwxr-xr-x 2 root root 4096 Apr 2 00:13 incoming
drwxr-xr-x 2 root root 4096 Apr 2 00:01 pub
[root@station69 ftp]# setfacl -m u:ftp:rwx incoming/
[root@station69 ftp]# getfacl incoming/
# file: incoming/
# owner: root
# group: root
user::rwx
user:ftp:rwx
group::r-x
mask::rwx
other::r-x
共享文件系统的权限分两部分:文件系统的权限和服务的权限
默认情况下匿名用户是没有上传权限的,可使用下面的项目启用匿名用户的上传权限
anon_upload_enable=YES
注:有上传权限并不意味着有创建文件或目录的权限,下面有测试验证
每次修改配置文件后,记得重新加载配置文件,使操作生效
启用匿名用户在ftp服务器上创建文件或目录的权限
anon_mkdir_write_enable=YES
此时,匿名虽然在指定目录下已有创建文件或目录的权限
,但是,这并不意味该匿名用户已具备写入的权限,若想真正拥有写入的权限,还需启用
anon_other_write_enable
选项
权限测试:
启用下面的选项后,匿名用户在远端ftp服务器上就会有写入的权限,而不仅仅是创建文件或目录的权限
anon_other_write_enable
=YES
至此,匿名用户在远端ftp服务器的指定位置,已具备完全下载,上传,创建文件或目录,删除的权限
权限测试:
为了使注释更易理解,我在后面会将选项的作用尽可能说得通俗易懂
匿名用户的配置:
# 使匿名用户也可登录到系统
anonymous_enable=YES
# 使匿名用户(对远端ftp的特定目录)有上传权限
anon_upload_enable=YES
# 使匿名用户(
对远端ftp的特定目录)
拥有创建文件或目录的权限
anon_mkdir_write_enable=YES
# 使匿名用户
(
对远端ftp的特定目录)
拥有写入权限
anon_other_write_enable=YES
注意:启用写入功能时,ftp用户对相应的本地文件系统也有相应的写入权限;
生效的权限取决于文件系统权限和服务权限的交集;
自定义FTP欢迎信息
(1)在默认欢迎信息(
ftpd_banner
)设置的基础上进行修改
(2)使用
banner_file设置欢迎信息,若两者同时出现,则
banner_file的设置会覆盖
ftpd_banner的设置
仅在默认的ftp欢迎信息上修改:ftpd_banner=Welcome to China_Town FTP service.
测试看欢迎信息设置是否生效:
两者同时设置,看哪个生效?
测试:
如何设置进入目录时的欢迎信息?
# 表示启用此特性
dirmessage_enable=YES
#
在某ftp可访问的目录下创建.messages文件,
默认使用的是名称为.message文件,
也可使用
message_file指定要使用的文件名,如下:
message_file=Hello.message
使用windows下的ftp远程登录工具,才会有效果,在命令行可能没啥效果
vsftp控制登录用户的机制:
(1) /etc/vsftpd/ftpusers中的用户都不允许使用ftp服务, 这是在/etc/pam.d/vsftpd中定义;
注意:若以rpm包方式安装vsftpd,则
/etc/pam.d/vsftpd是事先存在的;
若是编译安装的,此文件默认是没有的需手动创建
(2) user_list配置文件有两种用法:
黑名单:
userlist_enable=YES #用户列表是否启用
userlist_deny=YES #出现在此列表的用户都会被拒绝登录ftp
白名单
userlist_enable=YES
#用户列表是否启用
userlist_deny=NO
#出现在此列表的都会被允许登录ftp
连接限制:
max_clients: 最大并发连接数
max_per_ip: 每IP可同时发起并发请求
传输速率:
anon_max_rate:
匿名用户总的最大传输速率,单位是“字节/秒”;
local_max_rate: 本地用户……………………
上传文件的umask:
anno_umask: 匿名用户上传文件的umask; 默认是077
local_umask:
匿名用户上传文件的umask; 默认是077
修改匿名用户上传文件的属主和属组:
chown_uploads=YES
chown_username=someuser
虚拟用户:
所有的虚拟用户会映射会一个系统用户,访问时的文件目录是为此系统用户的家目录;
虚拟用户:
hash编码的文件:
奇数行为用户名,偶数行为密码
关系型数据库:
pam-mysql实现认证
注:由于内容实在太多,为了不得不分篇显示