centos6.0 vsftpd虚拟用户配置总结

简述PAM原理
  如果你已经对pam有所了解,请跳过,我知道的可能还不如你多。你不感兴趣也请跳过,因为不看这个也可配置。
  用户 <-> vsftpd <-> PAM模块 <-> 用户和密码数据库
  vsftpd用了一种很聪明同时也是unix/linux规范的方法来认证用户,就是PAM。大家对于PAM,也许有些陌生,但是一直在用。所谓PAM,英文是:Pluggable Authentication Modules,可拔插认证模    块(不知道这样翻译对不对)。看见plug这个关键字,就知道是很灵活的。
  现在几乎所有daemon程序一般都是用PAM来进行认证的,包括telnet/sshd/imapd,甚至你的login,都是用PAM
   PAM的最大好处是灵活。它不管你的用户和密码用什么数据格式存储(数据库也好,通常用的密码文件也好),只要有相应的PAM模块就可以存储。比如说,大家不仅可以用vsftpd + PgSQL做用户登陆   验证,只要你喜欢你还可以用MySQL,Oracle,LDAP数据库存储用户数据,只要有相应的PAM就可以。所有的daemon都可以用一个后台数据库来做用户验证登陆,包括telnet/sshd等等。
1.系统版本为centos6.0,直接用yum来安装vsftpd
[root@localhost ~]#yum -y install vsftpd db4-devel db4 db4-utils pam-devel pam pam_pkcs11 ftp //安装软件和vsftpd
2.[root@localhost ~]#chkconfig vsftpd on//开机2345启动vsftpd服务
3.[root@localhost ~]#cp -rf /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.1//备份一下vsftpd.conf为vsftpd.conf.1
4.[root@localhost ~]#grep -v "#" /etc/vsftpd/vsftpd.conf.1>/etc/vsftpd/vsftpd.conf//去除#号重定向到/etc/vsftpd/vsftpd.conf文件中。
5.[root@localhost ~]#cat /etc/vsftpd/vsftpd.conf//vsftpd.conf内容如下:
anonymous_enable=NO#设定不允许匿名访问
local_enable=YES#设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问。
#chroot_list_enable=YES #使用户不能离开主目录我这句是没加入的加入就登录不了不知道为什么?
write_enable=YES
local_umask=022//生成掩码为022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=NO
listen_port=5021
ftp_data_port=5020
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10010
local_max_rate=20000
chroot_local_user=YES
xferlog_file=/var/log/vsftpd.log#设定vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来
xferlog_std_format=YES
ascii_upload_enable=YES #允许使用ASCII模式上传
ascii_download_enable=YES #设定支持ASCII模式的上传和下载功能。
listen=YES
guest_enable=YES#设定启用虚拟用户功能
guest_username=vritual#指定虚拟用户的宿主用户。-RHEL/CentOS中已经有内置的ftp用户了我这里是自己创建的vritual
pam_service_name=vsftpd#PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
user_config_dir=/etc/vsftpd/vuser_conf#设定虚拟用户个人vsftp的RHEL/CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名)
virtual_use_local_privs=YES
 
anonymous_enable=NO
local_enable=YES
#chroot_list_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
listen=YES
guest_enable=YES
guest_username=vFtpUser
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd/vuser_conf
virtual_use_local_privs=YES
listen_port=5021
ftp_data_port=5020
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10010
local_max_rate=80000
 
6.创建vsftpd密码文件
[root@localhost ~]#vi /etc/vsftpd/vsftpd.login.txt//一行为用户名另外一行为密码。
zhh
123456
user1
user1
user2
user2
user3
user3
user4
user4
user5
user5
7.[root@localhost ~]#db_load -T -t hash -f /etc/vsftpd/vsftpd.login.txt /etc/vsftpd/vsftpd.login.db//生成vsftpd.login.db文件chmod 700权限。
8.[root@localhost ~]#vi /etc/pam.d/vsftpd//这个文件最前面添加vsftpd.login最好添加在最前面。
#%PAM-1.0
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd.login
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd.login
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth
~
9.[root@localhost ~]#mkdir /etc/vsftpd/vuser_conf/ //创建vuser_conf文件夹
10.[root@localhost ~]#vi /etc/vsftpd/vuser_conf/zhh//创建虚拟用户个性RHEL/CentOS FTP服务文件
local_root=/home/ftpsite/zhh//虚拟用户的根目录(根据实际修改) 
write_enable=YES可写 
anon_umask=022掩码
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
 
local_root=/home/ftpsite/ydg 
write_enable=YES 
anon_umask=022
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

11.[root@localhost ~]#useradd -d /home/ftpsite/ -s /sbin/nologin vritual //建立虚拟账号
12.[root@localhost ~]#touch /var/log/vsftpd.log
13.[root@localhost ~]# service vsftpd start//启动vsftpd服务
14.[root@localhost ftp]# ftp localhost//登录ftp
Trying ::1...
ftp: connect to address ::1Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (localhost:root): zhh
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir zhh
257 "/home/ftpsite/zhh" created

15.常见问题: 
 553 Could not create file 
一般都是SELinux的问题,设置SELinux的一个值,重启服务器即可。 
setsebool -P ftpd_disable_trans 1 

如果还是不行的话再使用下面完全方式:
[root@linux115 vsftpd]# setsebool allow_ftpd_full_access 1
[root@linux115 vsftpd]# setsebool allow_ftpd_use_cifs 1
[root@linux115 vsftpd]# setsebool allow_ftpd_use_nfs 1
[root@linux115 vsftpd]# setsebool -P ftp_home_dir 1 
[root@linux115 vsftpd]# setsebool httpd_enable_ftp_server 1
[root@linux115 vsftpd]# setsebool tftp_anon_write 1
[root@linux115 vsftpd]# service vsftpd restart
关闭 vsftpd:[确定]
为 vsftpd 启动 vsftpd:[确定]
[root@linux115 vsftpd]# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> on
allow_ftpd_use_cifs --> on
allow_ftpd_use_nfs --> on
ftp_home_dir --> on
ftpd_connect_db --> off
httpd_enable_ftp_server --> on
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> on

重启vsftpd,即可解决问题。

 


service vsftpd restart 
 500 OOPS: bad bool value in config file for: write_enable 
注意你的CentOS FTP服务文件中保证每一行最后没有任何空格,一般出错就是在多余的空格上。 
 
虚拟用户上传后默认权限为:600,用户无法下载文件 
在配置文件中添加或修改anon_umask项的值。如anon_umask=022或000 
 
使用命令添加ftp用户
添加ftp用户,命令格式: 
#adduser -d /目录路径 -g ftp -s /sbin/nologin 用户名 
 
adduser -d /usr/ftpsite/iceliu -g ftp -s /sbin/nologin iceliu
 
如何把帐号ftp默认的路径/var/ftp更改到别处?或者是,我的linux所有的目录都放在/根分区,因为空间紧张,我能否把ftp这个用户的默认路径放到别的分区??
 
对于ftp这个用户的管理,我们应该查看/etc/passwd ,然后修改ftp用户那行;
 
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
 
比如我们想把ftp用户的家目录改为,则要把类似上一行改为
 
ftp:x:14:50:FTP User:/在这里修改就行了/ftp:/sbin/nologin
 
然后我们要建立ftp用户的新的家目录。
疑问:
 创建chroot list,将ftp用户加入其中://这个起到什么作用不清楚所以没添加。
touch /etc/vsftpd/chroot_list 
echo ftp >> /etc/vsftpd/chroot_list

16.最后为了方便大家自己写了一个shell给大家加上附件,如果不符合要求可以自己自行修改参数。

#!/bin/sh
yum -y install vsftpd db4-devel db4 db4-utils pam-devel pam pam_pkcs11 ftp
chkconfig vsftpd on
cp -rf /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.1
cp -rf /root/ftp/vsftpd.conf /etc/vsftpd
cp -rf /root/ftp/vsftpd /etc/pam.d/
cp -rf /root/ftp/vuser_conf /etc/vsftpd
cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user1
cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user2
cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user3
cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user4
cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user5
db_load -T -t hash -f /root/ftp/vsftpd.login.txt /root/ftp/vsftpd.login.db
mv /root/ftp/vsftpd.login.db /etc/vsftpd/
useradd -d /home/ftpsite vritual
service vsftpd start
ftp localhost

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值