内部需求:搭建ftp服务器,存储部门资料,共享给外部门
要求:部门内可看到所有资料,外部门只能看到部分资料
思路:使用虚拟账号配置方式,设置ftp可访问的目录权限,外部门和本部门分别用不同的虚拟账号,分别配置
系统:redhat 6.3
具体步骤如下
1、下载vsftpd报,安装,我是下载的rpm包,这种包的好处是可以直接安装,把所有的包含关系都打好包,不需要再找关联包
2、新建系统账号,设置账号根目录,只允许ftp方式登录
adduser -d /home/share vftpuser
usermod -s /sbin/nologin
3、在、etc/vsftpd 目录(当然你也可以选择其他目录,把文件都放在一起便于管理)
新建vftpusers.txt 文件,一行用户名、一行密码 记录你想设置的虚拟账号,例如:
test1
123456
test2
2345667
以上建立了test1 和test2两个账号,密码分别是123456 和234567
还需将以上数据导入到口令库
db_load -T -t hash -f /etc/vsftpd/vftpusers.txt /etc/vsftpd/vftpusers.db
为虚拟账号建立pam 配置文件
4、修改ftp配置文件 vsftpd.conf
vi进去后在配置文件后面添加如下
anonymous_enable=NO //禁止匿名登录
local_enable=YES //允许本地登录,是为后面虚拟账号登陆准备,因为虚拟账号其实是用了本地系统账号 vftpuser进行登陆
local_root=/home/ftp //设置ftp登陆的根目录,限制目录权限
guest_enable=YES //允许虚拟账号登陆
guest_username=vftpuser //虚拟账号使用的系统账号
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd/users_config //设置虚拟账号个性化配置的配置目录,需自己创建该目录
5、为虚拟账号创建单独配置
进入/etc/vsftpd/users_config目录,创建test1 配置文件
vim test1
添加一行,修改test1的根目录
local_root=/home/ftp/test1
保存修改
启动ftp服务后,发现test1根目录是test1,test2的根目录是ftp
读取配置的顺序是先读取vsftpd.conf,然后再配置配置目录的内容。
出现过的问题:
ftp登陆错误:显示500,无法改变目录
原因是selinux设置为enforcing,把selinux设置为permissive 模式即可
setenforce 0