当前位置:文档之家› 基于linux的小型远程FTP服务系统说明书

基于linux的小型远程FTP服务系统说明书

基于linux的小型远程FTP服务系统说明书
基于linux的小型远程FTP服务系统说明书

中北大学软件学院

实训说明书

实训名称: 操作系统课程设计

题目名称:基于linux的小型远程FTP服务系统

班级: 12210A04

小组成员

学号:1221011111 姓名:宋竹成绩:

学号:1221011142 姓名:李童成绩:

学号:1221011037 姓名:万高超成绩:

学号:1221011221 姓名:李程成绩:

指导教师:康珺

2015 年 1 月

目录

1 引言 (2)

2 需求分析 (2)

3 概要设计 (2)

4 详细设计 (3)

4.1 设计要求 (3)

4.2 设计内容 (3)

4.3 功能介绍 (4)

5核心代码 (4)

6 终端的运行界面 (26)

7 心得体会 (28)

引言

客户/服务器计算模型是一种基于局域网或广域网的地分布式系统,提供数据和服务的计算机称为服务器,向服务器提出数据请求和服务请求的计算机称为客户,这样的模型就是客户/服务器计算模型.该模型的思想是:把操作系统看作是一组协议进程,用户称作客户,写作进程为服务器,客户和服务器通常运行相同的网络操作系统,一台计算机可运行一个客户进程,运行多个客户进程,也可多个服务器进程或是两者的结合.

1. 需求分析

进程,线程及其通信是内个操作系统的主要功能之一,也是学习现代操作系统的关键。通过本次课程设计,要求掌握对进程、线程、进程互斥、同步、通信及网络编程的方法。

2.概要设计

本软件包含客户端和服务端两部分,在客户端部分包括用户与密码的验证,还有创建目录,删除目录,查看当前目录下的所有文件等功能。在服务端的操作有mkdir,rmdir,cd,ls等。还有文件的上传和下载。

3.详细设计

3.1设计要求:

1、掌握对进程、线程、进程互斥、同步、通信、文件系统及网络编程的方法。

2、掌握基于C/S的计算模型,掌握支持并发用户访问的分布式软件系统的设计方法。

3.2 设计内容:

1、该系统要求有服务器端软件和客户端软件两部分组成,服务器端在指定端口接受客

户连接请求,根据客户要求执行相应处理,客户端提供系统的交互界面

2、基于套接字得客户/服务器通信模式

3、远程登录功能

要求集成linux系统的客户管理功能,对客户信息予以验证,客户发送连接请求时,提供FTP服务器软件在linux主机上的客户名及密码,请求命令格式如下:

Ftps://客户名:密码@FTP服务器IP:port

4、并发执行及管理功能

采用多线程,客户通过身份请求后创建一个新线程来响应客户请求。

5、活动客户计数功能

统计当前的活动客户数,通过身份验证+1,断开连接-1

6、文件管理功能

●服务器端的文件基本操作包括:mkdir、rmdir、cd、ls

●客户端执行的基本操作包括:创建及删除目录、切换目录、查看当前目录下的所有

文件

●设定文件传输模式:文本模式和二进制

●文件传输:upload/download到指定目录。

3.3功能介绍

4.核心代码:

Myftp.c

//mkdir

void mkdir_srv(char *usr_cmd)

{

char *cmd = strchr(usr_cmd,' ');

char path[1024];

if(cmd == NULL)

{

printf("*****ERROR: mkdir command error*****\n");

return;

else

{

while(*cmd == ' ')

cmd ++;

}

if(cmd == NULL||cmd == '\0')

{

printf("*****ERROR: mkdir command error*****\n");

return;

}

else

{

strncpy(path,cmd,strlen(cmd));

path[strlen(cmd)]='\0';

ftp_send_cmd("MKD",path,sock_control);

ftp_get_reply(sock_control);

}

}

//rmdir

void rmdir_srv(char *usr_cmd)

{

char *cmd = strchr(usr_cmd,' ');

char path[1024];

if(cmd == NULL)

{

printf("*****ERROR: rmdir command error*****\n");

return;

}

else

while(*cmd == ' ')

cmd++;

}

if(cmd == NULL||cmd == '\0')

{

printf("*****ERROR: rmdir command error*****\n");

return;

}

else

{

strncpy(path,cmd,strlen(cmd));

path[strlen(cmd)]='\0';

ftp_send_cmd("RMD",path,sock_control);

ftp_get_reply(sock_control);

}

}

//cd

void ftp_cd(char * usr_cmd)

{

char *cmd = strchr(usr_cmd, ' ');

char path[1024];

if(cmd == NULL)

{

printf("*****ERROR: cd command error*****\n");

return;

}

else

{

while(*cmd == ' ')

cmd ++;

}

if(cmd == NULL || cmd == '\0')

{

printf("*****ERROR: cd command error*****\n");

return;

}

else

{

strncpy(path, cmd, strlen(cmd));

path[strlen(cmd)]='\0';

ftp_send_cmd("CWD ", path, sock_control);

ftp_get_reply(sock_control);

}

}

//ls

void ftp_list()

{

int i = 0,new_sock;

int set = sizeof(local_host);

int list_sock_data = uconnect_ftpdata();

if(list_sock_data < 0)

{

ftp_get_reply(sock_control);

printf("creat data sock error!\n");

return;

}

ftp_get_reply(sock_control);

ftp_send_cmd("LIST", NULL, sock_control);

ftp_get_reply(sock_control);

if(ftp_mode)//PASV

ftp_get_reply(list_sock_data);

else

{

while(i < 3)

{

new_sock = accept(list_sock_data, (struct sockaddr *)&local_host, (socklen_t *)&set);

if(new_sock == -1)

{

printf("accept return:%s errno: %d\n", strerror(errno),errno);

i++;

continue;

}

else break;

}

if(new_sock == -1)

{

printf("Sorry, you can't use PORT mode. There is something wrong when the server connect to you.\n");

return;

}

ftp_get_reply(new_sock);

close(new_sock);

}

close(list_sock_data);

ftp_get_reply(sock_control);

}

//客户端当前目录下的文件显示以及退回上一目录,然后重新进入下一目录打开相应文件夹中的文件

Myftp.c

//cd

void ftp_cd(char * usr_cmd)

{

char *cmd = strchr(usr_cmd, ' ');

char path[1024];

if(cmd == NULL)

{

printf("*****ERROR: cd command error*****\n");

return;

}

else

{

while(*cmd == ' ')

cmd ++;

}

if(cmd == NULL || cmd == '\0')

{

printf("*****ERROR: cd command error*****\n");

return;

}

else

{

strncpy(path, cmd, strlen(cmd));

path[strlen(cmd)]='\0';

ftp_send_cmd("CWD ", path, sock_control);

ftp_get_reply(sock_control);

}

}

//ls

void ftp_list()

{

int i = 0,new_sock;

int set = sizeof(local_host);

int list_sock_data = uconnect_ftpdata();

if(list_sock_data < 0)

{

ftp_get_reply(sock_control);

printf("creat data sock error!\n");

return;

}

ftp_get_reply(sock_control);

ftp_send_cmd("LIST", NULL, sock_control);

ftp_get_reply(sock_control);

if(ftp_mode)//PASV

ftp_get_reply(list_sock_data);

else

{

while(i < 3)

{

new_sock = accept(list_sock_data, (struct sockaddr *)&local_host, (socklen_t *)&set);

if(new_sock == -1)

{

printf("accept return:%s errno: %d\n", strerror(errno),errno);

i++;

continue;

}

else break;

}

if(new_sock == -1)

{

printf("Sorry, you can't use PORT mode. There is something wrong when the server connect to you.\n");

return;

}

ftp_get_reply(new_sock);

close(new_sock);

}

close(list_sock_data);

ftp_get_reply(sock_control);

}

Ftpserver.c

int main(int argc,char *argv[])

{

//pid_t child_pid;

pthread_t thread,srv_thread;

struct ARG arg;

struct sockaddr_in server;

if((ftp_server_sock=socket(AF_INET,SOCK_STREAM,0))==-1)

{

perror("Createing socket failed");

exit(1);

}

int opt=SO_REUSEADDR;

setsockopt(ftp_server_sock,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));

bzero(&server,sizeof(server));

server.sin_family=AF_INET;

server.sin_port=htons(FTP_SERVER_PORT);

server.sin_addr.s_addr=htonl(INADDR_ANY);

if(bind(ftp_server_sock,(struct sockaddr *)&server,sizeof(struct sockaddr))==-1)

{

perror("Bind error");

exit(1);

}

if(listen(ftp_server_sock,LISTEN_QENU)==-1)

{

perror("listen error");

exit(1);

}

int ftp_client_sock;

struct sockaddr_in client;

int sin_size=sizeof(struct sockaddr_in);

if(pthread_create(&srv_thread,NULL,Handle_Server_Cmd,(void*)&arg)) printf("thread create error!\n");

while(1)

{

printf("ftp_server> ");

if((ftp_client_sock=accept(ftp_server_sock,(struct sockaddr *)&client,&sin_size))==-1)

{

perror("accept error!\n");

exit(1);

}

arg.client_sock=ftp_client_sock;

memcpy((void*)&arg.client,&client,sizeof(client));

if(pthread_create(&thread,NULL,Handle_Client_Request,(void*)&arg))

{

perror("thread create error!\n");

exit(1);

}

}

close(ftp_server_sock);

}

FTP.h

char clientCommand[COMMAND_NUM][20]={{"pwd"},

{"quit"},{'?'},{"ls"},{"cd"},{"get"},{"put"}};

char serverInfo220[]="220 myFTP Server ready...\r\n";

char serverInfo230[]="230 User logged in, proceed.\r\n";

char serverInfo331[]="331 User name okay, need password.\r\n";

char serverInfo221[]="221 Goodbye!\r\n";

char serverInfo150[]="150 File status okay; about to open data connection.\r\n"; char serverInfo226[]="226 Closing data connection.\r\n";

char serverInfo200[]="200 Command okay.\r\n";

char serverInfo215[]="215 Unix Type FC5.\r\n";

char serverInfo213[]="213 File status.\r\n";

char serverInfo211[]="211 System status, or system help reply.\r\n";

char serverInfo350[]="350 Requested file action pending further information.\r\n"; char serverInfo530[]="530 Not logged in.\r\n";

char serverInfo531[]="531 Not root client. Anonymous client.\r\n";

char serverInfo[]="202 Command not implemented, superfluous at this site.\r\n";

//连接服务器功能

函数get_user()和get_pass()得到用户输入的用户名和密码。ftp_login()函数用输入字符与缺省用户名密码、匿名用户密码相比较,如果一致则登陆成功,否则失败

void get_user()//得到输入用户名

{

char read_buf[64];

printf("User(Press for anonymous): ");

fgets(read_buf, sizeof(read_buf), stdin);

if(read_buf[0]=='\n')

strncpy(user, "anonymous", 9);

else

strncpy(user, read_buf, strlen(read_buf)-1);

}

void get_pass()//得到输入密码

{

char read_buf[64];

printf("Password(Press for anonymous): ");

echo_off();//隐藏密码

fgets(read_buf, sizeof(read_buf), stdin);

if(read_buf[0]=='\n')

strncpy(passwd, "anonymous", 9);

else

strncpy(passwd, read_buf, strlen(read_buf)-1);

echo_on();//取消隐藏

printf("\n");

}

int ftp_login()//登陆函数

{

int err;

get_user();

if(ftp_send_cmd("USER ", user, sock_control) < 0)

cmd_err_exit("Can not send message",1);;

err = ftp_get_reply(sock_control);//得到服务器返回

if(err == 331)

{

get_pass();

if(ftp_send_cmd("PASS ", passwd, sock_control) <= 0) cmd_err_exit("Can not send message",1);

else

err = ftp_get_reply(sock_control);

if(err == 230)//缺省用户

{

return 1;

}

else if(err == 531)//匿名用户

{

return 2;

}

else

{

printf("Password error!\n");

return 0;

}

}

else

{

printf("User error!\n");

return 0;

}

}

//函数int xconnect(struct sockaddr_in *s_addr, int type)连接到服务器

int xconnect(struct sockaddr_in *s_addr, int type)

{

struct timeval outtime;

int set;

int s = socket(AF_INET, SOCK_STREAM, 0);

if(s < 0)

cmd_err_exit("creat socket error!", 249);

set = setsockopt(s, SOL_SOCKET,SO_RCVTIMEO, &outtime,sizeof(outtime));

if(set !=0)

{

printf("set socket %s errno:%d\n",strerror(errno),errno);

cmd_err_exit("set socket", 1);

}

//connect to the server

if (connect(s,(struct sockaddr *)s_addr,sizeof(struct sockaddr_in)) < 0)

{

printf("Can't connect to server %s, port %d\n",\

inet_ntoa(s_addr->sin_addr),ntohs(ftp_server.sin_port));

exit(252);

}

return s;

}

fgets(read_buf, sizeof(read_buf), stdin);

//得到用户名和密码的关键函数,读入数据

int s = socket(AF_INET, SOCK_STREAM, 0);

if(s < 0)

cmd_err_exit("creat socket error!", 249);

//创建套接字,如创建成功,socket函数返回非负值

//connect to the server

if (connect(s,(struct sockaddr *)s_addr,sizeof(struct sockaddr_in)) < 0)

{

printf("Can't connect to server %s, port %d\n",\

inet_ntoa(s_addr->sin_addr),ntohs(ftp_server.sin_port));

exit(252);

}

//连接到服务器,如果连接成功,connect函数返回0,如果不成功,返回-1 int ftp_send_cmd(const char *s1, const char *s2, int sock_fd)

//向服务器发送客户端的命令的函数。

int ftp_send_cmd(const char *s1, const char *s2, int sock_fd)

{

char send_buf[256];

int send_err, len;

if(s1)

{

strcpy(send_buf,s1);

if(s2)

{

strcat(send_buf, s2);

strcat(send_buf,"\r\n");

len = strlen(send_buf);

send_err = send(sock_fd, send_buf, len, 0);

}

else

{

strcat(send_buf,"\r\n");

len = strlen(send_buf);

send_err = send(sock_fd, send_buf, len, 0);

}

}

if(send_err < 0)

printf("send() error!\n");

return send_err;

}

//接收服务器返回信息函数

//get the server's reply message from sock_fd

int ftp_get_reply(int sock_fd)

{

static int reply_code = 0,count=0;

char rcv_buf[512];

count=read(sock_fd, rcv_buf, 510);

if(count > 0)

reply_code = atoi(rcv_buf);

else

return 0;

while(1)

{

if(count <= 0)

break;

rcv_buf[count]='\0';

printf("%s",rcv_buf);

count=read(sock_fd, rcv_buf, 510);

}

return reply_code;

}

send_err = send(sock_fd, send_buf, len, 0);

//send函数发送成功返回字节数大于0,小于0则出错。

int xconnect_ftpdata()

//连接服务器数据流函数。

get_sock = socket(AF_INET, SOCK_STREAM, 0);

set = setsockopt(get_sock, SOL_SOCKET,SO_RCVTIMEO, \

&outtime,sizeof(outtime));

set = setsockopt(get_sock, SOL_SOCKET,SO_REUSEADDR, \

&opt,sizeof(opt));

//新建套接字传输数据流。

set = bind(get_sock, (struct sockaddr *)&local_host, \

sizeof(local_host));

if(set != 0 && errno == 11)

{

client_port = rand_local_port();

continue;

}

set = listen(get_sock, 1);

//

用bind、listen函数开启数据流传输。

进行客户端操作关键函数

void open_ftpsrv()//客户端操作函数

{

char usr_cmd[1024];

int cmd_flag;

while(1)

{

printf("ftp_cli>");

fgets(usr_cmd,510,stdin);

fflush(stdin);

if(usr_cmd[0] == '\n')

continue;

usr_cmd[strlen(usr_cmd)-1] = '\0';

cmd_flag = ftp_usr_cmd(usr_cmd);

if(cmd_flag == 15)

{

char *cmd = strchr(usr_cmd,' ');

char dress_ftp[1024];

if(cmd == NULL)

{

printf("command error!\n");

show_help();

return;

}

else

{

while(*cmd == ' ')

cmd++;

}

if(cmd == NULL||cmd == '\0')

{

printf("command error!\n");

return;

}

else

{

char * dr = "127.0.0.1";

strncpy(dress_ftp,cmd,strlen(cmd));

dress_ftp[strlen(cmd)] = '\0';

printf("%s",dress_ftp);

if(dress_ftp == "127.0.0.1")

{

printf("Connect Seccessed!\n");

start_ftp_cmd(dr,DEFAULT_FTP_PORT); //open成功则调用该函数,该函数与open_ftpsrv()很相似。

}

else

{

printf("Inviable Server Dress!\n");

}

}

}

else

//如果open不成功,则只能进行客户端上的操作,不能进行有关服务器操作{

switch(cmd_flag)

{

case 11:

local_list();

memset(usr_cmd,'\0',sizeof(usr_cmd));

break;

case 12:

local_pwd();

memset(usr_cmd,'\0',sizeof(usr_cmd));

break;

case 13:

local_cd(usr_cmd);

memset(usr_cmd,'\0',sizeof(usr_cmd));

break;

case 6://quit

printf("BYE TO WEILIQI FTP!\n");

exit(0);

break;

default:

printf("command error!\n");

show_help();

memset(usr_cmd,'\0',sizeof(usr_cmd));

break;

}

}

}

}

//上传文件

void ftp_put(char * usr_cmd)

{

char src_file[512];

Linux下VsFTP配置全方案

Linux下VsFTP配置全方案 纲要: 一,VsFTPd的简述 二,企业Linux下vsFTPD方案 三,VsFTPD相关配置文件详解 一,VsFTPd的简述: VSFTP(Very Secure FTP Daemon,非常安全的FTP服务器)。顾名思义,VSFTPD 设计的出发点就是安全性。同时随着版本的不断升级,VSFTPD在性能和稳定性上也取得了极大的进展。除了安全和性能方面很优秀的外,还有很好的易用性。Red Hat公司在自己的FTP服务器(https://www.doczj.com/doc/886019590.html,)上就使用了vsFTPd 二,企业Linux下vsFTPD实战方案 要求: 1. 用户:netseek_com;FTP:https://www.doczj.com/doc/886019590.html,(19 2.168.0.21,我已经配置好了相关的DNS) 2. 禁止匿名登陆,禁止用户离开用户目录 3. 命令通道端口使用5021,数据通道端口使用5020(你可以改成你想设置的端口如1021,1020) 4. 允许使用被动模式使用端口范围为10010~10020. 5. 用户带宽设置为200kps;用户空间大小限制为300M,允许宽限期限内有10MB 的缓冲 具体操作步骤如下: 为了更完全的描述安装全过程,我在我的另一台主机(netseek)上进行配置,在台机IP:192.168.0.20上绑定了192.168.0.21,也配置好了相关的DNS解析,在这里我就不多说了请参照”Linux全能web服务器架设”。 1.配置相关服务 启动服务: [root@netseek root]# #rpm –qa | grep vsftpd ;查看是否安装vsftpd服务 #/etc/init.d/vsftpd start ;启动服务 #chkconfig vsftpd on ;让系统服务随着系统启动而启动 配置相关文档: #vi /etc/vsftpd/vsftpd.conf 禁止匿名用户访问: anonymous_enable=YES,将YES改为NO 在文件末尾加如下的设置: # new added by netseek listen_port=5021 ;命令通道端口,默认为21 listen_data_port=5020 ;数据通道端口,默认为20 pasv_enable=YES ;允许被动模式 pasv_min_port=10000 ;被动模式使用端口范围 pasv_max_port=10010 local_max_rate=200000 ;用户宽带限制 chroot_local_user=YES ;禁用户离开主目录

Linux全攻略--FTP服务器配置与管理

Linux全攻略--FTP服务器配置与管理 版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。 FTP的全称是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.它工作在OS I模型的第七层,即是应用层,使用TCP传输而不是UDP.这样FTP客户端和服务器建立连接前就要经过一个"三次握手"的过程.FTP服务还有一个非常重要的特点是它可以独立于平台. LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterpri se Linux中默认安装的是vsftpd. 通常,访问FTP服务器时需要经过验证,只有经过了FTP服务器的相关验证,用户才能访问和传输文件. vsftpd提供了3种ftp登录形式: (1)anonymous(匿名帐号) 使用anonymous是应用广泛的一种FTP服务器.如果用户在FTP服务器上没有帐号,那么用户可以以a nonymous为用户名,以自己的电子邮件地址为密码进行登录.当匿名用户登录FTP服务器后,其登录目录为匿名FTP服务器的根目录/var/ftp.为了减轻FTP服务器的负载,一般情况下,应关闭匿名帐号的上传功能. (2)real(真实帐号) real也称为本地帐号,就是以真实的用户名和密码进行登录,但前提条件是用户在FTP服务器上拥有自己的帐号.用真实帐号登录后,其登录的目录为用户自己的目录,该目录在系统建立帐号时系统就自动创建. (3)guest(虚拟帐号) 如果用户在FTP服务器上拥有帐号,但此帐号只能用于文件传输服务,那么该帐号就是guest,guest是真实帐号的一种形式,它们的不同之处在于,geust登录FTP服务器后,不能访问除宿主目录以外的内容. 下面就对其详细介绍. 一.安装与启动vsftpd 先使用命令查看是否安装. 可看到安装了版本为2.0.1.如果没有安装可在桌面上选择"应用程序"/"系统设置"添加/删除应用程序"命令.来安装FTP软件包. 安装和配置好vsftpd软件包后,需要启动FTP服务器才能使用.启动方法有以下两种: 1.使用图形化方式启动,选择"应用程序"/系统设置/服务器设置/服务.可看到vsftpd,打上勾,开始启动. 2.在终端窗口用命令进行启动.

Linux搭建FTP服务器(虚拟用户配置文件)

Linux搭建FTP服务器(虚拟用户配置文件) 先行关闭防火墙,或者打开端口 1、建立虚拟用户口令库文件 口令库文件中奇数行设置用户名,偶数行设置口令 # vi /etc/vsftpd/logins.tx t zhangwenbo -用户名 123 --密码 test --用户名 123 --密码 ftp 123 2、生成vsftpd的认证文件 # db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db 注:如果没有db_load命令,请安装db4*相关rpm包。 # chmod 600 /etc/vsftpd/vsftpd_login.db --设置认证文件只对用户可读可写 3、建立虚拟用户所需的PAM配置文件 # vi /etc/pam.d/vsftpd 添加一下内容 auth required /lib(32位的)/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account required /lib(32位的)/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login 注意:以上2行中最后的2个文件名vsftpd_login和第2个步骤中的数据库名字必须一致! 4、建立虚拟用户所要访问的目录并设置相应权限 # mkdir /var/ftp/pub/FTP--创建FTP工作目录 # useradd -d /var/ftp/pub/FTP -s /sbin/nolog virtual (用户名) --用于映射到本地的用户 # chown virtual:virtual/var/ftp/pub/FTP --FTP文件夹所属virtual用户 # chmod 700 /var/ftp/pub/FTP --权限可读可写 5、设置vi /etc/vsftpd/vsftpd.conf 配置文件 首先关闭匿名用户anonymous_enable=YE改为NO 或者在前边加#,在末尾添加:

linux下FTP服务器安装配置(VSftp)

环境: RedHat AS4 说明: 如果不做说明,一般安装命令均使用ROOT权限,用 # 表示 特别说明:无 以下文章介绍Liunx 环境下vsftpd的三种实现方法 一、前言 Vsftp(Very Secure FTP)是一种在Unix/Linux中非常安全且快速稳定的 FTP服务器,目前已经被许多大型站点所采用 Vsftpd的实现有三种方式 1、匿名用户形式:在默认安装的情况下,系统只提供匿名用户访问 2、本地用户形式:以/etc/passwd中的用户名为认证方式 3、虚拟用户形式:支持将用户名和口令保存在数据库文件或数据库服 务器中。相对于FTP的本地用户形式来说,虚拟用户只是FTP服务器 的专有用户,虚拟用户只能访问FTP服务器所提供的资源,这大大增 强系统本身的安全性。相对于匿名用户而言,虚拟用户需要用户名和密 码才能获取FTP服务器中的文件,增加了对用户和下载的可管理性。 对于需要提供下载服务,但又不希望所有人都可以匿名下载;既需要对 下载用户进行管理,又考虑到主机安全和管理方便的FTP站点来说, 虚拟用户是一种极好的解决方案。

默认情况下vsftp上传之后文件的权限是600,目录权限是700 想要修改上传之后文件的权限,有两种情况 如果使用vsftp的是本地用户 则要修改配置文件中的 local_umask的值 如果使用vsftp的是虚拟用户 则要修改配置文件中的 anon_umask的值 二、vsftp配置大全-三种方式的实现 1、匿名用户形式: 任务实现匿名用户上传,下载,删除,重命名,新建目录,删除目录,重命名目录; 第一步:在/var/ftp/下,新建一个目录share; chmod –R 777 /var/ftp/share/ chown –R nobody:nobody /var/ftp/share/ 第二步:更改/etc/vsftpd/vsftpd.conf anonymous_enable=YES local_enable=YES

linux中ftp服务器搭建步骤详解

linux中ftp服务器搭建步骤详解 ftp匿名用户登录目录是/var/ftp ftp实名用户登录目录为它的宿主目录 实验1 [root@localhost ~]#system-config-packages (进入系统程序安装界面)勾选“ftp server”,进行安装。 [root@localhost ~]#service vsftpd start 启动 匿名用户登录ftp 结论:登录成功!! 实名用户登录ftp cd /etc 下载passwd 结论不安全 解决方案: [root@localhost ~]# vi /etc/vsftpd/vsftpd.conf chroot_local_user=YES (加入这行) [root@localhost ~]# service vsftpd restart ----------------------------------------------------------------------------------

试验2 只允许匿名登录,不允许实名 [root@localhost ~]#vi /etc/vsftpd/vsftpd.conf anonymous_enable=YES (修改) local_enable=NO (修改) [root@localhost ~]# service vsftpd restart ----------------------------------------------------------------------------------- 试验3 不允许匿名用户登录 [root@localhost ~]#vi /etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=YES [root@localhost ~]# service vsftpd restart ----------------------------------------------------------------------------------- 试验4 访问限制 A 黑名单1 [root@localhost ~]# vi /etc/vsftpd.ftpusers 添加a 用户,则a用户无法访问此FTP [root@localhost ~]# service vsftpd restart B 黑名单2 1000个用户,999个不能访问,只有一个可以访问怎么办? [root@localhost ~]# vi /etc/vsftpd/vsftpd.conf userlist_enable=YES userlist_deny=NO userlist_file=/etc/https://www.doczj.com/doc/886019590.html,er_list [root@localhost ~]# vi /etc/https://www.doczj.com/doc/886019590.html,er_list (文件中用户能访问,其他用户不可访问(包括ftp匿名用户))将允许的用户名添加上 [root@localhost ~]# service vsftpd restart ------------------------------------------------------------------------------------ 试验5 限制客户数 [root@localhost ~]# vi /etc/vsftpd/vsftpd.conf max_clients=2 0为不限制 [root@localhost ~]# service vsftpd restart ------------------------------------------------------------------------------------- 试验6 速率限制----ftp网站收费如何解决

LINUX下配置FTP服务器实例详解

摘要:本文通过在red hat 9.0中配置匿名用户和虚拟用户访问的ftp服务器,向读者详尽地诠释了linux下ftp服务器配置的全部流程以及配置过程中要注意的一些问题。 关键词:匿名用户虚拟用户权限 vsftpd pam认证 1 概述 linux下可用的ftp服务器软件比较多,vsftpd安全易用,很多著名的站点都在使用vsftpd作为其ftp服务器。本文以vsftpd为例,对基于linux的ftp服务器配置问题进行研究。 2 安装vsftpd服务组件 vsftpd所需组件包括:vsftpd*、pam*、db4*、db4-utils,可以使用rpm命令查看:【root @dns root】#rpm-qa | grep vsftpd vsftpd-1.1.3-8 【root @dns root】#rpm-qa | grep pam pam-0.75-48 pam_krb5-1.60-1 pam-smb-1.1.6-7 pam-devel-0.75-48 【root @dns root】#rpm-qa | grep db4 db4-4.0.14-20 db4-utils-4.0.14-20 db4-java-4.0.14-20 db4-devel-4.0.14-20 【root @dns root】# 以上便是配置ftp服务器所需所有组件,若发现个别没有装,则要在光盘中查找到装好。 3 创建并设置ftp站点的主目录 我们的vsftpd组件安装好后,系统自动会生成一个目录,/var/ftp/pub,这个是linux 系统中ftp站点的默认主目录,这里我们不用这个目录,我们自己为匿名用户和虚拟用户分别创建两个主目录如下: 【root @dns root】# mkdir /var/ftp/share 【root @dns root】#mkdir /var/ftp/soft 其中share作为匿名用户的主目录,只能读不能写,此处该目录文件夹我们为其设置权限为755,而soft目录作为虚拟用户访问的主目录,读写删除权限都要,我们为其设置权限777如下: 【root @dns root】#chmod 755 /var/ftp/share 【root @dns root】#chmod 777 /var/ftp/soft 4 创建虚拟用户 虚拟用户只能访问为其提供的ftp服务,不能像本地用户那样登录系统而访问系统的其他资源,因此我们一般架设ftp时都会使用虚拟用户而不是本地用户来访问服务器以确保整个服务器系统的安全。 4.1 建立虚拟用户数据库 使用vi命令建立一个文本文件vusers.txt,使用编辑命令编辑本文件,输入内容如下:【root @dns root】#vi /etc/vsftpd/vusers.txt mark 123

linux下配置FTP服务器步骤

linux下配置FTP服务器步骤 来源:作者:发布时间:2007-08-07 ?(阅读次数:108)? 查看更多关于:配置linux FTP服务器的文章 前言: 在众多的网络应用中,FTP(File Transfer porotocol)有着非常重要的地位。在Internet中一个十分重要的资源就是软件资源。而各种各样的软件资源大多数都是放在FTP服务器中的。可以说,FTP与WEB 服务几乎占据了整个Internet应用的80%以上。 FTP服务可以根据服务对象的不同分为两类:一类是系统FTP服务器,它只允许系统上的合法用户使用;另一类是匿名FTP服务器,Anonymous FTP Server,它使用任何人都可以登录到FTP服务器上去获取文件。 一、选择和安装FTP服务器软件 如果你在安装LINUX系统的时候,在选择启动进程的时候选择了“ftpd”这一项的话,安装完LINUX 系统后,它已经将一个默认的FTP服务器安装到系统中去了。我们已经可以利用它来实现系统FTP服务器的功能了。我们只需在此基础上根据我们的需要进行一些个性化设定就可以了。 在绝大多数的LINUX发行版本中都选用的是WashingtonUniversity FTP,它是一个着名的FTP服务器软件,一般简称为wu-ftp。它功能强大,能够很好地运行于众多的UNIX操作系统,例如:IBM AIX、FreeBSD、HP-UX、NeXTstep、Dynix、SunOS、Solaris等。所以Internet上的FTP服务器,一大半以上采用了它。wu-ftp拥有许多强大的功能,很适于吞吐量较大的FTP服务器的管理要求: bitsCN全力打造网管学习平台 1)可以在用户下载文件的同时对文件做自动的压缩或解压缩操作; 2)可以对不同网络上的机器做不同的存取限制; 3)可以记录文件上载和下载时间; 4)可以显示传输时的相关信息,方便用户及时了解目前的传输动态; 5)可以设置最大连接数,提高了效率,有效地控制了负载。 二、wu-ftp的组成 安装了wu-ftp后,你将在/bin目录下看到以下五个可执行文件: ftpd FTP服务器程序 ftpshut 用于关闭FTP服务器程序 ftpcount 显示目前在线人数 ftpwho 查看目前FTP服务器的连接情况 ckconfig 检查FTP服务器的设置是否正确 除了这些可执行文件以外,它还在/etc和/var目录下生成了七个配置文件:

linux ftp服务器的配置及各种知识点,本人亲自总结

ftp服务器的安装与配置 一。项目概要: 校园网提供了比较多的网络应用服务,如:办公系统,教学资源系统,教学管理系统,越来越多的老师和同学开始使用校园网提供的服务,他们希望校园网提供一些常用软件的下载服务,同时教师们也希望把一些教学资料放到服务器上,以便教师间交流,学生在课后能下载学习。 随着学习精品课程建设工作的推进,不少教师建设了课程网站,把教学资料放到网站上。还有一些教师建设了个人网站,以展示自己的科研成果。为了让这些网站真正发挥作用,需要提供一个统一的平台用于放置这些网站,供学生访问。 ========================================================= 二。ftp协议 文件传输协议(File Transfer Protocol)定义了一个在远程计算机系统和本地计算机系统之间传输文件的标准。ftp运行在OSI参考模型的应用层,利用传输控制协议TCP在不同的主机之间提供可靠的数据传输。 FTP服务是internet最早应用于主机之间进行数据传输的基本服务之一。它的特点:(1)ftp协议简化了文件传输的复杂性,弄够独立于平台,不受计算机和操作系统类型的限制。无论是PC、服务器,还是Windows、linux、unix操作系统,都可以作为ftp客户端和服务器。 (2)ftp实现了可靠的数据传输。ftp是运行在TCP上的,这就保证了数据传输的正确性,并在发生错误的情况下修正。 (3)支持端点续传功能,极大方便用户并减少CPU和网络开销。 FTP有两种常用的操作: 从ftp服务器上复制文件到本地计算机,成为“下载(download)”,若将文件从本机复制到服务器上,称为“上传(upload)” ========================================================= 三。FTP的传输模式 有两种: (1)主动模式(PORT模式)。主动模式的ftp客户端发送PORT命令到ftp服务器。 (2)被动模式(PASV模式)。 主动模式:ftp客户端随机开启一个大于1024的端口N向ftp服务器的TCP 21端口发起连接,通过这个通道发送PORT命令,port命令包含了客户端用于接受数据的端口N+1.在传输数据时,服务器通过TCP 20端口连接至客户端的N+1端口发送数据。在此模式下,数据传输通道是由服务器主动建立起来的。 被动模式:在建立控制通道的时候,ftp客户端随机开启一个大于1024的端口N向ftp 服务器的TCP 21端口放弃连接,但建立连接后发送的是PASV命令。ftp服务器收到PASV 命令后,随机打开一个高端端口(端口号大于1024)并通过port命令通知客户端在在这个端口上有传送数据的请求。客户端连接ftp服务器此端口,然后ftp服务器通过这个端口进行数据传送。 ========================================================= 四。FTP的用户 根据ftp服务器服务的对象不同,可以将ftp服务的使用者分为3类: 本地用户,虚拟用户和个人用户。 如果用户拥有提供ftp服务的服务器上的本地账号,则为本地用户。 本地用户可以通过自己的账号和口令登陆服务器。当授权访问的本地用户登陆系统后,其登

在Linux建立FTP服务器

在Linux建立FTP服务器方法步骤 实现了Apache多用户的虚拟主机配置,那么一般这些用户都会选择用ftp上传的方式来管理自己的web内容,这就需要我们再为他们开设FTP服务。 Ubuntu自带的FTP服务器是vsftpd。 1、安装vsftpd Ubuntu安装软件倒不是件困难的事,输入: sudo apt-get install vsftpd 假如没换源可能会提示您使用光盘,放进去再按回车就行了。 我用CN99的源,速度是300K每秒,够快吧. 安装了之后会在/home/下建立一个ftp目录。这时候您能够试着访问下ftp://IP地址。应该能够看到一个空白内容的ftp空间。 默认配置下匿名用户能够下载,但不能写入或是上传 2、配置 vsftpd.conf文档 现在我们要让匿名用户无法访问,并且得输入linux上的用户密码后才能访问到他们自己目录里的内容。 首先找到配置vsftpd的文档,位置在/etc/vsftpd.conf 修改之前最好先备份下这个文档: sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.old 然后能够改变了: #不让匿名用户使用 #anonymous_enable=YES #本地用户可用 local_enable=YES #可用写操作 write_enable=YES #无需显示某目录下文档信息 #dirmessage_enable=YES #加点banner提示 ftpd_banner=Hello~~ #FTP服务器最大承载用户 max_clients=100 #限制每个IP的进程 max_per_ip=5 #最大传输速率(b/s) local_max_rate=256000 #隐藏帐号 hide_ids=YES 好了,重启下ftp 服务器看看效果

详细版Linux下ftp安装及使用.docx.docx

1、查询是否安装vsftpd: rpm -qa |grep vsftpd 或者查询当前ftp进程:ps -ef|grep vsftpd 已安装显示 未安装显示 2、下载vsftpd地址: https://www.doczj.com/doc/886019590.html,/linux/rpm2html/search.php?query=vsftpd 选择版本后使用wget下载 3、安装vsftpd服务器: rpm -ivh vsftpd-*.rpm 4、测试是否安装成功 [root@379318 ~]# ftp localhost Trying ::1... ftp: connect to address ::1Connection refused

Trying 127.0.0.1... ftp: connect: Connection refused ftp> bye [root@379318 ~]# 匿名访问 5、vsftpd服务器的启动、停止、重启、状态 service vsftpd start service vsftpd stop service vsftpd restart service vsftpd status 6、vsftpd的三个主配置文件 /etc/vsftpd/vsftpd.conf //服务器的主配置文件 /etc/vsftpd/ftpusers //此文件内的用户都不能访问vsftpd服务器 /etc/vsftpd/user_list //可能会被拒绝访问服务喊叫或允许访问

7、查看vsftpd.conf的配置参数:vim /etc/vsftpd/vsftpd.conf anonymous_enable=YES //启用匿名用户登录(建议设置为NO) local_enable=YES //允许本地用户访问vsftpd服务器 write_enable=YES //允许上传 download_enable=YES //允许下载 anon_upload_enable=YES //允许匿名用户上传 anon_mkdir_write_enable=YES //允许匿名用户创建目录和上传 anon_other_write_enable=NO //不允许匿名用户删除和改名 local_max_rate=20000 //本地用户的最大传输速率,单位是字节/秒 anon_max_rate=5000 //匿名用户的最大传输速率,单位是字节/秒 local_umask=022 //去掉写的权限 file_open_mode=0666 //上传文件的权限 xferlog_enable=YES //维护日志文件,详细记录上传和下载操作 xferlog_std_format=YES //传输日志文件将以标准的xferlog格式书写,日志文件默认为/var/ log/xferlog hide_ids=YES //隐藏文件夹和目录属主 port_enable=YES //允许使用主动传输模式 pasv_min_port=(1024

linux 中搭建FTP服务器

RHEL5中配置vsftpd搭建FTP服务器 RPM安装包名:vsftpd-2.0.5-10.el5.i386.rpm (第二张光盘) 下载地址:https://www.doczj.com/doc/886019590.html, 源代码最新版本:vsftpd-2.0.5.tar.gz #rpm –ivh vsftpd-2.0.5-10.el5.i386.rpm 安装rpm程序包 #service vsftpd start =/etc/init.d/vsftpd start 启动vsftpd服务 #service vsftpd stop =/etc/init.d/vsftpd stop 停止vsftpd服务 #service vsftpd restart =/etc/init.d/vsftpd restart 重启vsftpd服务#service vsftpd status =/etc/init.d/vsftpd status 检查vsftpd服务状态# ntsysv 或 #chkconfig –level 35 vsftpd on 更改服务自动加载

vsftpd的主配置文件/etc/vsftpd/vsftpd.conf说明(修改前先备份): # Example config file /etc/vsftpd/vsftpd.conf # The default compiled in settings are fairly paranoid. This sample file # loosens things up a bit, to make the ftp daemon more usable. # Please see vsftpd.conf.5 for all compiled in defaults. # READ THIS: This example file is NOT an exhaustive list of vsftpd options. # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's # capabilities. # Allow anonymous FTP? (Beware - allowed by default if you comment this out). anonymous_enable=YES (是否允许匿名登录FTP服务器,默认设置为YES允许,即用户可使用用户名ftp或anonymous进行ftp登录,口令为用户的E-mail地址。如不允许匿名访问去掉前面#并设置为NO) # Uncomment this to allow local users to log in. local_enable=YES (是否允许本地用户(即linux系统中的用户帐号)登录FTP服务器,默认设置为YES允许,本地用户登录后会进入用户主目录,而匿名用户登录后进入匿名用户的下载目录/var/ftp/pub;若只允许匿名用户访问,前面加上#,可阻止本地用户访问FTP服务器。) # Uncomment this to enable any form of FTP write command. write_enable=YES (是否允许本地用户对FTP服务器文件具有写权限,默认设置为YES 允许) # Default umask for local users is 077. You may wish to change this to 022, # if your users expect that (022 is used by most other ftpd's) #local_umask=022 (或其它值,设置本地用户的文件掩码为缺省022,也可根据个人喜好将其设置为其他值,默认值为077) # Uncomment this to allow the anonymous FTP user to upload files. This only # has an effect if the above global write enable is activated. Also, you will # obviously need to create a directory writable by the FTP user. #anon_upload_enable=YES (是否允许匿名用户上传文件,须将write_enable=YES,默认设置为YES允许) # Uncomment this if you want the anonymous FTP user to be able to create # new directories. #anon_mkdir_write_enable=YES (是否允许匿名用户创建新文件夹,默认设置为YES允许)# Activate directory messages - messages given to remote users when they # go into a certain directory.

Linux下搭建Ftp服务器

概述 使用文件传输协议(FTP)来通过网络在计算机之间传输文件是很普遍的一种方法。几乎在所有的平台上面都有FTP 的客户端和服务端的软件,因此用FTP来传送文件也是很方便的一个方法。 有很多配置FTP服务器的不同方法。其中一种是把FTP配置成只对系统中的用户开放的私有服务器,这也是FTP的默认配置。一个私有的FTP服务器只运行系统中的用户访问,而且可以对用户进行访问控制,这样可以给予或拒绝特定用户的访问权限。 另一种是把FTP服务器配置成匿名服务器。匿名FTP服务器允许任何人(不管有没有帐号)访问服务器并传输文件。因为可能存在潜在的安全问题,必须小心配置使得只允许访问系统中特定的目录。在这一节里,我们把FTP配置成“chrooted”的方式,这种配置运行用户访问,例如:Web站点的目录,但是不允许他们访问更高一层的目录。 注意事项 下面所有的命令都是Unix兼容的命令。 源路径都为“/var/tmp”(当然在实际情况中也可以用其它路径)。 安装在RedHat Linux 6.1下测试通过。 要用“root”用户进行安装。 wu-ftp的版本号是2.6.0。 编译和安装 把软件包(tar.gz)解压缩: [root@deep]# cp wu-ftpd-version.tar.gz /var/tmp [root@deep]# cd /var/tmp [root@deep]# tar xzpf wu-ftpd-version.tar.gz 编译和优化 转到wu-ftpd的新目录下,运行下面的命令: 编辑“ftpcount.c”文件(vi +241 src/ftpcount.c),改变下面这一行:

linux课程设计-Linux下FTP服务器的搭建

河南中医学院 《Linux操作系统》课程设计报告 题目:Linux下FTP服务器的搭建 所在院系:信息技术学院 专业年级: 完成学生: 指导教师:赵 完成日期: 2016年 06 月 24 日

目录 目录 (2) 1. 课程设计题目概述 (3) 2. 研究内容与目的 (4) 3. 研究方法 (5) 4. 课题实现 (6) 5. 课题研究结论 (12) 6. 总结 (13)

1. 课程设计题目概述 INTERNET上最早使用的协议之一。尽管World Wide Web(WWW)已经替代了FTP的大多 机可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录。原来的FTP 学。主要使用它进行"上载"。即向服务器传输文件。由于FTP协议的传输速度比较快,我们在制作诸如"软件下载"这类网站时喜欢用FTP来实现,同时我们这种服务面向大众,不需要身份认证,即"匿名FTP服务器"。Linux是一个强大的操作系统,以Linux环境搭建的各种服务器一直受到广大用户的好评,安全和快捷的优点使其优于其他的操作系统,这就需要我们在Linux下搭建一个FTP服务器。 本课题介绍Linux下搭建FTP服务器的具体步骤流程,研究liunx下ftp服务器的性能,功能需求,并进行最后的测试实现,演示文件的上传,下载。 2. 研究内容与目的 Linux下搭建ftp服务用vsftpd(very secure ftp daemon),因为ftp协议是采用明码传输的,没有安全性可言,vsftpd是一个提供较安全的ftp服务软件,测试Centos 7.ftp 的使用过程中,必须首先登陆,在远程主机上获得相应的权限以后,才可以上传和下载文件。就是说,想要在哪一台计算机传送文件,就必须具有哪一台计算机的适当权限。换句话说,除非有用户ID和口令,否则无法传送文件。这种情况违背了Internet的开放性,Internet 上的ftp不止千万,不可能要求每个用户在每一台主机上都拥有账号,因此就衍生出了匿名ftp. ftp有两种使用模式:主动和被动。主动模式要求客户端和服务器端同时打开并且监听一个端口建立链接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式,被动模式只要求服务器端产生了一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。 Vsftpd也有很多优点: (1)是一个安全,稳定,高速的FTP服务器。 (2)可以设定多个基于IP的虚拟FTP服务器。

Linux下FTP服务器的安装和配置(详细)

Linux下FTP服务器的安装和配置 在Internet上FTP(File Transfer Protocol,文件传输协议)扮演着十分重要的角色。我们可以通过FTP与远程机器传输交换文件数据,下载或上传最新的软件。基本的FTP服务器根据服务的对象可以分为两种,一种是Unix(当然也包括Linux)系统基本的FTP服务器,使用者是服务器上合法的用户;而另一种是匿名FTP服务器(Anonmous FTP Service),任何人只要使用anonmous 或ftp帐号并提供电子邮件地址作为口令就可以使用FTP服务。 对于系统中合法的用户,其登录目录为他们的home目录;如果是匿名用户登录的话,登录后会到/home/ftp这个目录中,该除非我们在该目录中存放下载文件,否则匿名FTP使用者将不能做任何事情。在本章,我们将详细地介绍FTP 服务器的安装、配置以及服务器的维护。 安装FTP服务器 在Linux的发行套件中都有FTP服务器的软件包wu-ftpd(Washington University FTP server),这是目前最流行的一种免费FTP服务器软件,目前绝大多数的FTP站点都是由wu-ftpd来架设的,而wu-ftp如此流行的原因是因为它强大的功能,例如: ·可控制不同网域的机器对 FTP服务器的存取权限和访问时段。 ·使用者在下载文件时,可自动对文件进行压缩或解压缩工作。 ·可以记录文件上传或下载的过程。 ·可以限制最高访问人数,以维持系统的最佳运行效率。 ·可显示相关的信息,以便用户了解当前的接收状态。 ·可暂时关闭FTP服务器,以便系统维护。 在安装系统时如果选择了wu-ftpd软件包,就会自动安装。但如果我们想要使用最新的FTP软件包的话,可以到全世界各大FTP站点下载。目前最新的版本是wu-ftpd-2.5.0,得到了wu-ftpd-2.5.0.tar.gz后,请按照我们下面的步骤进行安装。 1.将wu-ftpd- 2.5.0.tar.gz复制到临时目录中并解压缩: # tar zxvf wu-ftpd-2.5.0.tar.gz

在Linux中配置FTP服务器

上海建桥学院 本科实验报告 课程名称:服务器配置实践 学号: 1520959 姓名:欧超 专业:数字媒体技术 班级:2 指导老师:李雄 信息技术学院 2017年9月1日

学号- 1520959姓名-欧超 任务5 在Linux中配置FTP服务器 一、要求 1.掌握FTP服务器在Linux中的配置 2.了解VSFTPD服务器配置的步骤 二、目的 搭建与配置VSFTPD服务器,实现在Linux操作系统下配置和管理VSFTPD服务器。 三、内容 按照教材或查询相关内容,了解Linux下的FTP服务器基本概念,理解如何对VSFTPD 服务器进行配置。通过对vsftpd.conf进行配置,实现FTP服务器在Internet建立,并用 传输一个文件来证明FTP服务器能够工作。 四、步骤,提交方式 1)检查服器所处的网络环境,并配置或记录IP地址172.16.54.132 (dns:202.96.209.5 gateway:172.16.54.1 mask:255.255.255.0 ) 2)检查VSFTPD服务器有没有安装,如果已经安装,做以下步骤。 3)准备一个IP地址172.16.54.32,创建一个FTP服务器根目录C:/ouchao,检查端口 21和20是否被占用。 4)打开vsftpd.conf,创建FTP站点(功能包括:FTP的IP,FTP的端口,配置数据端口, 配置下载,配置超时选项,匿名登录,不设密码,匿名根目录[学号],显示登录信息[学 号,姓名等等]),用截图和说明。 5)重启VSFTPD。 6)用浏览器或FTP客户端软件测试网站,证明FTP服务器创建是否成功。 7)采用字体:宋体,字体大小:10.5,行距:1.0,打印提交。 (截图和说明)

Linux配置FTP服务器

Linux 架设FTP 服务器 实例 FTP 服务器是学院校园网重要功能之一,学院准备搭建FTP服务器,对于所有的学生均以真实账号登录,允许下载相关信息及学习资料,禁止上传,但操作目录只限于/students 下。所有老师也以真实账号登录服务器。操作目录也只限于/teachers下,允许老师可以上传,下载文件、创建目录以及删除文件等操作。 三、实训过程 为了实现真实账号登录FTP服务器,首先要禁止匿名用户登录。其次,使用chroot功能将所有学号如20080901,20080902……等账号锁定在/students目录下。将所有教或号如:20001,2002……锁定在/teachers目录下。如果需要删除文件的还需要注意本地权限,PS:该题的难点在于要求不同的用户登录不同的文件夹 2.实训步骤 1)在根目录(/)下分别创建两个目录students和teachers。 ●输入命令:mkdir /students :mkdir /teachers 2)建立学号和密码 ●输入命令:useradd stu1 :useradd stu2 :useradd stu3 ●密码命令:passwd stu1 :passwd stu2 :passwd stu3(密码自定义)

3)建立教工号账号和密码输入命令:useradd tea1 :useradd tea2 :useradd tea3 密码命令:passwd tea1 :passwd tea2 :passwd tea3

4)编辑vsftpd.conf文件,并作相应修改。 若想实现不同用户进入不同的目标文件夹,则只需添加以下一条语句 原理:说明用户的配置文件在“=”号后的文件夹内 输入命令:user_config_dir=/etc/vsftpd 5)在目标文件夹中建立本地用户文件, PS:每一个用户都要 输入命令:vi /etc/vsftpd/stu1 :vi /etc/vsftpd/stu2 :vi /etc/vsftpd/stu3 :vi /etc/vsftpd/tea1 :vi /etc/vsftpd/tea2 :vi /etc/vsftpd/tea3 将文件目标文件夹位置添加在文件中。 输入语句:local_root=/students PS:每一个用户都要

相关主题
文本预览
相关文档 最新文档