3天时间搞的sloaris9下的自带ftp、wu的实现!!!!

weixin_38051062 2004-03-11 08:25:46

我可是一个超级菜鸟,有不对的地方欢迎大家批评指正,一个操作有不同的实现方法的也请大家贴出来。
另外请高手给我指点一下我还没有解决的问题。
1。solaris下自带的wu-ftp版本怎么看?
2。如果我要限制用户目录且我的ftp目录为/export/home/ftp那么,我在这个目录里要怎么实现,简明点,比如说我只要实现ls,mkdir,mkfile就ok.
3。我的sun工作在一个局网里,怎么向外提供服务。是不是要陆游一下,或者是于名一下。

我是一个以后长期作sun服务的菜鸟,希望和大家多交流。qq:24221085



1. 如果你在安装操作系统时已经安装了ftp server,那么inetd自动包含ftp的启动命令,否则先要设置/etc/serveices,有关ftp的行是:   ftp 21/tcp

2. 设置/etc/inetd.conf,有关行是ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a,然后重起inetd,就可以提供ftp服务了。
  wu-ftpd的命令选项:  
  -d  当FTP服务器出错时,将错误入系统的syslog中;
  -l  将每次FTP客户端进行连接的入系统的syslog中;
  -t  设置FTP客户端连接几分钟无操作就切断连接;
  -a  使wu-ftp使用/etc/ftpaccess的设定;
  -A  使wu-ftp不使用/etc/ftpaccess的设定;  
  -L  将FTP客户端连线后所执行的程序记录在系统的syslog中;
  -I  将FTP客户端上载文件的日志记录在/usr/adm.xferlog文件中将FTP客户端上载文件的日志记录在/usr/adm.xferlog文件中
  -o  将FTP客户端下载文件的日志记录在/usr/adm/xferlog文件中。
  文件/var/adm/messages中记录了用户访问ftp时的一些信息。
   
3. 设置ftp用户目录,缺省是/home/ftp,可以通过更改ftp用户的属性(修改/etc/passwd文件中的用户访问字段即可)来改变这个目录。

4. 编写/etc/ftpaccess文件对ftp服务加上限制
4.1 class anonclass anonymous *
  关键字class(定义一个类)表示本行描述ftp用户的访问方式以及允许访问的范围;第二字段包括:realusers(系统中注册的用户),guestusers(guest用户),anonusers(anonymous用户),local(局域用
户);第三字段(定义访问方式)包括:real,guest,anonymous;第三字段定义允许访问的范围,可以是‘*’表示任意,也可以是一个ip。guest用户存在很大的安全隐患,只有非local用户可以在网络的
任何地方建立ftp连接。
4.2 restricted-uid *   限制用户只能在指定的目录执行允许的操作。
4.3 message /etc/ftpd/welcome.msg login  
  当ftp用户发生某个动作时进行第二个字段指定的操作,第三个字段指定操作的名称,可以是cwd=*(*表示登陆的目录)也可以是象login(登陆时)这样的指定。
4.4 compress yes all
    tar      yes realusers
  允许压缩-解压模式,使用户可以通过服务器得到解压的版本。
4.5 chmod      no guest,anonymous
  delete     no guest,anonymous
  overwrite  no guest,anonymous
  rename     no guest,anonymous
    umask      no anonymous
  定义用户在ftp服务器上操作文件的权限。
4.6 log transfers anonymous,real inbound,outbound
  log指定用户在ftp服务器上的操作记录,第二字段指定的操作可以是commands,security,transfers等,第三字段指定不同访问方式的用户,第四字段指定记录方向(inbound-上传,outbound-下载,
可以为空)。
4.7 passwd-check trivial warn
  对匿名用户的口令进行校验,trival表示口令中至少有一个@符号,还可以选择的另外两个选项是none(不检查)和rfc822(必须是一个标准的email帐号);warn表示发现口令不合法时对用户产生警告
信息,但仍然允许登录,可以使用enforce选项表示一旦口令形式不合法就禁止登录。
4.8 upload  class=anonusers   *   *  no  nodirs
  定义上载方式,no/yes表示是否允许上传,nodirs/dirs表示是否允许自建上传目录。
  格式:upload  [根目录]  [上载目录]  [yes/no]  [用户]  [权限]  [dirs/nodirs]
  功能:对可以上载的目录进行更加详细的设置。
  实例:upload  /home/ftpd  *  no:表示在子目录/home/ftpd下不允许上载;
  upload  /home/ftpd  /bin  no:表示在子目录/home/ftpd/bin下不允许上载;
  upload  /home/ftpd  /etc  no:表示在子目录/home/ftpd/etc下不允许上载;
  upload  /home/ftpd  /pub  yes  real  0644 dirs:允许用服务器上的合法用户在子目录/home/ftpd/pub目录下能上载权限为0644(也就是-rw-r--r--)的文件,而且在这个目录下可以新建子目录。
  upload  /home/ftpd  /incoming  yes  real guest anonymous 0644 dirs:允许所有的用户在子目录/home/ftpd/incoming下能上载权限为0644的文件,而且在这个目录下可以新建子目录。  
4.9 limit-time        anonymous        30
    limit        anonusers        10        Wk0730-1800          /etc/ftpd/toomany.msg
  limit-time限制用户的在线时间,limit限制在线的用户数。实例:limit  remote  100  Any  /etc/ftpd/toomany.msg  在任何时间内,remote类的访问用户达到100人时,将不再允许无法产生新的
连接,当第101位客户要连接时,连接将失败,并向用户出示文件/etc/ftpd/toomany.msg的内容。
4.10 loginfails         3
  当用户登录到FTP服务器时,允许用户输错密码的次数。
4.11 private         no
  是否支持群组对文件的取用。
4.12 alias  [目录别名]  [目录名]
   功能:给指定目录设置一个别名,在切换目录时就可以使用较短的目录别名。
   实例:alias  inc: /incoming:为子目录incoming设置一个别名inc:。 格式:deny  [IP地址/域名]  [说明文件]
   功能:这个设置可以限制哪一些IP地址或域名的用户无法登入FTP服务器。
   实例:deny  *.com.tw  /etc/ftpd/deny.msg:设置凡是域名是以“.com.tw”结束的域名,都禁止其访问。而将/etc/ftpd/deny.msg的内容显示给用户看。
4.13 格式:deny  [IP地址/域名]  [说明文件]
   功能:这个设置可以限制哪一些IP地址或域名的用户无法登入FTP服务器。
   实例:deny  *.com.tw  /etc/ftpd/deny.msg:设置凡是域名是以“.com.tw”结束的域名,都禁止其访问。
   而将/etc/ftpd/deny.msg的内容显示给用户看。
4.14 path-filter anonymous /etc/ftpd/filename.msg ^[-A-Za-z0-9._]*$ ^[.-]
  文件路径名过虑对anonymous用互来说文件名可以是任意大小写字母,点和下划线的组合,但是点和下划线不能在文件名的开头。如果过滤失败则显示/etc/ftpd/deny.msg
4.15 banner         /etc/ftpd/banner.msg   
  显示机器当前配置情况cpu/hostid/EtherNet/内存
4.16 noretrieve             relative        class=anonusers         /
  禁止class指定的用户对某个目录文件的访问。第二个字段可以是absolute用以指定是相对还是绝对目录。例:noretrieve /etc/passwd 禁止任何用户对/etc/passwd的访问。
  allow-retrieve  relative        class=anonusers         /pub
  对应noretrieve。

4.17 greeting        brief readme        README*                cwd=*
     readme  README*     login
     readme  README*     cwd=*  
  任何README*将在用户登陆和转换目录时被列出。

5. /etc/init.d/ftpusers  列出禁止访问ftp的用户。设置/etc/ftphosts,禁止某些来自指定机器上的登录,如果你需要拒绝来自某些主机的登录,一种方法就是在/etc/ftpaccess中设置deny命令,另
一种更加简单的方法就是在/etc/ftphosts中写入你要禁止的主机的IP地址或域名。

6. 匿名用户的建立:在passwd中新增一个名为ftp的用户,最好再建立一个单独的名为ftp的用户组,其中只有一个用户ftp。参考4.1设置允许匿名访问的范围。

7. 使新的配置生效。一般的,对/etc/ftpaccess的配置是直接作用于设置后的下一次FTP服务进程,而其它的则要对inetd进程重新启动。命令#ps -eaf列出进程的详细信息,#kill -1 inetd-pid命令
使inetd重读配置文件而不用重起。#kill -9 inetd-pid命令杀死inetd进程,关闭ftp服务。# /usr/sbin/inetd -s命令启动ftp服务。
   kill命令用来向系统中的进程发送信号,这里用到的-1,-9分别代表SIGHUP(挂起),SIGKILL(杀死)。

8. 版本wu-ftpd,操作系统solaris9.

9. /usr/sbin下的关于ftp的可执行文件:tpconfig ftpcount ftprestart ftpshut ftpwho
   /var/run/ftp.pids

9. 在ftp目录下一般会建立几个子目录。
  /home/ftp/bin          存放一些供FTP用户使用的可执行文件
  /home/ftp/etc          存放一些供FTP用户使用的配置文件
  /home/ftp/pub          存放供下载的信息
  /home/ftp/incoming     存放供上载信息的空间

10. 管理wu-ftp的一些命令
10.1 连接数统计命令ftpcount可以统计出当前连接到FTP服务器上的用户数目,并且同时列出上限。命令输出如下所示:
  Service class local         0           Users(20maximum)
  Service class remote        5           Users(100maximum)
10.2 在线用户查看命令ftpwho可以列出当前连接的用户的详细情况。
10.3 FTP关闭文件生成命令ftpshut可以生成一个在/etc/ftpaccess中设置的shut.msg文件,用于关机设定。ftpshut命令的格式为:
  Ftpshut  <-l min>;  <-d min>;  time  <说明>;
  -l   这个参数设定在关闭FTP服务器功能前多少分钟时停止用户的连接;
  -d   这个参数设定在关闭FTP服务器功能前多少分钟时切断用户连接;
  time 指定关闭FTP服务器的时间。例如6:20分则写为0620;  

11.ftp内部命令
  ! 进入默认的shell
  $ 运行一个预先定义的宏
  account 向远程服务器发送帐户信息
  append 把服务器输出添加到一个文件中
  ascii 设置ascii传输模式。ASCII模式是默认的传输模式,用来传输文本文件。
  bell 当指定的命令完成后发出蜂鸣。循环执行,若在bell状态下再运行bell即停止bell。
  binary 设置二进制传输模式。一般用来传输二进制文件,象.zip文件、.gif文件和.Z文件。
  bye 终止FTP对话,从客户机断开。
  case 转换mget大写/小写映射。
  cd 改变远程工作目录。改变到指定的目录中。如果目录名不是当前目录的子目录就要输入路径。
  cdup 将远程工作目录转到父目录。
  close 终止FTP对话,但是不从客户机退出。
  delete 删除指定的远程文件。
  debug 转换/设置服务器的调试模式。
  dir 列出远程目录下的内容。
  disconnect 终止当前得FTP对话。
  form 设置文件传输格式为二进制或ASCII
  get 将文件从服务器下载到本地客户机。
  glob 转换本地文件名的元字符扩展
  hash 转换为每个传输的缓冲打印“#”。每1024字节传输后,在屏幕上显示一个“#”字符。这使FTP传送过程可以交互式地追踪。
  help给除FTP客户机中命令的本地帮助信息。
  lcd 改变本地工作目录到指定的目录中。
  ls 列出当前远程远程目录中的内容。
  macdef 交互式地定义一个宏。
  mdelete 指定删除多个文件(如:"mdelete *.txt"。
  mdir 一次列出多个远程目录的内容。
  mget 下载多个文件,文件名用通配符“*”指定。
  mkdir 在远程机器中建立一个相对于当前目录的子目录。
  mls 一次列出多个远程目录的内容。
  mode 将文件传输模式指定为ASCII或二进制。
  mput 把当地文件系统的多个文件上传到远程服务器。
  nmap 为默认文件名映射设定模板。
  ntrans 为默认文件名映射设定转换表。
  open 连接到一台远程服务器。
  prompt 强迫用多个命令来进行交互式提示。
  proxy 在替代连接中发出命令。
  sendport 转换每次数据连接的端口。
  put 每次上传一个文件。
  pwd 显示出当前远程机器上的工作目录。
  quit 终止FTP对话并退出。
  quote 发出任意的FTP命令。
  recv 接收文件。
  remotehelp 从远程服务器上得到帮助。
  rename 为文件该名。
  reset 清楚命令回应队列。
  rmdir 删除远程机器中的目录。
  runique 转换本地文件“store unique”标志。
  send 上传一个文件。
  status 显示当前状态。
  struct 设置文件传输结构。
  sunique 转换远程机器中的“store unique”标志。
  tenex 设置tenex文件传输形式。
  trace 转换数据包追踪。
  type 设置文件传输类型
  user 发送新用户信息。
  verbose 转换详细模式。
  ? 显示本地帮助信息。
  
  110 重新开始标记回复。
  120 服务在NNN分钟后就绪。
  125 数据连接已经打开;开始传输。
  150 文件状态错误。
  200 命令完成。
  202 命令没有被执行,站点忙。
  211 系统状态,或系统帮助回应。
  212 目录状态。
  213 文件状态。
  214 帮助信息。
  215 名字系统类型。
  220 新用户服务就绪。
  221 服务关闭控制连接。
  225 数据连接打开;没有传输进行。
  226 关闭数据连接。
  227 进入被动模式(h1,h2,h3,h4,p1,p2)。
  230 用户已登陆,继续。
  250 请求的文件行为成功完成。
  257 “PATHNAME”重复。
  331 用户名无误,需要密码。
  332 需要登陆的帐户。
  350 请求的文件行为需要更多的信息。
  421 服务不可用。
  425 不能打开数据连接。
  426 连接关闭;传输失败。
  450 请求的文件行为没有被接受。
  451 请求的文件行为失败。
  452 请求的行为没有被接受。
  500 语法错误未知的命令。
  501 参数或变量语法错误。
  502 命令没有被执行。
  503 命令次序错误。
  504 命令没有按参数执行。
  530 登陆失败。
  532 需要帐户来存储文件。
  550 请求的行为没有被接受。
  551 请求行为失败;页面类型未知。
  552 请求的文件行为失败。
  553 请求的行为没有被接受。
...全文
5 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复

435

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧