1. linux系统的机子作服务器怎么配置啊源文件在哪儿存的啊
http://www.chinaunix.net/
这里比较多.
案例一:
用LINUX架设FTP服务器
http://www.chinaunix.net 作者:level 发表于:2004-02-27 13:35:50
以前自己弄的东西,现在帖出来,希望对大家有点用:)
1.1 什么是FTP:文件传输协议原理
1.1.1 命令选择
1.1.2 命令格式
1.2 wu-Ftpd的安装
1.3 让FTP服务器运转起来
1.4 配置文件的设置
1.4.1 /etc/ftpaccess的设置
1.4.2 /etc/ftpusers和/etc/ftphosts的设置
1.4.3 /etc/ftpconversions设置
1.4.1 wu-ftp的相关程序
1.5 开设只能FTP的帐户
1.6 设置虚拟FTP主机
什么是FTP:文件传输协议原理
互联网文件传输协议(File Transfer Protocol ,FTP) 标准是在RFC959说明的。该协议定义了一个从远程计算机系统和本地计算机系统之间传输文件的一个标准。一般来说,传输文件的用户需要先经过认证以后才能登录网站,然后方能访问在远程服务器的文件。而大多数的FTP服务器往往提供一个GUEST的公共帐户来允许没有远程服务器的用户可以访问该FTP服务器。
一个FTP会话通常包括五个软件元素的交互。
用户接口 提供了一个用户接口并使用客户端协议解释器的服务
客户 PI 客户协议解释器,其项远程服务器协议机发送命令并且驱动客户数据传输过程
服务器PI 服务器协议解释器,响应客户协议机发出的命令并驱动服务器端数据传输过程
客户 DTP 客户数据传输过程,其负责完成和服务器数据传输过程及客户端本地文件系统的通信
服务DTP 服务器数据传输过程,其负责完成和客户数据传输过程及服务器端文件系统的通信
在RFC 959中,一般使用用户这个名词来指代客户。RFC 959定义了客户PI和服务器PI交互的方式和规范。用户接口与PI和DTP交互的机理都并不是协议标准的一部分。PI和DTP往往通常是在同一个程序模块中实现的。
在FTP会话中,一共会存在有两个独立的网络连接,一个是由两端的PI使用的,另一个是由两端的DTP使用的。PI之间的连接一般被称作控制连接(control connection),DTP之间的连接被称做数据连接(data connection)
使用TCP服务的控制和数据连接
通常情况下,FTO服务器监听端口号21来等待控制连接建立请求。而数据连接端口号的选择依赖于控制连接上命令。通常是客户发送一个控制消息来指定客户监听并等待服务器端发送数据连接建立请求的端口号。
对数据传输和控制命令传输来使用不同的独立连接有如下优点:两个连接可以选择不同的合适服务质量,如:对控制连接来说高需要更小的延迟时间,对数据连接来说需要更大的数据吞吐量;而且可以避免实现数据流中的命令的通明性及逃逸。
当传输建立时,总是由客户端首先发起。然而客户和服务器都可能是数据发送者。除了传输用户请求下载文件,数据传输过程同样在客户端请求列服务器端目录结构时建立。
1.1.1 命令选择
当一个传输建立时,一般通常需要指定四个方面的属性:
文件类型
该属性指定如何将文件的数据匹配成适于传输的格式,一共有四种可能的选择:
ASCII文件类型
在发送端,文件从本地文本文件格式转换为 NVT ASCII格式,每行结束有一个CR/LF对来标识。 在接收端,再被转换为本地的文本格式。
这说明了为什么Unix主机之间传输文本文件为何传输的数据量要大于文件的实际大小。若传输一段端或传输两端都不使用ASCII文本编码,则是应该由数据传输过程来实现本地编码和NVT ASCII 编码之间的转换。
EBCDIC文件类型
类似于ASCII,区别仅仅上使用EBCDIC字符编码
图象 (或二进制)文件类型
文件以本地传输内容传输,在远端以同本地完全相同的内容存储。
本地文件系统
用在字节大小不是8位的环境下。没字节位数由发送者指定。
在实际应用中,只有ASCII和图象格式使用的较多。
格式控制
该属性是和将文本文件最后传送到打印设备相关的,其中有多种方式来实现将垂直格式信息编码到文件中,包括指示一个新页开始的方式。有如下方式可供选择:
无须打印格式控制,这是缺省值
Telnet打印控制,在telnet协议中定义的控制字符包含在数据流中。.
Fortran打印控制,
该属性在实际中很少使用。
结构
文件可以拥有内部结构,在传输中该结构被保留。由数据传输过程来负责在传输中的结构及本地结构之间相互匹配,有三种可能性:
文件结构
这实际上意味着文件被看作没有内部结构的连续的字节流。
记录结构
文件是有一系列记录组成的结构。这只适用于文本文件。
页面结构
也可以称做块结构。每一页都伴随一个页号来传输,从而以顺序的方式来完成传输。
页面结构很少在实际中遇到。记录结构也不是很常见。对于文本文件使用ASCII文件类型可以获得相同的效果。
传输模式
该属性可以取三个不同的值:
流模式
文件的以字节流的方式传输。
块模式
文件以一个块连接一个块的方式传输,每个块的开头都有一个头。
压缩模式
一个简单的运程长度压缩编码被应用,来压缩连续的相同的字节。
实际中,一般只有流模式被使用。而压缩一般通过使用各种其他的工具程序来获得。
当一次传输被建立,客户端一般指定一个或多个前面说明的属性。若服务器端不能支持某个选项,服务器将用一个错误信息来响应客户端,并不具有协商机制。
FTP提供了充足的命令来使用户和远程建立连接并访问远程文件系统。
1.1.2 命令格式
命令以NVT ASCII串的格式被传输。每个命令以三个或四个大写的NVT ASCII字符开始,后面带有选项参数和一个CR/LF对来标识命令结束
应答由三个NVT ASCII数字及一个选项消息组成。
一个长的应答也许会有多个消息组成,第一个消息的三个数字后带有一个破折号,最后的消息不带有破折号。中间的消息无须携带三个数字,但是如果带了三个数字,则也需要破折号。
下面是所有的命令的列表。带有星号的命令一般很少使用,所以往往在具体实现中不支持。
String Meaning
ABOR 放弃传输
*ACCT 某些系统将帐号和用户与文件系统相关联
*ALLO 为即将传送的文件分配空间。后面携带的参数来确定字节数
*APPE 将文件附加到已经存在的文件后面
CDUP 在远程系统上将当前目录切换到上级父目录
CWD 改变远程系统的工作目录
DELE 删除远程系统的文件
HELP 读取服务器的帮助信息,如:支持的命令的列表
LIST 在一个新建立的数据连接上发送当前工作目录下的文件名列表
MKD 创建目录
MODE 指定传输模式,可携带的参数是:S、B或 C.
NLST 在一个新建立的数据连接上发送一个当前目录下的“完全”的目录列表
NOOP 空操作,防止连接断掉
PASS 提供一个用户登录密码,必须立即跟随在USER命令后
*PASV 指定服务器数据传输过程监听等待客户端的数据连接连接建立请求
PORT 指定客户端监听等待服务器端建立的连接的端口号
PWD 显示服务器端的当前工作目录名
QUIT 退出登录并终止连接
*REIN 重新初始化,退出登录但是并不断开连接,后面必须随后发出一个新的USER命令
*REST 从服务器的一个标识处重新开始传输
RETR 从远程系统取回一个文件
RMD 删除一个目录
*RNFR 指定要被命名的文件的老的路径名,随后必须是一个RNTO命令
*RNTO 指定要被命名的文件的新的路径名
*SITE 站点特有的服务器提供的服务
*SMNT 结构加载,提供一个文件系统结构的远程系统路径名
*STAT 状态信息
STOR 上载一个文件到服务器上,若文件已经存在则覆盖
*STOU 上载一个文件到服务器上,不覆盖已经存在的文件
STRU 指定文件结构,参数可以是F、R或P.
*SYST 报告远程系统的操作系统类型
TYPE 指定文件类型,参数可以是A、E、I、L只有TYPE A和TYPE I常用
控制连接命令应答有如下形式:
Type Description
1yz 主动初步应答,在发送另一个命令以前等待另一个应答
2yz 主动最后应答,最后一个命令成功结束
3yz 主动中间应答,必须再发送一个命令
4yz 暂时被动应答,要求的动作当时不能完成,但可以重试
5yz 永久被动应答,要求的动作不能完成,不应该重试
"y"数字编码进一步的信息
Digit Meaning
0 语法错误
1 信息
2 连接状态
3 认证和记帐
4 保留
5 File s文件系统状态
下面是一些典型的消息:
Number Meaning
125 数据连接打开,传输开始
200 命令OK
331 用户名OK 需要输入密码
425 不能打开数据连接
452 错误写文件
500 语法错误-不可识别的命
具体的详细情况可以参见RFC
wu-Ftpd的官方权威站点地址是:http://www.wu-ftpd.org/。
1.2 wu-Ftpd的安装
当前,Linux环境下有许多ftp服务器软件可供选择,但是目前最常见的仍然是wu-Ftpd服务器。这里主要讨论该软件的安装和配置。
一般来说,在安装了linux时,缺省都会自动安装wu-ftpd服务器,但是有时候为了某种需要也需要自己亲自重新安装该服务器软件。安装wu-Ftpd有两方式,一种是安装rpm形式的发布包;一种是自己动手去编译生成Ftp服务器。
rpm包可以在http://rpmfind.net/linux/RPM/WByName.html处下载得到,以rpm包方式安装非常简单,只需要在按下面的简单的几个步骤就可以完成,假设下载得到的rpm包存放在/tmp目录下:
#cd /tmp
#rpm -ivh wu-ftpd-1.6.0-9.i386.rpm
压缩的源代码可以在ftp://ftp.wu-ftpd.org/pub/wu-ftpd/出得到。这里我们以最新的1.6.0为例说明如何编译安装wu-ftpd。
1、解开源代码
1) 将压缩的源代码拷贝到/usr/src下
#cp wu-ftpd.1.6.0.tar.gz /usr/src
2) 对压缩文档进行解压缩:
#tar xvfz wu-ftpd.1.6.0.tar.gz
#cd wu-ftpd-1.6.0
2、敲入命令 "./build xxx" ,可以在这里指定一个C语言编译器:"./build CC=yyy xxx" yyy 指用来替代 "cc" 的其他的编译器。对于linux环境下的gcc编译器,命令应该为:"./build CC=gcc xxx"
#build CC=gcc lnx
xxx可以取下面的值:
gen : 通用make(当移植到心得系统时需要拷贝它)
aix : IBM AIX
aux : AU/X
bdi : BSD/OS
bsd : BSD
dec : DEC Unix 3.X
4 : DEC Unix 4.X or later
dyn : Dynix
fbs : FreeBSD 1.0 or later
hiu : Hitachi Unix
hpx : HP-UX
lnx : Linux (tested on 1.0.30)
nbs : NetBSD 1.X
nx2 : NeXTstep 1.x
nx3 : NeXTstep 3.x
osf : OSF/1
osx : Mac OS X
ptx : ???
sco : SCO Unix 3.2v4.2/SCO OpenServer 5
sgi : SGI Irix 4.0.5a
sny : Sony NewsOS
sol : SunOS 5.x / Solaris 1.x
s41 : SunOS 4.1.x
ult : Ultrix 4.x
uxw : UnixWare 1.1 or later
clean : Clean up object files and such to rece disk space after building.
install: Install ftpd
Copying Makefiles.
Linking src/config.h
Making support library.
gcc -O3 -fomit-frame-pointer -fno-strength-rece -pipe -c strcasestr.c
gcc -O3 -fomit-frame-pointer -fno-strength-rece -pipe -c authuser.c
gcc -O3 -fomit-frame-pointer -fno-strength-rece -pipe -c snprintf.c
rm -f libsupport.a
ar cq libsupport.a strcasestr.o authuser.o snprintf.o
ranlib libsupport.a
: : :
: : :
: : :
编译成功以后将生成如下几个可执行文件:
ftpd FTP服务器程序
ftpshut 用于关闭FTP守护进程的程序
ftpcount 记数程序,显示目前ftp登录的人数
ftpwho 查看当前FTP服务器的连线情况,类似与系统的who命令,只不过是查看ftp登录的用户
ckconfig 检查FTP的设置是否正确
ftprestart 重新启动ftp服务器
privatepw 改变wu_ftpd组访问文件信息
3、若只是升级到一个新的版本,应该首先备份系统所有的旧的配置文件。否则这些配置文件将被覆盖。为了适应自己的需求,应当编辑样本配置文件来满足自己的要求,具体配置文件的需求参见后面的内容。
4、以超级用户身份敲入命令"./build install"
#build install
installing binaries.
install -c -o bin -g bin -m 110 bin/ftpd /usr/sbin/in.ftpd
install -c -o bin -g bin -m 111 bin/ftpshut /usr/bin/ftpshut
install -c -o bin -g bin -m 111 bin/ftprestart /usr/bin/ftprestart
install -c -o bin -g bin -m 111 bin/ftpcount /usr/bin/ftpcount
install -c -o bin -g bin -m 111 bin/ftpwho /usr/bin/ftpwho
install -c -o bin -g bin -m 111 bin/privatepw /usr/bin/privatepw
installing manpages.
install -c -o bin -g bin -m 444 doc/ftpcount.1 /usr/man/man1/ftpcount.1
install -c -o bin -g bin -m 444 doc/ftpwho.1 /usr/man/man1/ftpwho.1
install -c -o bin -g bin -m 444 doc/ftpaccess.5 /usr/man/man5/ftpaccess.5
install -c -o bin -g bin -m 444 doc/ftpconversions.5 /usr/man/man5/ftpconversio5
install -c -o bin -g bin -m 444 doc/ftphosts.5 /usr/man/man5/ftphosts.5
install -c -o bin -g bin -m 444 doc/xferlog.5 /usr/man/man5/xferlog.5
install -c -o bin -g bin -m 444 doc/ftpd.8 /usr/man/man8/ftpd.8
5、编辑 "/etc/inetd.conf" 文件,指向新的ftpd守护进程,大多数情况下,这一步是不必的,因为在build install时,会将新的守护进程拷贝覆盖老的守护进程。若希望使用ftpd的增强的扩展功能,应该在这行最后加上"-a"选项。
ftpd守护进程一般可以携带如下参数,也可以不带任何参数:
-d debug参数,当ftpd守护进程出现错误时,会将错误信息写入到系统记录文件/usr/adm/syslog中
-l 记录每次ftp会话信息到/usr/adm/messages中
-t 设置当FTP客户端多久无操作就自动断线,这个参数后面指定等待的时间,如 -t 600 表示若客户
端若连续10分钟没有动作就自动断线,缺省值是15分钟
-a 使用ftpaccess配置文件内容对ftpd进行更详细复杂的设置
-A 不使用ftpaccess配置文件的设置,缺省值是-A
-i 当客户端有上载文件的动作时,就记录在文件xferlog中
-L 使用户连接ftp服务器期间使用的所有命令都被记录到/usr/adm/messages中
6、拷贝tar、gzip、gunzip、compress、uncompress等文件到 "~ftp/bin"中,拷贝"ls"为"~ftp/bin/ls"。
7、若是第一次安装,使用"ckconfig"程序查找ftpd的各种配置文件存放目录:ftpconversions、ftpusers、 和ftpgroups。在"doc/examples"目录下有样本文件。"ckconfig"是一个可执行程序,确保修复该程序检测到的任何问题。
1.3 让FTP服务器运转起来
一般来说,只要正确地编译安装了wu-ftpd,该服务器就可以正常运行。用户可以通过FTP命令从各种系统上连接该服务器。
1.4 配置文件的设置
1.4.1 /etc/ftpaccess的设置
这个配置文件是FTP服务器最重要的配置文件,这个文件的设置决定了FTP是否可以正常工作及许多访问权限的设置。如下面的例子所示:
class all real,guest,anonymous *
limit all 10 Any /etc/msgs/msg.dead
readme README* login
readme README* cwd=*
message /welcome.msg login
message .message cwd=*
compress yes all
tar yes all
log commands real
log transfers anonymous,real inbound,outbound
shutdown /etc/shutmsg
email user@hostname
下面是设置文件各个指示(directive)的详细说明:
指示: loginfails n
密码输入n次就自动断开连接
指示:autogroup 组名 类别 [ ...]
若一个匿名用户属于任何一个参数类别的类,则FTP服务器将实施setegid()调用使其属于这个组名定义的组,这样做是为了实现某些特定类别的匿名用户可以访问一些只允许本组及拥有者可以访问的文件。组名必须是/etc/group内定义的有效组。
指示: class 类名 类别(real、guest、anonumous) IP地址
这个指示是设定FTP服务器用户的类别。
FTP服务器的用户可以分为以下三种类别:
real 在该FTP服务器上拥有合法帐户的用户;
guest 另外定义某些特定组的用户;
anonymous 匿名用户;
举例说明:
class outworld real,guest,anonymous *
定义一个名为outworld的类,该类包含三种类型的用户:real,guest,anonymous。该类在后面的指示中使用。其中"*"是类定义中的IP地址部分,表示网络上的所用主机。也就是说明允许任何主机连接FTP服务器。若希望对访问FTP的主机进行一定的权限设置,可以这样做:
class friend real,guest,anonymous *.linuxaid.com.cn 201.101.13.*
指定义一个friend类,该类从*.linuxaid.com.cn 及201.101.13.*访问FTP服务器时有特定的权限设定。
指示: limit 类别 人数 时间 文件名
该指示设定在某个类在某个时间内允许连接FTP服务器的人数的限制,并指定当连接人数超过限制,后面的用户连接时显示给用户的消息信息。
举例说明:
limit local 20 Any /tmp/message/msg.toomany
上面的例子限定local这个类中的拥护同一时间只能有20人同时上网连接这台FTP服务器,若超过20人则显示/tmp/message/msg.toomany的文件的内容
limit outworld 100 MoTu|Any 2200-0800 /tmp/message/msg.limit
这个例子限制outworld这个类的用户只能在周一周二或每天的晚上10点到第二天早上的8点之间访问该FTP服务器,而且同时连线的人数不可以超过100人,若超过100人,则显示/tmp/message/msg.limit的文件的内容
/tmp/message/msg.limit的内容为:
对不起!本服务器只允许匿名用户在周一周二全天及其他每天晚上10点到第二天早上的8点之间访问,当前时间为%T;而且只允许同时有%M个匿名用户访问,当前有%N个用户在访问该服务器。请在合适的时间访问本FTP服务器,谢谢!
这里的%M是一个变量,代表同时允许连接的人数的上限,FTP服务器可以用前面设置的值自动替代该变量,其他允许的变量包括:
%T 本地当前时间;
%F CWD所在分区剩余空间,以KB为单位。但该变量不是所有系统都支持。
%C 当前工作目录;
%E 定义在/etc/ftpaccess文件中的系统管理员的E-mail地址;
%R 远端主机名;
%L 本地主机名;
%U 登录时所给的用户名;
%N 这个类别当前连接的用户数目;
利用这些参数,可以编辑一个详细的说明文件,这样可以让用户清楚当前服务器资源使用情况。
指示: readme 说明文件 指令
当用户执行指定的"指令"时,系统就会自动显示所设置的说明文件;
举例说明:
readme README* login
当用户执行登录动作时,只要以README开头的文件内容就会显示给用户。
readme README* cwd=*
表示用户切换目录时(cwd),只要以README开头的文件内容就会显示给用户。
通常README*应该是该目录下文件的说明,让登录的用户可以清楚地知道目录中存放了那些文件;
指示: message 文件名 指令
使当用户执行特定的"指令"时,系统就将指定的文件内容显示给用户;
举例说明:
message /msg.welcome login
指定当用户登录时,将自动显示/tmp/message/msg.welcome的内容给用户,注意这里的/msg.welcome指ftp根目录下的msg.welcome文件,即/home/ftp/msg.welcome。
message /welcome cwd=*
指定当用户切换另一个目录时,只要目录中有msg.welcome文件,就显示给用户
指示: compress (yes/no) 类别
设置哪个类别的用户可以使用压缩功能;
举例: compress yes local outworld
允许local 和outworld两个类别的 用户使用压缩功能
指示: tar (yes/no) 类别
指定哪个类别的用户可以使用tar功能;
指示: passwd-check (none/trivial/rfc822) (enforce/warn)
设定当用户以匿名方式登录服务器时密码的方式:
none 表示不对密码进行验证,任何密码都可以登录;
trival 表示只要密码中包含@就可以登录;
rfc822 表示密码一定要符合rfc822中规定的E-mail格式才能登录。如:[email protected]
enforce 表示输入的密码不符合指定格式就不允许登录;
warn 表示输入的密码不符合指定格式显示警告信息,但仍然允许登录;
指示: log commands 类别(read/guest/anonumous)
设定那些用户登录时,所使用的操作会被记录在文件/usr/adm/xferlog中。
指示: log transfer 类别(read/guest/anonumous) (inbound/outbound)
设定指定的用户类别在上载还是下载时的相关信息被记录到/usr/adm/xferlog中。
举例说明:
log transfer anonymous,real inbound,outbound
当anonymous或real用户登录后,上载和下载的操作会被记录在文件/usr/adm/xferlog中。
指示: shutdown 文件名
FTP服务器关闭的时间可以后面的文件名中指定的文件中指定,设定的时间一到,便无法登录FTP服务器了,只有将这个文件删除才能恢复FTP服务器。文件的格式可以由命令ftpshut来建立。
指示: delete (yes/no) 类别(real/anonymous/guest)
设定是否允许指定用户使用delete命令。
举例说明:
delete no guest,anonymous
设定大概内登录的用户为guest或anonymous上不允许执行delete命令。
指示: overwrite (yes/no) 类别(real/anonymous/guest)
设定是否允许指定用户使用overwrite指令。
指示: reame (yes/no) 类别(real/anonymous/guest)
设定是否允许指定用户使用readme指令。
指示: chmod (yes/no) 类别(real/anonymous/guest)
设定是否允许指定用户使用chmod指令。
指示: umask (yes/no) 类别(real/anonymous/guest)
设定是否允许指定用户使用umask指令。
指示: upload [absolute|relative] [class=]... [-]
["dirs"|"nodirs"] []
定义允许用来上载的目录。若允许上载,所有新上载的文件的所有者及组由和定义 ,访问权限将为。对于覆盖老文件的上载文件将保持原来的所有者及访问权限信息。文件上载的权限信息由最大匹配目录项定义,如:
upload /var/ftp * no
upload /var/ftp /incoming yes ftp daemon 0666
upload /var/ftp /incoming/gifs yes jlc guest 0600 nodirs
would only allow uploads into /incoming and /incom-
:
将只允许/incoming和/incom-ing/gifs目录上载。上载到/incoming目录下的文件将属于ftp/daemon,访问权限为0666;而上载到/incoming/gifs下的文件将属于jlc/guest,访问权限为0600。应该注意的是 必须匹配"ftp"用户的passwd文件中的主目录。
"dirs"和"nodirs"选项用来设定是否允许在该目录下创建新的子目录。但是缺省是允许创建子目录的。
设定新创建的目录的访问权限,缺省为0777。
上载指示只能施用于用户主目录(chroot()的参数)等同于的用户,可以为*来表示匹配任何主目录。
和也可能指定为*,在这种情况下,任何上载的文件或创建的目录的所有者都等于起父目录的所有者。
选项[absolute|relative]指定是是绝对路径还是相对于chroot()参数指定的目录的相对路径。缺省是绝对路径。也可以指定任意多个class='来进行进一步限定。若指定了任何目录,则该上载指示只影响这些组的用户。
指示: alias 目录别名 目录路径
给指定目录设置一个别名,当切换目录时可以使用别名。
举例说明:
alias xwin /pub/linux/xwindows
为/pub/linux/xwindows设置别名xwin,登录以后只要输入命令cd xwin就可以进入该目录。
指示: cdpath 目录
该功能和系统的PATH环境变量设置类似,当cd /etc时,FTP首先查看当前目录下是否有etc子目录,无则看是否有别名,若没有则根据该指示设定的路径查询。
举例说明:
cdpath /pub/linux
cdpath /pub
cdpath /
搜索顺序为:/pub/linux /pub /
指示: path-filter 类别(real/anonymous/guest) 目录
设定上载文件名限制。
举例说明:
path-filter anonymous /etc/pathmsg^[-A-Za-z0-9_\.]*$^\.^-
path-filter guest /etc/pathmsg^[-A-Za-z0-9_\.]*$^\.^-
设置限制anonymous和guest用户上载的文件名只能包含A-Z、a-z、0-9和._-,名字以"."和"-"开头的文件不能上载到服务器上。
指示: guestgroup [ ...]
guestuser [ ...]
realgroup [ ...]
realuser [ ...]
对于guestgroup指示,若一个真实(real)用户属于任何一个所指定的组,则其FTP会话都被FTP服务器以匿名的方式进行处理。也就是说,chroot()被调用,用户不再允许发出USER和 PASS 命令。必须是有效的组。
这里用户的home目录必须被争取的设置,要确实和匿名用户一致,/etc/passwd中的相关项的home目录被分割为两个部分,第一部分是chroot()调用的根目录参数,第二个是用户相对于根目录的主目录,两部分之间以"/./分隔",如:
guest1::100:92:Guest Account:/ftp/./incoming:/etc/ftponly
当guest1成功登录进入,FTP服务器将调用chroot("/ftp")然后调用chdir("/incoming")。则guest1就如同匿名用
2. 为什么要用Linux做服务器
Linux服务器优势1:良好的稳定性
Linux内核的源代码是以标准规范的32位(在64位CPU上是64位)的计算机来做的最佳化设计,可确保其系统的稳定性。正因为Linux的稳定,才使得一些安装Linux的主机像Unix机一样常年不关而不曾宕机。
Linux服务器优势2:丰富的软件支持
与其他的操作系统不同的是,安装了Linux系统后,用户常用的一些办公软件、图形处理工具、多媒体播放软件和网络工具等都已无需安装。而对于程序开发人员来说,Linux更是一个很好的操作平台,在Linux的软件包中,包含了多种程序语言与开发工具,如gcc、cc、C++、Tcl/Tk、Perl、Fortran77等。
Linux服务器优势3:可靠的安全性
Linux系统是一个具有先天病毒免疫能力的操作系统,很少受到病毒攻击。
对于一个开放式系统而言,在方便用户的同时,很可能存在安全隐患。不过,利用Linux自带防火墙、入侵检测和安全认证等工具,及时修补系统的漏洞,就能大大提高Linux系统的安全性,让黑客们无机可乘。
Linux服务器优势4:完善的网络功能
Linux内置了很丰富的免费网络服务器软件、数据库和网页的开发工具,如Apache、Sendmail、VSFtp、SSH、MySQL、PHP和JSP等。近年来,越来越多的企业看到了Linux的这些强大的功能,利用Linux担任全方位的网络服务器。
Linux服务器优势5:多用户多任务
和Unix系统一样,Linux系统是一个真正的多用户多任务的操作系统。多个用户可以各自拥有和使用系统资源,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响,同时多个用户可以在同一时间以网络联机的方式使用计算机系统。多任务是现代计算机的最主要的一个特点,由于Linux系统调度每一个进程是平等地访问处理器的,所以它能同时执行多个程序,而且各个程序的运行是互相独立的。
Linux服务器优势6:跨平台的硬件支持
由于Linux的内核大部分是用C语言编写的,并采用了可移植的Unix标准应用程序接口,所以它支持如i386、Alpha、AMD和Sparc等系统平台,以及从个人电脑到大型主机,甚至包括嵌入式系统在内的各种硬件设备。 如需详细了解Linux请看《Linux就该这么学》。
3. linux 文件服务器怎么搭建
在前面一个章节学习的FTP文件传输服务确确实实让咱们在主机之间传输文件变得非常方便,但FTP协议的本质是传输文件,并不是共享文件,要想让客户端能够直接在服务端上面修改文件内容还是比较麻烦的事情。于是在1987年时,由微软和英特尔公司共同制订了SMB服务器通信协议(Server MessagesBlock),这项技术的诞生是为了解决局域网内的文件或打印机等资源的共享服务问题,让多个主机之间共享文件变成越来越简单。
后来到了1991年,当年还在读大学的学生Tridgwell为了解决Linux与Windows系统之间的文件共享问题,便基于了这项SMB技术协议开发出了SMBserver这一款服务程序,SMBserver服务程序是一款基于SMB协议并由服务端和客户端组成的开源文件共享软件,通过非常简单的配置就能够实现Linux系统与Windows系统之间的文件共享工作。当时还在上学的Tridgwell想要把这款SMBServer软件注册成为商标,但却被商标局以SMB是没有意义的字符而拒绝了他的申请,经过Tridgwell不断的翻看词典,突然看到一个拉丁舞蹈的名字——SAMBA,如图12-1所示,这个热情洋溢的舞蹈名字中又恰好包含了SMB(SAMBA),于是这便是Samba服务程序名字的由来,现在已经成为了Linux系统与Windows系统之间共享文件的最佳选择。
Samba服务程序的配置方法跟咱们以前学习过的服务很相似,首先咱们需要先通过yum软件仓库来安装samba服务程序,这款软件也恰巧是软件包的名字,很好记吧~:
java">[root@linuxprobe~]#yuminstallsamba
Loadedplugins:langpacks,proct-id,subscription-manager
………………省略部分输出信息………………
Installing:
sambax86_644.1.1-31.el7rhel527k
TransactionSummary
================================================================================
Install1Package
Totaldownloadsize:527k
Installedsize:1.5M
Isthisok[y/d/N]:y
Downloadingpackages:
Runningtransactioncheck
Runningtransactiontest
Transactiontestsucceeded
Runningtransaction
Installing:samba-4.1.1-31.el7.x86_641/1
Verifying:samba-4.1.1-31.el7.x86_641/1
Installed:
samba.x86_640:4.1.1-31.el7
Complete!
安装后打开Samba服务程序的主配置后发现竟然有320行呢!有没有被吓到?但仔细一看发现其实大多都是以#(井号)开头的注释信息行,既然您手中已经拥有了刘遄老师的经验之书,就肯定不会让您去“死啃”这些东东的~:
[root@linuxprobe ~]# cat /etc/samba/smb.conf
# This is the main Samba configuration file. For detailed information about the
# options listed here, refer to the smb.conf(5) manual page. Samba has a huge
# number of configurable options, most of which are not shown in this example.
#
# The Official Samba 3.2.x HOWTO and Reference Guide contains step-by-step
# guides for installing, configuring, and using Samba:
# http://www.samba.org/samba/docs/Samba-HOWTO-Collection.pdf
#
# The Samba-3 by Example guide has working examples for smb.conf. This guide is
# generated daily: http://www.samba.org/samba/docs/Samba-Guide.pdf
#
# In this file, lines starting with a semicolon (;) or a hash (#) are
# comments and are ignored. This file uses hashes to denote commentary and
# semicolons for parts of the file you may wish to configure.
#
# Note: Run the "testparm" command after modifying this file to check for basic
# syntax errors.
#linuxprobe.com
………………省略部分输出信息………………
由于这次配置文件中的注释信息行实在太多,不便于分析里面的重要参数,因此咱们可以先将配置文件改个名字,然后使用cat命令读入主配置文件内容后通过grep命令-v参数(反向选择)分别去掉所有以#(井号)和;(分号)开头的注释信息行,对于剩余的空白行可以再用^$来表示并反选过滤,最后将过滤后的可用参数信息通过重定向符覆盖写入到原始文件名称中即可。samba服务程序过滤后的参数并不复杂,为了更方便同学们查阅参数功能,刘遄老师在重要参数行后面都写上了注释说明:
[root@linuxprobe~]#mv/etc/samba/smb.conf/etc/samba/smb.conf.bak
[root@linuxprobe~]#cat/etc/samba/smb.conf.bak|grep-v"#"|grep-v";"|grep-v"^$">/etc/samba/smb.conf
[root@linuxprobe~]#cat/etc/samba/smb.conf
4. 怎么用linux系统做服务器
1、安装ftp服务端,方便你从客户端上传文件。linux上一般安装vsftp.
VSFTP的软件安装包是: vsftpd-2.2.2-12.el6_5.1.i686.rpm
查询:#rpm -q vsftpd
安装:#rpm -ivh vsftpd-2.2.2-12.el6_5.1.i686.rpm或者直接yum install vsftpd
启动、停止及重启VSFTP的命令: #service vsftpd start/stop/restart
配置文件:
/etc/vsftpd/vsftpd.conf //主配置文件
/etc/vsftpd.ftpusers //被禁止登录FTP的用户文件
/etc/vsftpd.user_list //允许登录FTP的用户文件
a、将登录后的用户限制在本地家目录下:
#vi /etc/vsftpd/vsftpd.conf
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
新建受限用户的列表文件并加入受限用户名
#vi /etc/vsftpd.chroot_list
raykeso
重启ftp服务
#service vsftpd restart
2、安装apache,开启目录索引,这样你就可以浏览和下载文件。
apache配置文件
<Directory"I:/build/dist"> #设置浏览文件的目录
Options Indexes#开启目录列表索引模式Order allow,deny
Allow from all
</Directory>
5. 中小型企业使用linux操作系统来做文件共享服务器的好处和坏处是什么
为的就是安全稳定。
用命令行还是图形界面自己选,各有各的优点,但必须有会用的人。另外,很多企业的办公用计算机都是 Windows 的,Linux 下面的兼容理论上没问题,但实际还是需要很多设置。很多 Linux 的文件共享服务器特有的功能用不到。
扩容的问题看你之前用的什么分区类型,Linux 有个类似 Windows 的动态卷的东西,叫 LVM ,也就是逻辑卷管理。这东西支持动态分区扩容(也就是两个分区连起来)。另外,还有 aufs 这种联合多个文件夹同时读写的特殊系统,可以把两个分区挂载到同一个目录上实现分布式的读写。另外,Linux 特有的分区挂载到目录上的功能,完全可以把一个新的硬盘分区挂载到共享目录的某个文件夹上提供扩容(其实 NTFS 也支持)。
RAID 可以用软的,lvm 支持软 RAID ,也支持不同分区大小的 RAID 组合存储。不过不好的是软 RAID 不如硬件的性能,但弹性很好功能更多。
如果还没有用 Linux 文件共享服务器。我建议是去找个支持硬件 RAID 的服务器上硬件 RAID ,同时也要上 lvm ,为以后软 RAID 或者扩容什么的提供弹性。
如果找个一般的台式机做文件服务器,有些高端的桌面机主板支持 RAID 的。可以考虑用软硬结合的方式实现性能和安全的提升。