vsftp配置手册

本文详细介绍了如何使用vsftpd程序及pam组件搭建FTP服务器,包括安装、配置虚拟用户及测试等步骤。

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

1.      目标系统

使用vsftp程序及pam组件来完成vsftp搭建,实现ftp功能。

2.      系统要求

1.         ftp功能

2.         用户锁定目录

3.         上传下载可行

4.         不使用系统帐户验证

5.         多用户支持

3.      需要组件

vsftpd-2.0.7

db4-devel-4.2.52-7.1
db4-4.2.52-7.1
db4-utils-4.2.52-7.1

4.      安装过程

4.1.      安装组件

首先下载vsftp组件

wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.7.tar.gz

解压至目录

#tar zxvf vsftpd-2.0.7.tar.gz

#cd vsftpd-2.0.7

清除编译环境

#make clean

开始进入编译预准备

#vi builddefs.h

将其中VSF_BUILD_TCPWRAPPERSVSF_BUILD_PAMVSF_BUILD_SSL所在行undef改为define

vsftpd的目录里编译

#make

随后创建必要的帐号,目录:

#useradd nobody  //可能你的系统已经存在此帐号,那就不用建立

#mkdir /usr/share/empty  //可能你的系统已经存在此目录,那就不用建立

#mkdir /var/ftp  //可能你的系统已经存在此目录,那就不用建立

#useradd -d /var/ftp ftp  //可能你的系统已经存在此帐号,那就不用建立

#chown root:root /var/ftp

#chmod og-w /var/ftp

请记住,如果你不想让用户在本地登陆,那么你需要把他的登陆SHELL设置成/sbin/nologin,比如以上的nobodyftp我就设置成/sbin/nologin

开始安装

#install -m 755 vsftpd /usr/local/sbin/vsftpd-pam

#install -m 644 vsftpd.8 /usr/share/man/man8

#install -m 644 vsftpd.conf.5 /usr/share/man/man5

#install -m 644 vsftpd.conf /etc/vsftpd-pam.conf

4.2.      配置基础环境

1.         查看系统是否有相应软件包

#rpm –qa | grep db4
db4-utils-4.3.29-9.fc6

db4-4.3.29-9.fc6

db4-devel-4.3.29-9.fc6

如果没有则需要安装

2.         建立一个logins.txt的文件,单行为用户名,双行为密码

#vi /home/logins.txt

test

123456

3.         建立数据库文件并设置文件属性

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

#chmod 600 /etc/vsftpd_login.db

4.         建立认证文件

新建文件

#vi /etc/pam.d/ftp

并加入下面两行

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

5.         建立一个虚拟用户

useradd -d /home/vsftpd -s /sbin/nologin vsftpd

6.         修改配置文件

#vi /etc/vsftpd-pam.conf

在配置文件修改或添加以下选项

listen=YES
listen_port=21
tcp_wrappers=YES //
支持tcp_wrappers,限制访问
(/etc/hosts.allow,/etc/hosts.deny)
listen=YES
的意思是使用standalone启动vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式
)
anonymous_enable=NO
local_enable=YES  //PAM
方式此处必须为YES,如果不是将出现如下错误:

500 OOPS: vsftpd: both local and anonymous access disabled!
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=vsftpd //
这两行的意思是采用虚拟用户形式
virtual_use_local_privs=YES //
虚拟用户和本地用户权限相同
pasv_enable=YES //
建立资料联机采用被动方式

anon_world_readable_only=NO

7.         启动程序

#/usr/local/sbin/vsftpd-pam /etc/vsftpd-pam.conf &

报错:500 OOPS: bad bool value in config file for: tcp_wrappers

8.         测试连接

ftp 127.0.0.1

报错:[root@lvs3 vsftpd-2.0.7]# ftp localhost

Connected to lvs3.

500 OOPS: vsftpd: cannot locate user specified in 'guest_username':vsftpd

Connected to 127.0.0.1.

220 (vsFTPd 2.0.7)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (127.0.0.1:root): pool1

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> dir

227 Entering Passive Mode (127,0,0,1,83,150)

150 Here comes the directory listing.

226 Directory send OK.

ftp> quit

221 Goodbye.

4.3.      配置用户环境

1.         建立所有需要登录用户

#vi /home/logins.txt

test

123456

test

234567

单行为用户名,双行为密码

2.         更新数据文件

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

3.         配置用户环境

#mkdir /etc/vsftpd_user_conf/

#vi /etc/vsftpd-pam.conf 加入如下语句
user_config_dir=/etc/vsftpd_user_conf

-----------------------以下为单用户循环配置,每用户都需要建立------------------------------

#mkdir /home/vsftpd/test

#vi /etc/vsftpd_user_conf/test

添加内容

local_root=/home/vsftpd/test
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

保存退出

修改配置及目录权限

# chmod 700 /home/vsftpd/test
# chown vsftpd.vsftpd /home/vsftpd/test/

---------------------------------用户配置结束---------------------------------------

4.         测试用户是否登录到自己目录及上传下载正常

5.      客户端测试

1.         在建立好的每个用户/目录下建立测试文件两个(文件名不要相同);

2.         使用客户端软件从外部测试;

3.         分别登录两个以上的帐号,通过察看根目录存在文件检查是否引导到不同/目录下;

4.         尝试下载测试文件到本地;

5.         尝试删除测试文件;

6.         尝试上传文件到测试帐号;

7.         测试完成。

<think>嗯,用户的问题是关于STM32TIM_OCNPolarity的含义用法。首先,我需要回忆一下STM32定时器的相关知识,特别是关于输出比较的部分。 我记得在STM32的定时器中,TIM模块有很多功能,比如PWM生成、输入捕获、输出比较等。TIM_OCNPolarity应该互补通道的输出极性有关。互补通道通常用于驱动电机控制中的H桥电路,或者需要两个互补信号的情况,比如带死区插入的PWM输出。 根据之前看过的资料,比如引用[1]引用[2],TIM_OCPolarity是用来设置主输出通道的极性,比如高电平有效还是低电平有效。而TIM_OCNPolarity应该对应的是互补通道的极性设置。互补通道通常用于需要两个相反信号的场合,比如三相电机控制中的上下桥臂。 需要确认的是,互补通道N的极性设置与主通道O的极性是否独立。例如,主通道设置为高电平有效,互补通道可以单独设置为低电平有效,这样在输出时能够形成互补的波形。这在带死区的PWM控制中尤为重要,因为需要确保两个通道不会同时导通,避免短路。 另外,用户提供的引用[1]中提到了输入极性的定义,比如上升沿、下降沿等,但这里的问题是关于输出极性。引用[2]提到TIM_OCPolarity是输出极性,所以TIM_OCNPolarity应该是互补通道的输出极性。可能的值包括高电平有效或低电平有效,对应的宏定义可能是TIM_OCNPolarity_HighTIM_OCNPolarity_Low。 还需要注意,互补通道的功能通常与高级定时器(如TIM1TIM8)相关,因为这些定时器支持更复杂的PWM生成,包括死区插入互补输出。在使用TIM_OCNPolarity时,需要确保定时器配置为输出比较模式,并且启用了互补通道。 可能的应用场景包括电机控制、电源转换等需要精确控制开关状态的场合。例如,在驱动三相无刷电机时,互补的PWM信号可以控制MOSFET或IGBT的导通关断,从而控制电机的转动。 总结一下,TIM_OCNPolarity用于设置互补通道的输出极性,配置时需结合TIM_OCMode选择输出比较模式,设置TIM_Channel选择对应的通道,并通过TIM_OCNPolarity_High或TIM_OCNPolarity_Low来确定极性。同时,需要启用互补通道的输出,可能需要设置相关的使能位,比如CCxNE位。 需要验证这些信息是否正确,可能需要查阅STM32的参考手册或相关数据表,确保参数配置步骤的准确性。同时,用户可能需要知道如何在实际代码中配置这些参数,比如在HAL库中使用哪些函数,或者直接操作寄存器的方法。</think>关于STM32TIM_OCNPolarity的使用说明如下: ### 1. 基本定义 TIM_OCNPolarity是STM32定时器中用于配置**互补输出通道极性**的关键参数,与高级定时器(如TIM1/TIM8)的互补PWM输出功能相关。其作用是通过设置输出比较通道N的极性(高电平有效或低电平有效),控制互补信号的电平逻辑[^2]。 ### 2. 参数取值 - `TIM_OCNPolarity_High`:互补通道输出高电平有效 - `TIM_OCNPolarity_Low`:互补通道输出低电平有效 ```c // 示例代码(以TIM1通道1互补输出为例) TIM_OCInitTypeDef TIM_OCInitStruct; TIM_OCInitStruct.TIM_OCNPolarity = TIM_OCNPolarity_High; // 设置互补通道极性 ``` ### 3. 配置步骤 1. **选择定时器模式**:设置为PWM模式或其他输出比较模式 ```c TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1; ``` 2. **启用互补通道**:通过`TIM_CCxN`使能位激活通道 3. **设置极性**:通过`TIM_OCNPolarity`指定电平逻辑[^2] 4. **配置死区时间**(可选):与`TIM_BDTR`寄存器配合使用防止桥臂短路 ### 4. 典型应用场景 - 三相电机驱动:控制H桥电路的上/下管互补开关 - 同步整流电源:生成互补的开关控制信号 - 数字电源:实现交错并联拓扑的相位控制 ### 5. 注意事项 - 仅适用于**带互补输出的高级定时器**(TIM1/TIM8) - 需与主通道极性`TIM_OCPolarity`配合使用 - 必须启用`TIM_CCxNE`位才能使互补通道生效
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值