在vsftpd中要实现不同用户不同权限,可以利用虚拟用户来实现。
vsftpd的本地用户本身是系统的用户,除了可以登录FTP服务器外,还可以登录系统使用其他系统资源,而vsftpd的虚拟用户则是FTP服务的专用用户,虚拟用户只能访问FTP服务器资源。对于只需要通过FTP对系统有读写权限,而不需要其他系统资源的用户或情况来说,采用虚拟用户方式是很适合的。
vsftpd的虚拟用户采用单独的用户名/口令保存方式,与系统账号(passwd/shadow)分离,这大大增强了系统的安全性。vsftpd可以采用数据库文件来保存用户/口令,如hash;也可以将用户/口令保存在数据库服务器中,如MySQL等。vsftpd验证虚拟用户,则采用PAM方式。由于虚拟用户的用户名/口令被单独保存,因此在验证时,vsftpd需要用一个系统用户的身份来读取数据库文件或数据库服务器以完成验证,这就是guest用户,这正如同匿名用户也需要有一个系统用户ftp一样。当然,guest用户也可以被认为是用于映射虚拟用户。
目标
建立3个虚拟用户
用户 密码 权限
norco1 norcoarm1 [只允许下载]
norco2 norcoarm2 [允许建立,修改,但是不允许删除]
norco3 norcoarm3 [全部权限]
对应3个子目录
/opt/ftp/norco1
/opt/ftp/norco2
/opt/ftp/norco3
环境:
Ubuntu 12.04.2
vsftpd 2.3.5
1、安装vsftpd
$sudo apt-get install vsftpd
$sudo apt-get install db4.8-util
2、建立本地虚拟用户
#useradd -m -d /home/vsftpd vsftpd
指定目录为/home/vsftpd
3、建立虚拟用户数据库
#mkdir /etc/vsftpd
#vim /etc/vsftpd/loginuser.txt
loginuser.txt文件内容:
norco1
norcoarm1
norco2
norcoarm2
norco3
norcoarm3
注:奇数行为用户名,偶数行为密码。
#db4.8_load -T -t hash -f /etc/vsftpd/loginuser.txt /etc/vsftpd/vsftpd_login.db
#chmod 600 /etc/vsftpd/vsftpd_login.db
生成数据库文件之后建议删除 loginuser.txt
4、建立基于vsftpd_login的PAM授权文件
检查文件/lib/security/pam_userdb.so是否存在, 如果没有,试试下面方式
#ln -s /lib/i386-linux-gnu/security/pam_userdb.so /lib/security/pam_userdb.so
新建文件/etc/pam.d/vsftpd.vu
#vim /etc/pam.d/vsftpd.vu
vsftpd.vu文件内容:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
5、设置用户权限
建立用来存放用户权限设置文件的目录
#mkdir /etc/vfstpd
#cd /etc/vfstpd
并在该文件夹下依次建立与 loginuser.txt对应的帐号名称相同的文件
内容可以参考下面:
#vim norco1
#[norco1]只允许下载
anon_world_readable_only=NO
local_root=/opt/ftp/norco1
#vim norco2
#[norco2]允许建立,修改,但是不允许删除
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
local_root=/opt/ftp/norco2
#vim norco3
#[norco3]全部权限
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
local_root=/opt/ftp/norco3
6、设置vsftpd.conf
#vim /etc/vsftpd.conf
修改内容如下:
listen=YES
connect_from_port_20=YES
ftpd_banner=Welcome to virtual FTP service.
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES
guest_username=vsftpd
pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
7、重新启动vsftpd
#service vsftpd restart
【可能出现的问题】
1、无法登陆
解决方法:
(1)检查ftp根目录目录是否存在;
(2)检查上面设置的各个路径是否正确;
(3)查看ftp根目录的owner属性是否是 vsftpd
#ls -al /home
如果不是
#chown -R vsftpd /home/vsftpd
#chmod -R 0755 /opt/ftp
(4)如果出现如下错误:
vsftpd: refusing to run with writable root inside chroot() 问题
为了避免一个安全漏洞,从 vsftpd 2.3.5 开始,chroot 目录必须不可写。使用命令:
# chmod a-w /home/user
【日常维护】
(1)更新帐号
#db4.8_load -T -t hash -f /etc/vsftpd/loginuser.txt /etc/vsftpd/vsftpd_login.db
(2)更新/etc/vsftpd下不同用户对应的权限
(3)重启vsftpd
#service vsftpd restart
访问方法
ftp://norco1:norcoarm1@192.168.56.101
ftp://norco2:norcoarm2@192.168.56.101
ftp://norco3:norcoarm3@192.168.56.101
ftp://norco1:norcoarm1@192.168.1.85
ftp://norco2:norcoarm2@192.168.1.85
ftp://norco3:norcoarm3@192.168.1.85
ubuntu中vsftpd虚拟用户实现不同用户不同权限
最新推荐文章于 2024-05-26 17:06:23 发布