当前位置:   article > 正文

linux虚拟用户创建目录权限不足,在CentOs中安装vsFtpd并创建多个虚拟用户,且不同的用户拥有不同的权限以及指向不同的文件夹...

unexpected end of input data or key/data pair odd number of key/data pairs

在vsftpd中要实现不同用户不同权限,可以利用虚拟用户来实现。

vsftpd的本地用户本身是系统的用户,除了可以登录FTP服务器外,还可以登录系统使用其他系统资源,而vsftpd的虚拟用户则是FTP服务的专用用户,虚拟用户只能访问FTP服务器资源。对于只需要通过FTP对系统有读写权限,而不需要其他系统资源的用户或情况来说,采用虚拟用户方式是很适合的。

vsftpd的虚拟用户采用单独的用户名/口令保存方式,与系统账号(passwd/shadow)分离,这大大增强了系统的安全性。vsftpd可以采用数据库文件来保存用户/口令,如hash;也可以将用户/口令保存在数据库服务器中,如MySQL等。vsftpd验证虚拟用户,则采用PAM方式。由于虚拟用户的用户名/口令被单独保存,因此在验证时,vsftpd需要用一个系统用户的身份来读取数据库文件或数据库服务器以完成验证,这就是guest用户,这正如同匿名用户也需要有一个系统用户ftp一样。当然,guest用户也可以被认为是用于映射虚拟用户。

环境:

CentOS 6.3

vsFtp 2.2.2

1、安装vsFtpd

$sudo apt-get install vsftpd

$sudo apt-get install db4.6-utils

2、建立本地虚拟用户

#useradd -d /home/ftp virtual

指定目录为/home/ftp

3、建立虚拟用户数据库

#mkdir /etc/vsftpd

#vim /etc/vsftpd/logins.txt

login.txt文件内容:

gavin

123

jimson

123

admin

admin

注:奇数行为用户名,偶数行为密码。

#db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/vsftpd_login.db

#chmod 600 /etc/vsftpd/vsftpd_login.db

生成数据库文件之后建议删除logins.txt。

这里有个问题,我在创建的时候,在后面的build过程中出现过如下出错提示:

db_load: unexpected end of input data or key/data pair

db_load: odd number of key/data pairs

原因大概是在ftpUserInfo.txt最后需要再加个回车,加回车后,就没问题了,在图形界面的文本编辑器保存默认也会添加一个回车,所以,如果是在图形界面的文本编辑器下直接生成的,不会出现该错误.

4、建立基于vsftpd_login的PAM授权文件

#vim /etc/pam.d/vsftpd.vu

vsftpd.vu文件内容(32位系统):

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

vsftpd.vu文件内容(64位系统):

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

注意:这里必须清楚知道自己的linux系统是32位还是64位的,如果这里不正确,那么在整过配置过程完成后,FTP将无法成功验证用户的登录,出现“530 Login incorrect 错误”。

5、设置用户权限

建立用来存放用户权限设置文件的目录

#mkdir /etc/vsftpd/virtual

并在该文件夹下依次建立与logins.txt对应的帐号名称相同的文件

#vim gavin

内容可以参考下面:

#[gavin]只允许下载

anon_world_readable_only=NO

local_root=/home/ftp

#[jimson]允许建立,修改,但是不允许删除

anon_world_readable_only=NO

write_enable=YES

anon_mkdir_write_enable=YES

anon_upload_enable=YES

local_root=/home/ftp

#[admin]全部权限

anon_world_readable_only=NO

write_enable=YES

anon_mkdir_write_enable=YES

anon_upload_enable=YES

anon_other_write_enable=YES

local_root=/home/ftp

6、设置vsftpd.conf

#vim /etc/vsftpd/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=virtual

pam_service_name=vsftpd.vu

user_config_dir=/etc/vsftpd/virtual

xferlog_enable=YES

xferlog_file=/var/log/vsftpd.log

注意备份原配置文件

7、重新启动vsftpd

#service vsftpd restart

【可能出现的问题】

1、无法登陆

解决方法:

(1)检查ftp根目录目录是否存在;

(2)检查上面设置的各个路径是否正确;

(3)查看ftp根目录的owner属性是否是virtual

#ls -al /home

如果不是

#chown -R virtual /home/ftp

【日常维护】

(1)更新帐号

#db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/vsftpd_login.db

(2)更新/etc/vsftpd/virtual/下不同用户对应的权限

(3)重启vsftpd

#service vsftpd restart

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/328350
推荐阅读
相关标签
  

闽ICP备14008679号