打开IIS管理器,点击fjnu-ftp主页中的【FTPIP地址和域限制】。进入【FTPIP地址和域限制】主页后,在右侧【 *** 作】中点击【添加拒绝条目】,在d出的对话框中根据实际需求添加要拒绝的IP地址或IP地址范围返回【FTPIP地址和域限制】主页,发现主页中出现拒绝条目。
FTP服务器(FileTransferProtocolServer)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。FTP是FileTransferProtocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。
linux ftp 文件上传权限有两种匿名上传和本地上传1)实现匿名用户的上传下载文件程序代码:
Anonymous_enable=yes匿名登陆
Connect_form_port_20=yes 启用FTP数据端口的数据连接
Pam_service_name=vsftpd验证方式
Listen=yes 独立的VSFTPD服务器
Anon_upload_enable=yes 开放上传权限
Anon_mkdir_write_enable=yes 可创建目录的同时可以在此目录中上传文件
Write_enable=yes 开放本地用户写的权限
Anon_other_write_enable=yes
匿名帐号可以有删除的权限加上上面的这段,你就可以实现匿名ftp的上传下载文件了然后你保存文件,用service vsftpd
start来启动vsftp的服务,然后就可以用ftp了注意:确定你的防火墙
iptables上打开21端口,不然在登陆ftp的时候会提示socket错误,拒绝连接。还有就是当你再次编辑vsftp.conf后用
service vsftpd restart重起的时候总是提示你不能关闭vsftp服务,这时候你用service vsftpd
status察看一下他的状态,如果提示你vsftpd被locked
那可能是因为你的vsftpd.conf中配置的有错误,你要重新编辑他,直到能正常重起他为止,一次配置不对,多配置几次就好了
2)实现本地用户上传下
载
程序代码:
新建一个用户
adduser 用户名增加一个用户
passwd 用户名 增加用户的密码
然后看/etc/passwd中最后一行就是你刚才添加的用户信息
然后编辑/etc/vsftpd/vsftpd.conf文件,
Local_enable=yes 允许使用本地用户来登陆ftp
在/etc/vsftpd.ftpuser中可以增加想要阻止登陆ftp的用户
下面有关linux中ftp的设置项:
限制用户只能在自己的目录中
Chroot_list_enable=yes 文件中的名单可以调用
Chroot_list_file=/etc/vsftpd.chroot_list 前提是chroot_local_user=no,在文件中加入用户名vsftpd.conf的参数
程序代码:Anonymous_enable=yes允许匿名登陆
Dirmessage_enable=yes 切换目录时,显示目录下.message的内容
Local_umask=022 FTP上本地的文件权限,默认是077
Connect_form_port_20=yes 启用FTP数据端口的数据连接
Xferlog_enable=yes 激活上传和下传的日志
Xferlog_std_format=yes 使用标准的日志格式
Ftpd_banner=XXXXX 显示欢迎信息
Pam_service_name=vsftpd 验证方式
Listen=yes独立的VSFTPD服务器
Anon_upload_enable=yes 匿名用户上传权限
Anon_mkdir_write_enable=yes创建目录的同时可以在此目录中上传文件
Write_enable=yes 本地用户写的权限
Anon_other_write_enable=yes匿名帐号可以有删除的权限
Anon_world_readable_only=no匿名用户浏览权限
Ascii_upload_enable=yes 启用上传的ASCII传输方式
Ascii_download_enable=yes 启用下载的ASCII传输方式
Banner_file=/var/vsftpd_banner_file 用户连接后欢迎信息使用的是此文件中的相关信息
Idle_session_timeout=600(秒) 用户会话空闲后10分钟
Data_connection_timeout=120(秒) 将数据连接空闲2分钟断
Accept_timeout=60(秒) 将客户端空闲1分钟后断
Connect_timeout=60(秒)中断1分钟后又重新连接
Local_max_rate=50000(bite)本地用户传输率50K
Anon_max_rate=30000(bite) 匿名用户传输率30K
Pasv_min_port=5000 将客户端的数据连接端口改在
Pasv_max_port=6000 5000—6000之间
Max_clients=200FTP的最大连接数
Max_per_ip=4 每IP的最大连接数
Listen_port=5555 从5555端口进行数据连接
Local_enble=yes本地帐户能够登陆
Write_enable=no 本地帐户登陆后无权删除和修改文件
Chroot_local_user=yes本地所有帐户都只能在自家目录
Chroot_list_enable=yes 文件中的名单可以调用
Chroot_list_file=/etc/vsftpd.chroot_list 前提是chroot_local_user=no
Userlist_enable=yes在指定的文件中的用户不可以访问
Userlist_deny=yes
Userlist_file=/etc/vsftpd.user_list
Banner_fail=/路径/文件名 连接失败时显示文件中的内容
Ls_recurse_enable=no
Async_abor_enable=yes
one_process_model=yes
Listen_address=10.2.2.2 将虚拟服务绑定到某端口
Guest_enable=yes 虚拟用户可以登陆
Guest_username
这个嘛很简单在TCP/IP网络结构中,为了保证网络安全,网络人员往往需要在路由器上添加防火墙,禁止非法用户用FTP等安全危害较大的TCP/IP协议访问主机。而有时系统维护人员需要用ftp将一些文件从中心机房主机传到前端网点主机上,比如应用程序的替换升级。如果每次传输文件时都要打开防火墙,未免显得有些繁琐,要是在自己的应用程序中增加一个专门的文件传输模块,那将是十分愉快的事情。UNIX网络程序设计一般都采用套接字(socket)系统调用。针对目前十分流行的客户/服务器模式,其程序编写步骤如下:1.Socket系统调用为了进行网络I/O,服务器和客户机两端的UNIX进程要做的第一件事是调用socket()系统调用,建立软插座,指明合适的通讯协议。格式为:#include >sys/types.h>#include >sys/socket.h>int socket(int family,int type,int protocol)其中:(1)family指明套节字族,其值包括:AF_UNIX (UNIX内部协议族)AF_INET (Iternet协议)AF_NS (XeroxNs协议,TCP/IP编程取该值)AF_IMPLINK (IMP链接层)(2)type 指明套接字类型,取值有:SOCK_STREAM (流套接字)SOCK_DGRAM (数据报套接字)SOCK_RAW (原始套接字)SOCK_SEQPACKET (定序分组套接字)一般情况下,前两个参数的组合就可以决定所使用的协议,这时第三个参数被置为0,如果第一个参数为AF_INET,第二个参数选SOCK_STREAM,则使用的协议为TCP;第二个参数选SOCK_DGRAM,则使用的协议为UDP;当第二个参数选SOCK_RAW时,使用的协议为IP。值得指出的是并不是所有的族和类型的组合都是合法的,具体请查阅相关资料。该系统调用若成功则返回一个类似文件描述符,成为套节字描述字,可以像文件描述符那样用read和write对其进行I/O *** 作。当一个进程使用完该软插座时,需用close(<描述符>)关闭(具体见后面内容)。2.服务器端Bind系统调用软插座创建时并没有与任何地址相关联,必须用bind()系统调用为其建立地址联系。其格式为:#include <sys/types.h>#include <sys/socket.h>int bind(int socketfd,strUCt sockaddr_in *localaddr,sizeof(localaddr))其中:(1)第一个参数socketfd是前步socket()系统调用返回的套节字描述符。(2)第二个参数被捆向本地地址的一种结构,该结构在sys/netinet/in.h中定义:struct sockaddr_in{ short sin_family/*socket()系统调用的协议族如AF_INET*/ u_short sin_port/*网络字节次序形式的端口号码*/ struct in_addr sin_addr/*网络字节次序形式的网络地址*/ char sin_zero[8]}一台机器上的每个网络程序使用一个各自独立的端口号码,例如:telnet程序使用端口号23,而ftp文件传输程序使用端口号21。我们在设计应用程序时,端口号码可以由getservbyname()函数从/etc/services库文件中获取,也可以由htons (int portnum)函数将任意正整数转换为网络字节次序形式来得到,有些版本的UNIX *** 作系统则规定1024以下的端口号码只可被超级用户使用,普通用户程序使用的端口号码只限于1025到32767之间。网络地址可以由gethostbyname(char*hostname)函数得到(该函数和getservbyname()一样都以网络字节次序形式返回所有在他们结构中的数据),参数hostname为/etc/hosts文件中某一网络地址所对应的机器名。该函数返回一个类型为hostent的结构指针,hostent结构在netdb.h中定义:struct hostent{ char *h_name char **h_aliases int h_addrtype int h_length/*地址长度*/ char **h_addr_list #define h_addr h_addr_list[0]/*地址*/}(3)第三个参数为第二个结构参数的长度,如果调用成功,bind返回0,否则将返回-1并设置errno。3.服务器端系统调用listen,使服务器愿意接受连接格式:int listen(int socketfd,int backlong)它通常在socket和bind调用后在accept调用前执行。第二个参数指明在等待服务器执行accept调用时系统可以排队多少个连接要求。此参数常指定为5,也是目前允许的最大值。4.服务器调用accept,以等待客户机调用connect进行连接。格式如下:int newsocket=(int socketfd,struct sockaddr_in *peer,int*addrlen)该调用取得队列上的第一个连接请求并建立一个具有与sockfd相同特性的套节字。如果没有等待的连接请求,此调用阻塞调用者直到一连接请求到达。连接成功后,该调用将用对端的地址结构和地址长度填充参数peer和addlen,如果对客户端的地址信息不感兴趣,这两个参数用0代替。5.客户端调用connect()与服务器建立连接。格式为:connect(int socketfd,struct sockaddr_in *servsddr,int addrlen)客户端取得套接字描述符后,用该调用建立与服务器的连接,参数socketfd为socket()系统调用返回的套节字描述符,第二和第三个参数是指向目的地址的结构及以字节计量的目的地址的长度(这里目的地址应为服务器地址)。调用成功返回0,否则将返回-1并设置errno。6.通过软插座发送数据一旦建立连接,就可以用系统调用read和write像普通文件那样向网络上发送和接受数据。Read接受三个参数:一个是套节字描述符;一个为数据将被填入的缓冲区,还有一个整数指明要读的字节数,它返回实际读入的字节数,出错时返回-1,遇到文件尾则返回0。Write也接受三个参数:一个是套节字描述符;一个为指向需要发送数据的缓冲区,还有一个整数指明要写入文件的字节个数,它返回实际写入的字节数,出错时返回-1。当然,也可以调用send和recv来对套节字进行读写,其调用与基本的read和write系统调用相似,只是多了一个发送方式参数。7.退出程序时,应按正常方式关闭套节字。格式如下:int close(socketfd)前面介绍了UNIX客户/服务器模式网络编程的基本思路和步骤。值得指出的是socket编程所涉及的系统调用不属于基本系统调用范围,其函数原形在libsocket.a文件中,因此,在用cc命令对原程序进行编译时需要带-lsocket选项。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)