分类: Mysql/postgreSQL
2008-05-30 17:34:17
incoming pub normal 读/写 只读 admin 读/写 读/写
#apt-get install vsftpd,libpam-mysql
#mkdir /home/ftp
#useradd ftpguest -d /home/ftp
#chown ftpguest.nogroup /home/ftp
4,配置MySQL数据库
1),创建用于存储虚拟用户信息的数据库ftpvuser
#mysqladmin -u root -p create ftpvuser
#mysql -u root -p
mysql>use ftpvuser; mysql>CREATE TABLE users (username varchar(20) NOT NULL,
password varchar(40) NOT NULL,
PRIMARY KEY (username)) TYPE=MyISAM;
mysql>grant select on ftpvuser.users to ftpguest@localhost identified
by 'YourPassword'; mysql>flush privileges;
mysql>insert into users (username,password) values ('normal','555555'); mysql>insert into users (username,password) values ('admin','666666'); mysql>insert into users (username,password) values ('webmaster','777777');
mysql>quit;
#nano /etc/pam.d/vsftpd
auth required pam_mysql.so user=ftpguest passwd=YourPassword host=localhost
db=ftpvuser table=users usercolumn=username passwdcolumn=password crypt=0
account required pam_mysql.so user=ftpguest passwd=YourPassword host=localhost
db=ftpvuser table=users usercolumn=username passwdcolumn=password crypt=0
#nano /etc/vsftpd.conf
#/etc/init.d/vsftpd stop #/etc/init.d/vsftpd start
#关闭匿名用户访问 #anonymous_enable=YES #开启本地用户访问 local_enable=YES #开启虚拟用户访问 guest_enable=YES guest_username=ftpguest #将本地用户限制在自己的家目录,这样可避免FTP用户访问到其他的系统目录 chroot_local_user=YES
#modprobe capability
为了让Linux在启动时自动加载此模块,把这个模块放到/etc/modules中即可.
4),限制IP的匿名登录
要想限制登录vsftpd的客户端的IP地址,要用到一个叫TCP Wrappers的东东,对于TCP Wrappers,我的理解是,如果在vsftpd中启用了TCP Wrappers的话,每次客户端向vsftpd发起一个连接请求的时候,vsftpd首先会把这个连接请求交给TCP Wrappers处理,如果客户端的IP被TCP Wrappers放行的话,才能继续与vsftpd继续会话,否则,直接就被拒绝服务了,不知道对不对?
a,修改/etc/vsftpd.conf
#启用TCP Wrappers tcp_wrappers=YES
b,修改/etc/hosts.deny
拒绝所有向vsftpd发起连接请求的IP,不过,如果hosts.deny与hosts.allow冲突的话,以hosts.allow优先处理,这好像就是,先deny所有,然后在hosts.allow开放特权,呵呵
#拒绝所有连入vsftpd的IP先. vsftpd: ALL
c,修改/etc/hosts.allow
在这里开放允许登录vsftpd的IP地址关于VSFTPD_LOAD_CONF环境变量,vsftpd的man是这么说的:
"If tcp_wrappers sets the VSFTPD_LOAD_CONF environment variable, then the vsftpd session will try and load the vsftpd configuration file specified in this variable. "
#限制可以匿名登录vsftpd的IP地址 vsftpd: 192.168.0.,210.83.200.200 : setenv VSFTPD_LOAD_CONF /etc/vsftpd/vsftpd.anonymous #允许vsftpd的虚拟用户以任何IP连接FTP vsftpd: ALL : setenv VSFTPD_LOAD_CONF /etc/vsftpd/vsftpd.virtual
d,修改/etc/vsftpd/vsftpd.anonymous
#mkdir /etc/vsftpd/ #nano /etc/vsftpd/vsftpd.anonymous #允许匿名登录 anonymous_enable=YES
e,修改/etc/vsftpd/vsftpd.virtual
#nano /etc/vsftpd/vsftpd.virtual #不允许匿名登录 anonymous_enable=NO
5),为不同的用户设置不同的访问权限
a,激活单个用户配置功能,增加以下配置行到vsftpd的配置文件:
#nano /etc/vsftpd.conf #指定不同用户配置文件的存放路径 user_config_dir=/etc/vsftpd/vsftpd_user_conf
b,普通用户:/上传
编辑/etc/vsftpd/vsftpd_user_conf/normal
注意:用户的配置文件名与用户名一致,不过匿名用户的配置文件名为ftp,而不是anonymous
#mkdir /etc/vsftpd/vsftpd_user_conf #nano /etc/vsftpd/vsftpd_user_conf/normal
加入以下内容:
#允许
anon_world_readable_only=NO #允许写入,上传以及建立目录 write_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES
c,管理员用户:/上传/删除等.
#cp /etc/vsftpd/vsftpd_user_conf/normal /etc/vsftpd/vsftpd_user_conf/admin
#nano /etc/vsftpd/vsftpd_user_conf/admin
#允许重命名和删除文件 anon_other_write_enable=YES #虚拟用户拥有与本地用户相同的权限(由于chmod仅仅对本地用户有效,所以如果想要虚拟用户拥有chmod的权限,这一项必须激活) virtual_use_local_privs=YES #允许修改文件属性 chmod_enable=YES
#cp /etc/vsftpd/vsftpd_user_conf/admin /etc/vsftpd/vsftpd_user_conf/webmaster
#nano /etc/vsftpd/vsftpd_user_conf/webmaster
#将FTP家目录指向网站的家目录(我的www目录使用Apache默认的目录) local_root=/var/www #默认情况下,上传到FTP站点的文件的拥有者都是ftpguest,其他用户是没有访问权限的 #所以,当访问网站的时候,会出现"没有权限访问该文件的错误",这是由于Apache的用户 #www-data无法访问/var/www下的文件造成的,把umask设置成033甚至000即可解决这个问题. local_umask=033
incoming pub normal 读/写 只读 admin 读/写 读/写
原文链接: