linux下配置ftp服务器并设置虚拟账号的不同权限

1、创建用户数据库

点击(此处)折叠或打开

  1. #vim /etc/vsftpd/vsftpd_login.txt
  2. user1
  3. 123
  4. user2
  5. 123

2 生成数据库:

1
2
3
db_load:安装 db4,db4-devel,db4-utils
#yum -y install db4*
#db_load -T -t hash -f /etc/vsftpd/vsftpd_login.txt /etc/vsftpd/vsftpd_login.db

3 修改数据文件访问权限:

1
chmod 600  /etc/vsftpd/vsftp_login.db


4 修改pam配置:

1
2
3
4
5
#cat /etc/pam.d/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
注意:db=/etc/vsftpd/vsftpd_login 后面的.db必须去掉


5 创建虚拟账号对应的系统用户:
就用ftp默认账户

修改主配置文件,guest_enable代表开启虚拟账户功能,

所有的虚拟账户都将被映射为guest_username指定的系统账户。

如果需要对虚拟账户做权限设置,通过与匿名账户一样的设置项进行,

如anon_mkdir_write_enable=NO既是控制虚拟账户无法创建目录。

[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf

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=ftp    #所有虚拟账户的真实映射账户

listen=YES

listen_port=21

pam_service_name=vsftpd.vu

user_config_dir=/etc/vsftpd/vconf
pasv_promiscuous=YES


max_clients=40             #最多40个客户端连接
max_per_ip=5               #每个IP最多5个连接

6、配置/etc/vsftpd/vconf里的虚拟用户配置
[root@localhost vconf]# ls
user1  user2

vi user1
local_root=/data/ftp
write_enable=YES

vi user2
local_root=/data/ftp   #user2只有下载的权利,没有上传的权利。

7、重新启动
service vsftpd restart



ps:配置完成后,在用ftp客户端测试时,发现问题。
1、提示错误代码:530 Login incorrect.
在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

里的/lib/security/pam_userdb.so绝对路径去掉,只用pam_userdb.so

2、提示错误连接失败 OOPS: 500 OOPS: child died
网上的方法

修改vsftpd服务端配置文件

vi /etc/vsftpd/vsftpd.conf

增加下面行,重启服务即可

pasv_promiscuous=YES

解决办法二,如果上面办法还是解决不了我们可以尝试如下解决办法

1、 查看 SELinux 的状态: sestatus -b | grep ftp

2、 在出现的结果中可以看到

 ftp_home_dir off

tftpd_disable_trans off

之类。我们现在只要把其中之一设置为on就可以啦。

3、 setsebool -P ftpd_disable_trans on 或者 setsebool -P ftp_home_dir on

4、 重启vsftpd: service vsftpd restart

5.如果还是不成功的话,执行以下命令,然后重启FTP
[root@windos-test-01 vsftpd]# setsebool allow_ftpd_full_access 1
[root@windos-test-01 vsftpd]# setsebool allow_ftpd_use_cifs 1
[root@windos-test-01 vsftpd]# setsebool allow_ftpd_use_nfs 1
[root@windos-test-01 vsftpd]# setsebool -P ftp_home_dir 1
[root@windos-test-01 vsftpd]# setsebool httpd_enable_ftp_server 1
[root@windos-test-01 vsftpd]# setsebool tftp_anon_write 1
[root@windos-test-01 vsftpd]# service vsftpd restart


但是我试过,还是不行

3、 连接失败 OOPS: cannot change directory:/data/ftp
usermod -d /data/ftp ftp  #安排主目录给ftp账户

4、可以连上了,但是不能修改文件
chown -R ftp.ftp /data/ftp

发现上传的汉字文档会有乱码。建议采用winscp使用ftp。

挂载NAS盘后,按照平常的设置会无法修改文件目录的权限。在EMC存储上设置的时候注意,linux下配置ftp服务器并设置虚拟账号的不同权限_第1张图片







来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29820633/viewspace-2140967/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29820633/viewspace-2140967/

你可能感兴趣的:(linux下配置ftp服务器并设置虚拟账号的不同权限)