阅读更多
(请支持麻子碗碗儿--天水学生社区 www.mzwwer.com)
本例主要模拟在学校学生通过ftp向教师上交作业的情形,主要有三种用户类型:教师、学生、其它普通用户
所要完成的功能如下:
1. 学生能上传自己的作业,但不能下载别人的作业,(在学校时,老师通常忽略这点,所以自己没做作业也没有关系,把别的同学上传的作业下载来,改下差不多就可以成自己的,上传完事)
2. 教师对学生的作业具有所有的操作权限
3. 普通用户登录后拥有自己的主目录,管理员根据实际对用户授予不同的权限
配置过程:
1. 安装vsftpd
本例以ubuntu10.10+vsftpd2.3.0为例来说明.
如果你不能确定自己是否安装了vsftpd,可以执行下:
sudo service vsftpd start
如果结果是:vsftpd start/running, process 2459(进程id号,不一定是这个),你所要做的只是配置下而已。
如果结果是:vsftpd: unrecognized service.那么你得要安装vsftpd了。
执行:sudo apt-get install vsftpd
测试下安装成功没有:
sudo service vsftpd start
sudo netstat -tulnp|grep vsftpd
应该会看到
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 2459/vsftpd
表示安装ok,在21端口已建立了检听,^!^!
2.生成虚拟用户数据库
为了使用pam来认证用户,首先要用建立一种通用的数据库文件,这个要用到berkeley的数据库工具。
首先要确认已经安装此工具:
locate -r db.*_load
如果有如下相似的显示表明已经安装过了:
/usr/bin/db4.8_load (4.6表示版本号,很重要!)
/usr/share/man/man1/db4.8_load.1.gz
如果没有显示,可以执行:
sudo apt-get install db4.8-util
接下来,我们来编辑一个文本,格式如下:
username1
password1
username2
password2
……
也就是一行用户名,一行是用户的密码,为了完成实例,我们用vim做如下的编辑:
teacher
teacherpwd
student
studentpwd
user1
user1pwd
user2
user2pwd
保存为logins.txt。
再来执行:
sudo db_load4.8 -T -t hash -f logins.txt /etc/vsftpd_login.db
设置下访问权限:
sudo chmod 600 /etc/vsftpd_login.db
到此虚拟用户的数据库文件搞定!
3.配置vsftpd.conf
这里直接上我的配置:
anonymous_enable=NO
local_enable=YES
write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
ftpd_banner=Welcome to mzwwer.com FTP service.
chroot_local_user=YES
listen=YES
pam_service_name=ftp
guest_enable=YES
user_config_dir=/etc/vsftpd_user_config
参数详细的说明请参考man页.
在vsftpd中ftp和anonymous用户都认为是匿名用户,虚拟用户也是当作匿名用户来看待的,当设置guest_enable=YES后,任何非匿名用户都会当作guest_username中所设置的用户,默认是ftp.既然有了ftp这个匿名的用户,我们这用ftp这个用户来完成配置,不在另建立用户了。
这里可以根据实际来设置ftp的home,如果需要可参照如下:
sudo mkdir /var/ftp
sudo usermod -d /var/ftp ftp
sudo chown ftp.ftp /var/ftp
sudo chmod 755 /var/ftp
pam_service_name设置的值和存放在/etc/pam.d目录下vsftpd所用的pam配置文件名要相同。
3.配置pam文件
这里我们指定文件名为ftp,所以编辑这个文件,里面输入如下内容:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
4.为每个用户配置不同的使用权限
a) 建立配置文件的保存目录
sudo mkdir /etc/vsftpd_user_config
b) 建立用户的目录
sudo mkdir /var/ftp/teacher
Sudo mkdir /var/ftp/user1
Sudo mkdir /var/ftp/user2
Sudo chown -R ftp.ftp /var/ftp
c) 编写用户配置文件
Cd /etc/vsftpd_user_config
Sudo touch teacher student user1 user2
在student编辑如下内容:
local_root=teacher
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=NO
download_enable=NO
注意下这里的local_root指明了用户登录后所在的目录,可以用相对路径,也可以用绝对路径,相对路径是以ftp用户的home目录为参照的,所以上面的local_root=/var/ftp/teacher.
重启:sudo service vsftpd restart
接着在teacher中输入如下内容:
local_root=teacher
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
重启下就能看到效果了,user1和user2的配置与上相似,不再多述。
- 大小: 99.5 KB