麒麟操作系统V10 基于PAM认证,配置vsftpd v3.0.3

        麒麟以前的操作系统,均可使用传统的本地用户形式(以/etc/passwd中的用户名为认证方式)访问ftp。这次更换 麒麟V10版本后,传统的本地用户登录方式,始终不成功,遂花时间研究了基于PAM认证,配置vsftpd服务,并成功应用。

        本文配置前提:

1、本机已经安装完成vsftpd v3.0.3
[user@192 ~]$ vsftpd -v
vsftpd: version 3.0.3

2、关闭防火墙与SELinux
[root@192 ~]$ systemctl stop firewalld.service
[root@192 ~]$ getsebool 
getsebool:  SELinux is disabled

3、已安装libdb-utils包


一、建立系统本地用户vsftpd,home目录:/data/vsftpd,修改用户登录权限
[root@192 ~]$useradd -d /data/vsftpd -m vsftpd
[root@192 ~]$usermod -s /sbin/nologin vsftpd

二、配置认证文件

[root@192 ~]$vim /etc/vsftpd/access.txt
vsftpd
123456

access.txt文件保持一行用户名+一行密码
vsftpd用户与本地用户需保持一致,如使用PAM认证的虚拟账户,则可随意设置

使用db_load工具,使用hash算法,把明文密码写成数据库文件,修改db文件权限设置为600
[root@192 ~]$ db_load -T -t hash -f /etc/vsftpd/access.txt /etc/vsftpd/access.db

修改pam认证中vsftpd文件,使用上面生成的数据库文件
[root@192 ~]$ vim /etc/pam.d/vsftpd
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/access
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/access

 三、配置ftp服务

# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=NO
listen=YES
listen_ipv6=NO
#PAM认证文件/etc/pam.d/vsftpd
pam_service_name=vsftpd
#让家目录可写
allow_writeable_chroot=YES


四、测试ftp连接,一切正常。

[root@192 ~]$ systemctl restart vsftpd.service

[root@192 ~]$ lftp vsftpd@localhost
密码: 
lftp vsftpd@localhost:~> ls                       
-rw-r--r--    1 1003     1003           29 Oct 21 12:28 1.txt
drwxr-xr-x    3 1003     1003           39 Oct 21 12:30 新文件夹


五、设置虚拟用户访问

1、创建目录
[root@192 ~]$mkdir /data/vsftpd/test1
[root@192 ~]$mkdir /data/vsftpd/test2
[root@192 ~]$chown vsftpd:vsftpd -R /data/vsftpd/
[root@192 ~]$chmod 755 -R /data/vsftpd/

2、添加虚拟用户
[root@192 ~]$vim /etc/vsftpd/access.txt
test1
123456
test2
123456

3、修改配置文件
[root@192 ~]$vim /etc/vsftpd/vsftpd.conf
#开启虚拟用户
guest_enable=YES
# 虚拟用户映射系统用户vsftpd
guest_username=vsftpd
# 虚拟用户与本地用户权限相同
virtual_use_local_privs=YES
#虚拟用户配置文件目录
user_config_dir=/etc/vsftpd/vsftpd_user_conf

4、写入test1的权限
[root@192 ~]$vim /etc/vsftpd/vsftpd_user_conf/test1

#用户home目录
local_root=/data/vsftpdata/test1
#local_umask=022
#等待输入FTP指令的空闲时间(秒)
idle_session_timeout=600
#等待数据传输(上传/下载)的空闲时间(秒)
data_connection_timeout=120
#同时允许连接服务器最大客户端数
max_clients=10
#每个用户允许连接最大连接数
max_per_ip=5
#用户带宽10M
local_max_rate=10000000
#用户可以浏览FTP目录和下载文件
anon_world_readable_only=NO
#表示用户可以上传文件
anon_upload_enable=YES
#表示用户有创建和删除目录的权限
anon_mkdir_write_enable=YES
#表示用户具有文件改名和删除文件的权限             
anon_other_write_enable=YES 

5、测试test1用户,能正常访问

[root@192 ~]$ systemctl restart vsftpd.service

[root@192 ~]$ lftp test1@localhost
密码: 
lftp test1@localhost:~> ls                       
-rw-r--r--    1 1003     1003           29 Oct 21 13:58 1.txt


扩展知识:

#开启vsftp被动模式
pasv_enable=YES
#设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,注意防火墙放行端口
pasv_min_port=12000
pasv_max_port=12005
#被动模式下,需关闭数据传输时使用的20端口(ftp-data)
connetc_from_port_20=NO

#匿名用户的带宽是30kb
anon_max_rate=30000
#本地所以用户速度30kb
local_max_rate=30000

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装步骤: 0、交叉编译环境配置 在/etc/profiel 和 .bashrc 文件中增加以下内容 export PTAH=$PATH://root/compile/arm-none-linux-gnueabi/bin source .bashrc 1、解压 tar -zxvf vsftpd-3.0.3.tar.gz.tar 2、修改Makefile文件 vim Makefile CC=arm-none-linux-gnueabi-gcc 3、执行make,已修复以下错误 make (1)错误提示:/bin/sh:./vsf_findlibs.sh: Permission denied 解决措施:chmod 775 ./vsf_findlibs.sh (2)错误提示:/lib/libcap.so.2:could not read symbols: File in wrong format 解决措施:修改vsffindlibs.sh,屏蔽掉50-60行 (3)错误提示:sysdeputil.c:(.text+0xdcc):undefined reference to `crypt' 解决措施:arm-none-linux-gnueabi/libc/lib/下的libcrypt.so.1复制到开发板根文件系统/lib目录下 4、拷贝文件到开发板中 make成功之后有在当前目录生成了vsftpd文件,通过以下命令查找对应的依赖性 arm-linux-readelf -d vsftpd   Tag        Type                        Name/Value 0x00000001 (NEEDED)                    Shared library: [libcrypt.so.1] 0x00000001(NEEDED)                     Shared library: [libc.so.6] 把vsftpd、libcrypt.so.1及这两个连接所指向的源文件拷贝开发板系统根目录/lib中。 把生成的vsftpd拷贝到根文件系统的sbin目录,vsftpd.conf文件拷贝到开发板系统根文件系统的etc目录下。 5、配置vsftpd.conf #使vsftpd处于独立启动模式 listen=YES listen_port=21 anon_other_write_enable=YES 6、开发板根文件系统创建必要的目录: mkdir-p /var/ftp/pub mkdir -p /usr/share/empty chown root:root/var/ftp chmod 755 /var/ftp cd /var/ftp chmod 777 pub pub这个目录是用来供匿名用户上传文件的,上传的文件存放在此处,故其属性为777,而其他目录无此属性,不能用来作为上传目录。 7、开发板执行以下命令启动 vsftpd/etc/vsftpd.conf& 8、启动ftp登录 用户名root密码空,可访问开发板任意目录; 用户名anonymous密码空,可访问/var/ftp/pub目录 用户名ftp密码空,可访问/var/ftp/pub目录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值