Hi3520d 嵌入式ftp服务器vsftpd移植及配置

来源:互联网 发布:截面数据 编辑:程序博客网 时间:2024/06/06 02:20

 1、下载vsftpd-2.0.7.tar.gz

 2、解压 修改Makefile CC=arm-hisiv100nptl-linux-gcc,make

报错:

sysdeputil.c:162: error: expected declaration specifiers or '...' before 'capset'

解决:

修改sysdeputil.c

#include <sys/capability.h>
 
 #if defined(VSF_SYSDEP_HAVE_CAPABILITIES) && !defined(VSF_SYSDEP_HAVE_LIBCAP)
-#include <linux/unistd.h>
 #include <linux/capability.h>
 #include <errno.h>
-#include <syscall.h>
-_syscall2(int, capset, cap_user_header_t, header, const cap_user_data_t, data)
-/* Gross HACK to avoid warnings - linux headers overlap glibc headers */
-#undef __NFDBITS
-#undef __FDMASK
+#include <sys/syscall.h>
+#include <unistd.h>
+int capset(cap_user_header_t header,
+           cap_user_data_t data)
+{
+  return syscall(SYS_capset, header, data);
+}
 #endif /* VSF_SYSDEP_HAVE_CAPABILITIES */
 
 #if defined(VSF_SYSDEP_HAVE_LINUX_SENDFILE) || \  

重新make,又报错了:

sysdeputil.c:(.text+0x860): undefined reference to `crypt'

修改Makefile

LIBS    =       `./vsf_findlibs.sh` -lcrypt

链接crypt库

重新make,ok了

root@ubuntu:vsftpd-2.0.7# ls -lh vsftpd
ls: 初始化月份字符串出错
-rwxr-xr-x 1 root root 87K  9�� 17 11:37 vsftpd
root@ubuntu:vsftpd-2.0.7# 


配置:

首先,修改配置文件

/etc/vsftpd.conf如下:

anonymous_enable=NO
local_enable=YES
write_enable=NO
local_umask=077
anon_upload_enable=NO
dirmessage_enable=NO
xferlog_enable=NO
connect_from_port_20=YES
pam_service_name=vsftpd
listen=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list


然后,添加用户

adduser nobody   //vsftpd 默认配置需要

adduser -D /var/ftp ftp

实际上是修改的/etc/passwd 和 /etc/group文件,也可手动修改


然后,mkdir /usr/share/empty//vsftpd 默认配置需要


然后,

adduser -h /mnt -G ftp -S /sbin/nologin yourname //添加yourname用户到ftp用户组,能访问的主目录为/mnt,不能使用该用户名本地登陆

同样可以通过修改系统文件实现

nologin路径根据实际情况改写,否则adduser执行出错

要达到禁止yourname本地登陆的目的,网上还有一种方法

passwd -l yourname //为yourname加锁 -l lock,实际上就是修改/etc/passwd文件中yourname对应的密码最开始加了一个 !

但此时ftp也无法使用该用户名登陆了,shit,无用


然后,限制用户不能改变ftp目录到上一级目录

修改/etc/vsftpd.conf
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
然后vi /etc/vsftpd.chroot_list,在文件里一行一个写入要限制的用户名


然后,想到了再写


0 0
原创粉丝点击