vsftp服务部署
1、安装vsftp软件包
yum -y install vsftpd
chkconfig vsftpd on
2、系统安全设置
2.1 vi /etc/sysconfig/iptables(如果防火墙关闭,省略此步)
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20:21 -j ACCEPT
2.2 关闭selinux
3、重启服务
service iptables reload
service vsftpd reload
++++++++++++++++++++
4、几点总结
✔建议使用主动模式
✔安装完vsftpd,会创建一个账户,ftp账户
✔ftp账户家目录在 / var/ftp目录
✔ftp账户家目录权限是755
1、创建上传目录
cd /var/ftp
mkdir upoad
chown ftp. upload
chmod 755 upload
2、修改配置文件vsftpd.conf(确保如下字段行是取消注释的)
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES(匿名账户可以有删除的权限)
1、编辑配置文件vsftpd.conf
#以下行注释
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
#以下行取消注释<禁锢用户在自己家目录>
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
2、增加虚拟账号
useradd -d /data/ftpdata -s /sbin/nologin dbftp
passwd dbftp
请确认/data/ftpdata所有者所有组为dbftp
3、编辑chroot_list
vi /etc/vsftp/chroot_list
默认此文件不存在
内容为刚刚创建的虚拟用户名,每个用户占一行
dbftp
4、只允许特定账户登录
系统添加一个用户也默认有ftp的登陆权限
编辑配置文件vsftpd.conf
文件最后添加两行
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
然后修改
/etc/vsftpd/user_list文件,把允许登录的账户添加进去
1、vsftpd的虚拟用户采用单独的用户名/口令保存方式,与系统账户分离,这大大增强了系统的安全性。vsftpd可以采用数据库文件来保存用户/口令,如hash;也可以将用户/口令保存在数据库服务器中,如MySQL等。vsftpd验证虚拟用户,则采用PAM方式
2、安装依赖包
yum install db4 db4-utils -y
3、创建虚拟用户账号和密码(奇数行为用户名,偶数行为用户密码)
vim /etc/vsftpd/virtual.users
user1
123
user2
456
4、生成虚拟用户认证的db文件
db_load -T -t hash -f /etc/vsftpd/virtual.users /etc/vsftpd/vsftpd.login.db
chmod 600 /etc/vsftpd/vsftpd.login.db
5、配置PAM信息,在/etc/pam.d/创建一个文件,命名为vsftpd.pam(可自定义)
vim /etc/pam.d/vsftpd.pam
auth required pam_userdb.so db=/etc/vsftpd/vsftpd.login
account required pam_userdb.so db=/etc/vsftpd/vsftpd.login
6、配置vsftpd.conf,如下
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES
listen=YES
userlist_enable=YES
pam_service_name=vsftpd.pam
guest_username=ftp
guest_enable=YES
user_sub_token=$USER
local_root=/var/ftp/virtual/$USER
tcp_wrappers=YES
7、创建相应的虚拟用户目录,用于虚拟用户访问ftp服务所用到的默认目录
mkdir -p /var/ftp/virtual/{user1,user2}
chown ftp.ftp /var/ftp/virtual/{user1,user2}
touch /var/ftp/virtual/user1/user1.txt
touch /var/ftp/virtual/user2/user2.txt
8、经过上面配置,实现了如下功能
✔可以创建很多虚拟账户且仅能访问ftp上各自虚拟家目录
✔所有虚拟账户都可以上传、删除、创建、下载、重命名家目录里的文件或目录
缺点是:
所有虚拟账户权限都是统一的,现实里需求总是多变的,假如我想不同虚拟账户有不同的权限如何实现,见下文
1、基于上面我们创建两个用户user1和user2。我想user1具有全部权限,而user2尽具有上传权限。
我们从基于虚拟账户统一认证第6步开始修改,1-5步不变。
2、配置vsftpd.conf,如下
anonymous_enable=NO
local_enable=YES
local_umask=022
anon_umask=022
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES
listen=YES
userlist_enable=YES
pam_service_name=vsftpd.pam
guest_username=ftp
guest_enable=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
tcp_wrappers=YES
3、mkdir -p /etc/vsftpd/vsftpd_user_conf
在conf里创建 刚才用户名的配置文件 配置文件名要与用户名一样
user1要有所有全部权限
vi user1
local_root=/opt/vsftp/user1
write_enable=yes
download_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_world_readable_only=no
idle_session_timeout=600
data_connection_timeout=120
max_clients=2
max_per_ip=3
local_max_rate=512000
user2只有上传和下载权限
local_root=/opt/vsftp/user2
write_enable=YES
download_enable=yes
anon_upload_enable=yes
anon_other_write_enable=no
anon_mkdir_write_enable=no
anon_world_readable_only=no
4、更改虚拟用户目录权限为配置文件指定映射账户
mkdir -p /opt/vsftp/{user1,user2}
cd /opt
chown -R ftp. vsftp
5、经过上面配置,实现了如下功能
✔不同用户具有不同的权限
✔几个重要参数总结
write_enable=YES (写权限)
anon_mkdir_write_enable=YES (新建目录权限)
anon_upload_enable=YES(上传权限)
anon_other_write_enable=YES(删除/重命名的权限)
6、提升:
将用户保存到mysql.并记录用户登录log
见百度网盘
http://pan.baidu.com/s/1kTMiG8v