linux vsftp 多用户,vsftp 多用户不同访问权限配置

该博客详细介绍了如何在CentOS6.4环境下,利用vsftpd为admin、upload和download三个虚拟用户设置不同权限。包括安装vsftpd,创建并配置虚拟用户列表,修改PAM文件,创建用户配置文件以及调整vsftpd.conf文件,以限制用户上传、下载、新建文件夹等操作,并防止用户登录系统和访问其他目录。此外,还解决了530 Permission denied错误和chroot_list_enable与chroot_local_user配置选项的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验环境:

centos 6.4 x86_64

实验目标:

实现在同一跟目录下对admin,upload,download三个虚拟用户的不同权限的控制。具体权限控制列表如下:用户名权限说明

admin管理员,可以上传、下载、新建文件夹、删除和更改文件和文件夹名。

upload不可以下载,可以上传、新建文件夹,但不能删除文件和文件夹,不能重命名原有文件和文件夹;

download只能下载,不能进行其他操作。

以上三个虚拟用户均不允许登录系统,并且使用ftp时会被锁定在指定目录内不可进入系统其他目录。

一、安装、配置vsftpd

为了方便我这里采用yum的方式安装vsftpd[root@centi-c /]# yum -y install vsftpd

[root@centi-c /]# cd /etc/vsftpd/

[root@centi-c vsftpd]# cp vsftpd.conf vsftpd.conf.bak

[root@centi-c vsftpd]# service vsftpd start

Starting vsftpd forvsftpd: [ OK ]

#添加一个不能登录系统的用户,用来做虚拟用户映射

[root@centi-c vsftpd]# useradd –s /sbin/nologin –d /home/www2013 -M www2013

[root@centi-c vsftpd]# passwd www2013

#创建虚拟用户列表,分别是upload、download和admin

[root@centi-c vsftpd]# touch /etc/vsftpd/vu_list.txt

[root@centi-c vsftpd]# echo upload >>/etc/vsftpd/vu_list.txt

[root@centi-c vsftpd]# echo 111111 >>/etc/vsftpd/vu_list.txt

[root@centi-c vsftpd]# echo download >>/etc/vsftpd/vu_list.txt

[root@centi-c vsftpd]# echo 111111 >>/etc/vsftpd/vu_list.txt

[root@centi-c vsftpd]# echo admin >>/etc/vsftpd/vu_list.txt

[root@centi-c vsftpd]# echo 111111 >>/etc/vsftpd/vu_list.txt

#查看列表内容

[root@centi-c vsftpd]# cat /etc/vsftpd/vu_list.txt

upload

111111

download

111111

admin

111111

#保存虚拟帐号和密码的文本文件无法被系统帐号直接调用,需要创建用于系统认证的db文件

[root@centi-c vsftpd]# db_load -T -t hash -f /etc/vsftpd/vu_list.txt /etc/vsftpd/vu_list.db

#创建db文件需要db4支持,如果系统没安装请安装

[root@centi-c vsftpd]# yum -y install db4 db4-devel db4-utils

#修改db文件的权限,以免被非法用户修改

[root@centi-c vsftpd]# chmod 600 /etc/vsftpd/vu_list.db

配置PAM文件

由于服务器通过调用系统PAM模块来对客户端进行身份验证,因此需要修改指定的配置文件来调整认证方式。PAM模块的配置文件路径为:/etc/pam.d/,这个目录下存放只许多与用户认证有关的配置文件。[root@centi-c pam.d]# ls

chfn fingerprint-auth passwd runuser smtp.postfix su-l

chsh fingerprint-auth-ac password-auth runuser-l sshd system-auth

config-util login password-auth-ac smartcard-auth su system-auth-ac

crond newrole remote smartcard-auth-ac sudo vsftpd

cvs other run_init smtp sudo-i

编辑vsftpd文件

32位系统添加:auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vu_list

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

64位系统添加:

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

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

两行内容。[root@centi-c pam.d]# vi vsftpd

#%PAM-1.0

session optional pam_keyinit.so force revoke

auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusersonerr=succeed

auth required pam_shells.so

auth include system-auth

account include system-auth

session include system-auth

session required pam_loginuid.so

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

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

创建虚拟用户配置文件:#创建conf文件夹

[root@centi-c pam.d]# cd /etc/vsftpd

[root@centi-c vsftpd]# mkdir conf

[root@centi-c vsftpd]# cd conf

#创建admin用户的配置文件

[root@centi-c conf]# cat >>admin<< EOF

> anon_world_readable_only=NO

> write_enable=YES

> anon_mkdir_write_enable=YES

> anon_other_write_enable=YES

> anon_upload_enable=YES

> EOF

#创建upload用户的配置文件

[root@centi-c conf]# cat >>upload<< EOF

> write_enable=NO

> anon_upload_enable=YES

> anon_mkdir_write_enable=YES

> anon_world_readable_only=NO

>download_enable=NO

> EOF

#创建download用户的配置文件

[root@centi-c conf]# cat >>download<< EOF

> anon_world_readable_only=NO

> EOF

修改vsftpd.conf文件#修改内容如下

[root@centi-c conf]# cd ..

[root@centi-c vsftpd]# vi vsftpd.conf

anonymous_enable=NO

local_enable=YES

anon_mkdir_write_enable=NO

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

chown_uploads=NO

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

# To fixed 500 OOPS: vsftpd: refusing to run with writable root inside chroot ()

allow_writable_root=YES

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

nopriv_user=www2013

async_abor_enable=YES

ascii_upload_enable=YES

ascii_download_enable=YES

ftpd_banner=Welcome to blah FTP service ^_^

ls_recurse_enable=NO

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

local_root=/home/www2013

guest_enable=YES

guest_username=www2013

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/conf

如果不加这一段的话会报如下错误:

To fixed 500 OOPS: vsftpd: refusing to run with writable root inside chroot ()

具体测试过程就不一一列举了,有空再添加。

部分错误解决方法:

1.530 Permission denied.

解决过程如下:

[root@centi-c vsftpd]# ftp 127.0.0.1

Connected to 127.0.0.1 (127.0.0.1).

220 Welcome to blah FTP service ^_^

Name (127.0.0.1:root): admin

331 Please specify the password.

Password:

530 Permission denied.

Login failed.

ftp> bye

221 Goodbye.

#查看secure日志后,错误原因一目了然

[root@centi-c vsftpd]# tail -f /var/log/secure

Jul 5 10:09:30 centi-c vsftpd[36501]: PAM unable to dlopen(/lib/security/pam_userdb.so): /lib/security/pam_userdb.so: cannot openshared object file: No such fileor directory

Jul 5 10:09:30 centi-c vsftpd[36501]: PAM adding faulty module: /lib/security/pam_userdb.so

Jul 5 10:16:34 centi-c vsftpd[36501]: PAM unable to dlopen(/lib/security/pam_userdb.so): /lib/security/pam_userdb.so: cannot openshared object file: No such fileor directory

Jul 5 10:16:34 centi-c vsftpd[36501]: PAM adding faulty module: /lib/security/pam_userdb.so

Jul 5 10:16:39 centi-c vsftpd[36501]: PAM unable to dlopen(/lib/security/pam_userdb.so): /lib/security/pam_userdb.so: cannot openshared object file: No such fileor directory

Jul 5 10:16:39 centi-c vsftpd[36501]: PAM adding faulty module: /lib/security/pam_userdb.so

Jul 5 10:16:53 centi-c vsftpd[36501]: PAM unable to dlopen(/lib/security/pam_userdb.so): /lib/security/pam_userdb.so: cannot openshared object file: No such fileor directory

Jul 5 10:16:53 centi-c vsftpd[36501]: PAM adding faulty module: /lib/security/pam_userdb.so

Jul 5 10:26:48 centi-c vsftpd[37818]: PAM unable to dlopen(/lib/security/pam_userdb.so): /lib/security/pam_userdb.so: cannot openshared object file: No such fileor directory

Jul 5 10:26:48 centi-c vsftpd[37818]: PAM adding faulty module: /lib/security/pam_userdb.so

修改/etc/pam.d/vsftpd文件,将auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vu_list

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

改为:

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

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

重启sftpd服务,就可以正常登录了

2.chroot_list_enable和chroot_local_user取值的不同组合情况:参数取值取值取值取值

chroot_list_enableYESYESNONO

chroot_local_userYESNOYESNO

意义文件中列出的用户根目录为系统根目录,其它用户根目录为自己主目录。文件中列出的用户根目录为自己主目录,其它用户根目录为系统根目录。全部用户根目录都是自己主目录。全部用户根目录都是系统根目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值