%!PS-Adobe-3.0
%%BoundingBox: 75 0 595 747
%%Title: Enscript Output
%%For: Magnus Thoang
%%Creator: GNU enscript 1.6.1
%%CreationDate: Wed Nov 12 12:26:07 2003
%%Orientation: Portrait
%%Pages: 15 0
%%DocumentMedia: A4 595 842 0 () ()
%%DocumentNeededResources: (atend)
%%EndComments
%%BeginProlog
%%BeginProcSet: PStoPS 1 15
userdict begin
[/showpage/erasepage/copypage]{dup where{pop dup load
 type/operatortype eq{1 array cvx dup 0 3 index cvx put
 bind def}{pop}ifelse}{pop}ifelse}forall
[/letter/legal/executivepage/a4/a4small/b5/com10envelope
 /monarchenvelope/c5envelope/dlenvelope/lettersmall/note
 /folio/quarto/a5]{dup where{dup wcheck{exch{}put}
 {pop{}def}ifelse}{pop}ifelse}forall
/setpagedevice {pop}bind 1 index where{dup wcheck{3 1 roll put}
 {pop def}ifelse}{def}ifelse
/PStoPSmatrix matrix currentmatrix def
/PStoPSxform matrix def/PStoPSclip{clippath}def
/defaultmatrix{PStoPSmatrix exch PStoPSxform exch concatmatrix}bind def
/initmatrix{matrix defaultmatrix setmatrix}bind def
/initclip[{matrix currentmatrix PStoPSmatrix setmatrix
 [{currentpoint}stopped{$error/newerror false put{newpath}}
 {/newpath cvx 3 1 roll/moveto cvx 4 array astore cvx}ifelse]
 {[/newpath cvx{/moveto cvx}{/lineto cvx}
 {/curveto cvx}{/closepath cvx}pathforall]cvx exch pop}
 stopped{$error/errorname get/invalidaccess eq{cleartomark
 $error/newerror false put cvx exec}{stop}ifelse}if}bind aload pop
 /initclip dup load dup type dup/operatortype eq{pop exch pop}
 {dup/arraytype eq exch/packedarraytype eq or
  {dup xcheck{exch pop aload pop}{pop cvx}ifelse}
  {pop cvx}ifelse}ifelse
 {newpath PStoPSclip clip newpath exec setmatrix} bind aload pop]cvx def
/initgraphics{initmatrix newpath initclip 1 setlinewidth
 0 setlinecap 0 setlinejoin []0 setdash 0 setgray
 10 setmiterlimit}bind def
end
%%EndProcSet
%%BeginResource: procset Enscript-Prolog 1.6 1
%
% Procedures.
%

/_S {	% save current state
  /_s save def
} def
/_R {	% restore from saved state
  _s restore
} def

/S {	% showpage protecting gstate
  gsave
  showpage
  grestore
} bind def

/MF {	% fontname newfontname -> -	make a new encoded font
  /newfontname exch def
  /fontname exch def

  /fontdict fontname findfont def
  /newfont fontdict maxlength dict def

  fontdict {
    exch
    dup /FID eq {
      % skip FID pair
      pop pop
    } {
      % copy to the new font dictionary
      exch newfont 3 1 roll put
    } ifelse
  } forall

  newfont /FontName newfontname put

  % insert only valid encoding vectors
  encoding_vector length 256 eq {
    newfont /Encoding encoding_vector put
  } if

  newfontname newfont definefont pop
} def

/SF { % fontname width height -> -	set a new font
  /height exch def
  /width exch def

  findfont
  [width 0 0 height 0 0] makefont setfont
} def

/SUF { % fontname width height -> -	set a new user font
  /height exch def
  /width exch def

  /F-gs-user-font MF
  /F-gs-user-font width height SF
} def

/M {moveto} bind def
/s {show} bind def

/Box {	% x y w h -> -			define box path
  /d_h exch def /d_w exch def /d_y exch def /d_x exch def
  d_x d_y  moveto
  d_w 0 rlineto
  0 d_h rlineto
  d_w neg 0 rlineto
  closepath
} def

/bgs {	% x y height blskip gray str -> -	show string with bg color
  /str exch def
  /gray exch def
  /blskip exch def
  /height exch def
  /y exch def
  /x exch def

  gsave
    x y blskip sub str stringwidth pop height Box
    gray setgray
    fill
  grestore
  x y M str s
} def

% Highlight bars.
/highlight_bars {	% nlines lineheight output_y_margin gray -> -
  gsave
    setgray
    /ymarg exch def
    /lineheight exch def
    /nlines exch def

    % This 2 is just a magic number to sync highlight lines to text.
    0 d_header_y ymarg sub 2 sub translate

    /cw d_output_w cols div def
    /nrows d_output_h ymarg 2 mul sub lineheight div cvi def

    % for each column
    0 1 cols 1 sub {
      cw mul /xp exch def

      % for each rows
      0 1 nrows 1 sub {
        /rn exch def
        rn lineheight mul neg /yp exch def
        rn nlines idiv 2 mod 0 eq {
	  % Draw highlight bar.  4 is just a magic indentation.
	  xp 4 add yp cw 8 sub lineheight neg Box fill
	} if
      } for
    } for

  grestore
} def

% Line highlight bar.
/line_highlight {	% x y width height gray -> -
  gsave
    /gray exch def
    Box gray setgray fill
  grestore
} def

% Column separator lines.
/column_lines {
  gsave
    .1 setlinewidth
    0 d_footer_h translate
    /cw d_output_w cols div def
    1 1 cols 1 sub {
      cw mul 0 moveto
      0 d_output_h rlineto stroke
    } for
  grestore
} def

% Column borders.
/column_borders {
  gsave
    .1 setlinewidth
    0 d_footer_h moveto
    0 d_output_h rlineto
    d_output_w 0 rlineto
    0 d_output_h neg rlineto
    closepath stroke
  grestore
} def

% Do the actual underlay drawing
/draw_underlay {
  ul_style 0 eq {
    ul_str true charpath stroke
  } {
    ul_str show
  } ifelse
} def

% Underlay
/underlay {	% - -> -
  gsave
    0 d_page_h translate
    d_page_h neg d_page_w atan rotate

    ul_gray setgray
    ul_font setfont
    /dw d_page_h dup mul d_page_w dup mul add sqrt def
    ul_str stringwidth pop dw exch sub 2 div ul_h_ptsize -2 div moveto
    draw_underlay
  grestore
} def

/user_underlay {	% - -> -
  gsave
    ul_x ul_y translate
    ul_angle rotate
    ul_gray setgray
    ul_font setfont
    0 0 ul_h_ptsize 2 div sub moveto
    draw_underlay
  grestore
} def

% Page prefeed
/page_prefeed {		% bool -> -
  statusdict /prefeed known {
    statusdict exch /prefeed exch put
  } {
    pop
  } ifelse
} def

% Wrapped line markers
/wrapped_line_mark {	% x y charwith charheight type -> -
  /type exch def
  /h exch def
  /w exch def
  /y exch def
  /x exch def

  type 2 eq {
    % Black boxes (like TeX does)
    gsave
      0 setlinewidth
      x w 4 div add y M
      0 h rlineto w 2 div 0 rlineto 0 h neg rlineto
      closepath fill
    grestore
  } {
    type 3 eq {
      % Small arrows
      gsave
        .2 setlinewidth
        x w 2 div add y h 2 div add M
        w 4 div 0 rlineto
        x w 4 div add y lineto stroke

        x w 4 div add w 8 div add y h 4 div add M
        x w 4 div add y lineto
	w 4 div h 8 div rlineto stroke
      grestore
    } {
      % do nothing
    } ifelse
  } ifelse
} def

% EPSF import.

/BeginEPSF {
  /b4_Inc_state save def    		% Save state for cleanup
  /dict_count countdictstack def	% Count objects on dict stack
  /op_count count 1 sub def		% Count objects on operand stack
  userdict begin
  /showpage { } def
  0 setgray 0 setlinecap
  1 setlinewidth 0 setlinejoin
  10 setmiterlimit [ ] 0 setdash newpath
  /languagelevel where {
    pop languagelevel
    1 ne {
      false setstrokeadjust false setoverprint
    } if
  } if
} bind def

/EndEPSF {
  count op_count sub { pos } repeat	% Clean up stacks
  countdictstack dict_count sub { end } repeat
  b4_Inc_state restore
} bind def

% Check PostScript language level.
/languagelevel where {
  pop /gs_languagelevel languagelevel def
} {
  /gs_languagelevel 1 def
} ifelse
%%EndResource
%%BeginResource: procset Enscript-Encoding-88591 1.6 1
/encoding_vector [
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/space        	/exclam       	/quotedbl     	/numbersign   	
/dollar       	/percent      	/ampersand    	/quoteright   	
/parenleft    	/parenright   	/asterisk     	/plus         	
/comma        	/hyphen       	/period       	/slash        	
/zero         	/one          	/two          	/three        	
/four         	/five         	/six          	/seven        	
/eight        	/nine         	/colon        	/semicolon    	
/less         	/equal        	/greater      	/question     	
/at           	/A            	/B            	/C            	
/D            	/E            	/F            	/G            	
/H            	/I            	/J            	/K            	
/L            	/M            	/N            	/O            	
/P            	/Q            	/R            	/S            	
/T            	/U            	/V            	/W            	
/X            	/Y            	/Z            	/bracketleft  	
/backslash    	/bracketright 	/asciicircum  	/underscore   	
/quoteleft    	/a            	/b            	/c            	
/d            	/e            	/f            	/g            	
/h            	/i            	/j            	/k            	
/l            	/m            	/n            	/o            	
/p            	/q            	/r            	/s            	
/t            	/u            	/v            	/w            	
/x            	/y            	/z            	/braceleft    	
/bar          	/braceright   	/tilde        	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/.notdef      	/.notdef      	/.notdef      	/.notdef      	
/space        	/exclamdown   	/cent         	/sterling     	
/currency     	/yen          	/brokenbar    	/section      	
/dieresis     	/copyright    	/ordfeminine  	/guillemotleft	
/logicalnot   	/hyphen       	/registered   	/macron       	
/degree       	/plusminus    	/twosuperior  	/threesuperior	
/acute        	/mu           	/paragraph    	/bullet       	
/cedilla      	/onesuperior  	/ordmasculine 	/guillemotright	
/onequarter   	/onehalf      	/threequarters	/questiondown 	
/Agrave       	/Aacute       	/Acircumflex  	/Atilde       	
/Adieresis    	/Aring        	/AE           	/Ccedilla     	
/Egrave       	/Eacute       	/Ecircumflex  	/Edieresis    	
/Igrave       	/Iacute       	/Icircumflex  	/Idieresis    	
/Eth          	/Ntilde       	/Ograve       	/Oacute       	
/Ocircumflex  	/Otilde       	/Odieresis    	/multiply     	
/Oslash       	/Ugrave       	/Uacute       	/Ucircumflex  	
/Udieresis    	/Yacute       	/Thorn        	/germandbls   	
/agrave       	/aacute       	/acircumflex  	/atilde       	
/adieresis    	/aring        	/ae           	/ccedilla     	
/egrave       	/eacute       	/ecircumflex  	/edieresis    	
/igrave       	/iacute       	/icircumflex  	/idieresis    	
/eth          	/ntilde       	/ograve       	/oacute       	
/ocircumflex  	/otilde       	/odieresis    	/divide       	
/oslash       	/ugrave       	/uacute       	/ucircumflex  	
/udieresis    	/yacute       	/thorn        	/ydieresis    	
] def
%%EndResource
%%EndProlog
%%BeginSetup
%%IncludeResource: font Courier-Bold
%%IncludeResource: font Courier
/HFpt_w 10 def
/HFpt_h 10 def
/Courier-Bold /HF-gs-font MF
/HF /HF-gs-font findfont [HFpt_w 0 0 HFpt_h 0 0] makefont def
/Courier /F-gs-font MF
/F-gs-font 10 10 SF
/#copies 1 def
/d_page_w 520 def
/d_page_h 747 def
/d_header_x 0 def
/d_header_y 747 def
/d_header_w 520 def
/d_header_h 0 def
/d_footer_x 0 def
/d_footer_y 0 def
/d_footer_w 520 def
/d_footer_h 0 def
/d_output_w 520 def
/d_output_h 747 def
/cols 1 def
userdict/PStoPSxform PStoPSmatrix matrix currentmatrix
 matrix invertmatrix matrix concatmatrix
 matrix invertmatrix put
%%EndSetup
%%Page: (0,1) 1
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 0.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
/showpage{}def/copypage{}def/erasepage{}def
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 1 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 701 M
(Network Working Group                                          T. Ylonen) s
5 690 M
(Internet-Draft                                               S. Lehtinen) s
5 679 M
(Expires: April 1, 2002                  SSH Communications Security Corp) s
5 668 M
(                                                            October 2001) s
5 635 M
(                       SSH File Transfer Protocol) s
5 624 M
(                    draft-ietf-secsh-filexfer-02.txt) s
5 602 M
(Status of this Memo) s
5 580 M
(   This document is an Internet-Draft and is in full conformance with) s
5 569 M
(   all provisions of Section 10 of RFC2026.) s
5 547 M
(   Internet-Drafts are working documents of the Internet Engineering) s
5 536 M
(   Task Force \(IETF\), its areas, and its working groups.  Note that) s
5 525 M
(   other groups may also distribute working documents as Internet-) s
5 514 M
(   Drafts.) s
5 492 M
(   Internet-Drafts are draft documents valid for a maximum of six months) s
5 481 M
(   and may be updated, replaced, or obsoleted by other documents at any) s
5 470 M
(   time.  It is inappropriate to use Internet-Drafts as reference) s
5 459 M
(   material or to cite them other than as "work in progress.") s
5 437 M
(   The list of current Internet-Drafts can be accessed at http://) s
5 426 M
(   www.ietf.org/ietf/1id-abstracts.txt.) s
5 404 M
(   The list of Internet-Draft Shadow Directories can be accessed at) s
5 393 M
(   http://www.ietf.org/shadow.html.) s
5 371 M
(   This Internet-Draft will expire on April 1, 2002.) s
5 349 M
(Copyright Notice) s
5 327 M
(   Copyright \(C\) The Internet Society \(2001\).  All Rights Reserved.) s
5 305 M
(Abstract) s
5 283 M
(   The SSH File Transfer Protocol provides secure file transfer) s
5 272 M
(   functionality over any reliable data stream.  It is the standard file) s
5 261 M
(   transfer protocol for use with the SSH2 protocol.  This document) s
5 250 M
(   describes the file transfer protocol and its interface to the SSH2) s
5 239 M
(   protocol suite.) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                 [Page 1]) s
_R
S
PStoPSsaved restore
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 421.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 2 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(Table of Contents) s
5 668 M
(   1.   Introduction . . . . . . . . . . . . . . . . . . . . . . . .   3) s
5 657 M
(   2.   Use with the SSH Connection Protocol . . . . . . . . . . . .   4) s
5 646 M
(   3.   General Packet Format  . . . . . . . . . . . . . . . . . . .   5) s
5 635 M
(   4.   Protocol Initialization  . . . . . . . . . . . . . . . . . .   7) s
5 624 M
(   5.   File Attributes  . . . . . . . . . . . . . . . . . . . . . .   8) s
5 613 M
(   6.   Requests From the Client to the Server . . . . . . . . . . .  10) s
5 602 M
(   6.1  Request Synchronization and Reordering . . . . . . . . . . .  10) s
5 591 M
(   6.2  File Names . . . . . . . . . . . . . . . . . . . . . . . . .  11) s
5 580 M
(   6.3  Opening, Creating, and Closing Files . . . . . . . . . . . .  11) s
5 569 M
(   6.4  Reading and Writing  . . . . . . . . . . . . . . . . . . . .  13) s
5 558 M
(   6.5  Removing and Renaming Files  . . . . . . . . . . . . . . . .  14) s
5 547 M
(   6.6  Creating and Deleting Directories  . . . . . . . . . . . . .  15) s
5 536 M
(   6.7  Scanning Directories . . . . . . . . . . . . . . . . . . . .  15) s
5 525 M
(   6.8  Retrieving File Attributes . . . . . . . . . . . . . . . . .  16) s
5 514 M
(   6.9  Setting File Attributes  . . . . . . . . . . . . . . . . . .  17) s
5 503 M
(   6.10 Dealing with Symbolic links  . . . . . . . . . . . . . . . .  18) s
5 492 M
(   6.11 Canonicalizing the Server-Side Path Name . . . . . . . . . .  18) s
5 481 M
(   7.   Responses from the Server to the Client  . . . . . . . . . .  20) s
5 470 M
(   8.   Vendor-Specific Extensions . . . . . . . . . . . . . . . . .  24) s
5 459 M
(   9.   Security Considerations  . . . . . . . . . . . . . . . . . .  25) s
5 448 M
(   10.  Changes from previous protocol versions  . . . . . . . . . .  26) s
5 437 M
(   10.1 Changes between versions 3 and 2 . . . . . . . . . . . . . .  26) s
5 426 M
(   10.2 Changes between versions 2 and 1 . . . . . . . . . . . . . .  26) s
5 415 M
(   10.3 Changes between versions 1 and 0 . . . . . . . . . . . . . .  26) s
5 404 M
(   11.  Trademark Issues . . . . . . . . . . . . . . . . . . . . . .  27) s
5 393 M
(        References . . . . . . . . . . . . . . . . . . . . . . . . .  28) s
5 382 M
(        Authors' Addresses . . . . . . . . . . . . . . . . . . . . .  28) s
5 371 M
(        Full Copyright Statement . . . . . . . . . . . . . . . . . .  29) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                 [Page 2]) s
_R
S
PStoPSsaved restore
%%Page: (2,3) 2
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 0.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
/showpage{}def/copypage{}def/erasepage{}def
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 3 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(1. Introduction) s
5 668 M
(   This protocol provides secure file transfer \(and more generally file) s
5 657 M
(   system access\) functionality over a reliable data stream, such as a) s
5 646 M
(   channel in the SSH2 protocol [3].) s
5 624 M
(   This protocol is designed so that it could be used to implement a) s
5 613 M
(   secure remote file system service, as well as a secure file transfer) s
5 602 M
(   service.) s
5 580 M
(   This protocol assumes that it runs over a secure channel, and that) s
5 569 M
(   the server has already authenticated the user at the client end, and) s
5 558 M
(   that the identity of the client user is externally available to the) s
5 547 M
(   server implementation.) s
5 525 M
(   In general, this protocol follows a simple request-response model.) s
5 514 M
(   Each request and response contains a sequence number and multiple) s
5 503 M
(   requests may be pending simultaneously.  There are a relatively large) s
5 492 M
(   number of different request messages, but a small number of possible) s
5 481 M
(   response messages.  Each request has one or more response messages) s
5 470 M
(   that may be returned in result \(e.g., a read either returns data or) s
5 459 M
(   reports error status\).) s
5 437 M
(   The packet format descriptions in this specification follow the) s
5 426 M
(   notation presented in the secsh architecture draft.[3].) s
5 404 M
(   Even though this protocol is described in the context of the SSH2) s
5 393 M
(   protocol, this protocol is general and independent of the rest of the) s
5 382 M
(   SSH2 protocol suite.  It could be used in a number of different) s
5 371 M
(   applications, such as secure file transfer over TLS RFC 2246 [1] and) s
5 360 M
(   transfer of management information in VPN applications.) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                 [Page 3]) s
_R
S
PStoPSsaved restore
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 421.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 4 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(2. Use with the SSH Connection Protocol) s
5 668 M
(   When used with the SSH2 Protocol suite, this protocol is intended to) s
5 657 M
(   be used from the SSH Connection Protocol [5] as a subsystem, as) s
5 646 M
(   described in section ``Starting a Shell or a Command''.  The) s
5 635 M
(   subsystem name used with this protocol is "sftp".) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                 [Page 4]) s
_R
S
PStoPSsaved restore
%%Page: (4,5) 3
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 0.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
/showpage{}def/copypage{}def/erasepage{}def
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 5 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(3. General Packet Format) s
5 668 M
(    All packets transmitted over the secure connection are of the) s
5 657 M
(   following format:) s
5 635 M
(        uint32             length) s
5 624 M
(        byte               type) s
5 613 M
(        byte[length - 1]   data payload) s
5 591 M
(   That is, they are just data preceded by 32-bit length and 8-bit type) s
5 580 M
(   fields.  The `length' is the length of the data area, and does not) s
5 569 M
(   include the `length' field itself.  The format and interpretation of) s
5 558 M
(   the data area depends on the packet type.) s
5 536 M
(   All packet descriptions below only specify the packet type and the) s
5 525 M
(   data that goes into the data field.  Thus, they should be prefixed by) s
5 514 M
(   the `length' and `type' fields.) s
5 492 M
(   The maximum size of a packet is in practice determined by the client) s
5 481 M
(   \(the maximum size of read or write requests that it sends, plus a few) s
5 470 M
(   bytes of packet overhead\).  All servers SHOULD support packets of at) s
5 459 M
(   least 34000 bytes \(where the packet size refers to the full length,) s
5 448 M
(   including the header above\).  This should allow for reads and writes) s
5 437 M
(   of at most 32768 bytes.) s
5 415 M
(   There is no limit on the number of outstanding \(non-acknowledged\)) s
5 404 M
(   requests that the client may send to the server.  In practice this is) s
5 393 M
(   limited by the buffering available on the data stream and the queuing) s
5 382 M
(   performed by the server.  If the server's queues are full, it should) s
5 371 M
(   not read any more data from the stream, and flow control will prevent) s
5 360 M
(   the client from sending more requests.  Note, however, that while) s
5 349 M
(   there is no restriction on the protocol level, the client's API may) s
5 338 M
(   provide a limit in order to prevent infinite queuing of outgoing) s
5 327 M
(   requests at the client.) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                 [Page 5]) s
_R
S
PStoPSsaved restore
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 421.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 6 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(   The following values are defined for packet types.) s
5 668 M
(        #define SSH_FXP_INIT                1) s
5 657 M
(        #define SSH_FXP_VERSION             2) s
5 646 M
(        #define SSH_FXP_OPEN                3) s
5 635 M
(        #define SSH_FXP_CLOSE               4) s
5 624 M
(        #define SSH_FXP_READ                5) s
5 613 M
(        #define SSH_FXP_WRITE               6) s
5 602 M
(        #define SSH_FXP_LSTAT               7) s
5 591 M
(        #define SSH_FXP_FSTAT               8) s
5 580 M
(        #define SSH_FXP_SETSTAT             9) s
5 569 M
(        #define SSH_FXP_FSETSTAT           10) s
5 558 M
(        #define SSH_FXP_OPENDIR            11) s
5 547 M
(        #define SSH_FXP_READDIR            12) s
5 536 M
(        #define SSH_FXP_REMOVE             13) s
5 525 M
(        #define SSH_FXP_MKDIR              14) s
5 514 M
(        #define SSH_FXP_RMDIR              15) s
5 503 M
(        #define SSH_FXP_REALPATH           16) s
5 492 M
(        #define SSH_FXP_STAT               17) s
5 481 M
(        #define SSH_FXP_RENAME             18) s
5 470 M
(        #define SSH_FXP_READLINK           19) s
5 459 M
(        #define SSH_FXP_SYMLINK            20) s
5 448 M
(        #define SSH_FXP_STATUS            101) s
5 437 M
(        #define SSH_FXP_HANDLE            102) s
5 426 M
(        #define SSH_FXP_DATA              103) s
5 415 M
(        #define SSH_FXP_NAME              104) s
5 404 M
(        #define SSH_FXP_ATTRS             105) s
5 393 M
(        #define SSH_FXP_EXTENDED          200) s
5 382 M
(        #define SSH_FXP_EXTENDED_REPLY    201) s
5 360 M
(   Additional packet types should only be defined if the protocol) s
5 349 M
(   version number \(see Section ``Protocol Initialization''\) is) s
5 338 M
(   incremented, and their use MUST be negotiated using the version) s
5 327 M
(   number.  However, the SSH_FXP_EXTENDED and SSH_FXP_EXTENDED_REPLY) s
5 316 M
(   packets can be used to implement vendor-specific extensions.  See) s
5 305 M
(   Section ``Vendor-Specific-Extensions'' for more details.) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                 [Page 6]) s
_R
S
PStoPSsaved restore
%%Page: (6,7) 4
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 0.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
/showpage{}def/copypage{}def/erasepage{}def
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 7 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(4. Protocol Initialization) s
5 668 M
(   When the file transfer protocol starts, it first sends a SSH_FXP_INIT) s
5 657 M
(   \(including its version number\) packet to the server.  The server) s
5 646 M
(   responds with a SSH_FXP_VERSION packet, supplying the lowest of its) s
5 635 M
(   own and the client's version number.  Both parties should from then) s
5 624 M
(   on adhere to particular version of the protocol.) s
5 602 M
(   The SSH_FXP_INIT packet \(from client to server\) has the following) s
5 591 M
(   data:) s
5 569 M
(        uint32 version) s
5 558 M
(        <extension data>) s
5 536 M
(    The SSH_FXP_VERSION packet \(from server to client\) has the following) s
5 525 M
(   data:) s
5 503 M
(        uint32 version) s
5 492 M
(        <extension data>) s
5 470 M
(   The version number of the protocol specified in this document is 3.) s
5 459 M
(   The version number should be incremented for each incompatible) s
5 448 M
(   revision of this protocol.) s
5 426 M
(    The extension data in the above packets may be empty, or may be a) s
5 415 M
(   sequence of) s
5 393 M
(        string extension_name) s
5 382 M
(        string extension_data) s
5 360 M
(   pairs \(both strings MUST always be present if one is, but the) s
5 349 M
(   `extension_data' string may be of zero length\).  If present, these) s
5 338 M
(   strings indicate extensions to the baseline protocol.  The) s
5 327 M
(   `extension_name' field\(s\) identify the name of the extension.  The) s
5 316 M
(   name should be of the form "name@domain", where the domain is the DNS) s
5 305 M
(   domain name of the organization defining the extension.  Additional) s
5 294 M
(   names that are not of this format may be defined later by the IETF.) s
5 283 M
(   Implementations MUST silently ignore any extensions whose name they) s
5 272 M
(   do not recognize.) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                 [Page 7]) s
_R
S
PStoPSsaved restore
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 421.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 8 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(5. File Attributes) s
5 668 M
(   A new compound data type is defined for encoding file attributes.  It) s
5 657 M
(   is basically just a combination of elementary types, but is defined) s
5 646 M
(   once because of the non-trivial description of the fields and to) s
5 635 M
(   ensure maintainability.) s
5 613 M
(   The same encoding is used both when returning file attributes from) s
5 602 M
(   the server and when sending file attributes to the server.  When) s
5 591 M
(   sending it to the server, the flags field specifies which attributes) s
5 580 M
(   are included, and the server will use default values for the) s
5 569 M
(   remaining attributes \(or will not modify the values of remaining) s
5 558 M
(   attributes\).  When receiving attributes from the server, the flags) s
5 547 M
(   specify which attributes are included in the returned data.  The) s
5 536 M
(   server normally returns all attributes it knows about.) s
5 514 M
(        uint32   flags) s
5 503 M
(        uint64   size           present only if flag SSH_FILEXFER_ATTR_SIZE) s
5 492 M
(        uint32   uid            present only if flag SSH_FILEXFER_ATTR_UIDGID) s
5 481 M
(        uint32   gid            present only if flag SSH_FILEXFER_ATTR_UIDGID) s
5 470 M
(        uint32   permissions    present only if flag SSH_FILEXFER_ATTR_PERMISSIONS) s
5 459 M
(        uint32   atime          present only if flag SSH_FILEXFER_ACMODTIME) s
5 448 M
(        uint32   mtime          present only if flag SSH_FILEXFER_ACMODTIME) s
5 437 M
(        uint32   extended_count present only if flag SSH_FILEXFER_ATTR_EXTENDED) s
5 426 M
(        string   extended_type) s
5 415 M
(        string   extended_data) s
5 404 M
(        ...      more extended data \(extended_type - extended_data pairs\),) s
5 393 M
(                   so that number of pairs equals extended_count) s
5 371 M
(   The `flags' specify which of the fields are present.  Those fields) s
5 360 M
(   for which the corresponding flag is not set are not present \(not) s
5 349 M
(   included in the packet\).  New flags can only be added by incrementing) s
5 338 M
(   the protocol version number \(or by using the extension mechanism) s
5 327 M
(   described below\).) s
5 305 M
(   The `size' field specifies the size of the file in bytes.) s
5 283 M
(   The `uid' and `gid' fields contain numeric Unix-like user and group) s
5 272 M
(   identifiers, respectively.) s
5 250 M
(   The `permissions' field contains a bit mask of file permissions as) s
5 239 M
(   defined by posix [1].) s
5 217 M
(   The `atime' and `mtime' contain the access and modification times of) s
5 206 M
(   the files, respectively.  They are represented as seconds from Jan 1,) s
5 195 M
(   1970 in UTC.) s
5 173 M
(   The SSH_FILEXFER_ATTR_EXTENDED flag provides a general extension) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                 [Page 8]) s
_R
S
PStoPSsaved restore
%%Page: (8,9) 5
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 0.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
/showpage{}def/copypage{}def/erasepage{}def
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 9 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(   mechanism for vendor-specific extensions.  If the flag is specified,) s
5 679 M
(   then the `extended_count' field is present.  It specifies the number) s
5 668 M
(   of extended_type-extended_data pairs that follow.  Each of these) s
5 657 M
(   pairs specifies an extended attribute.  For each of the attributes,) s
5 646 M
(   the extended_type field should be a string of the format) s
5 635 M
(   "name@domain", where "domain" is a valid, registered domain name and) s
5 624 M
(   "name" identifies the method.  The IETF may later standardize certain) s
5 613 M
(   names that deviate from this format \(e.g., that do not contain the) s
5 602 M
(   "@" sign\).  The interpretation of `extended_data' depends on the) s
5 591 M
(   type.  Implementations SHOULD ignore extended data fields that they) s
5 580 M
(   do not understand.) s
5 558 M
(   Additional fields can be added to the attributes by either defining) s
5 547 M
(   additional bits to the flags field to indicate their presence, or by) s
5 536 M
(   defining extended attributes for them.  The extended attributes) s
5 525 M
(   mechanism is recommended for most purposes; additional flags bits) s
5 514 M
(   should only be defined by an IETF standards action that also) s
5 503 M
(   increments the protocol version number.  The use of such new fields) s
5 492 M
(   MUST be negotiated by the version number in the protocol exchange.) s
5 481 M
(   It is a protocol error if a packet with unsupported protocol bits is) s
5 470 M
(   received.) s
5 448 M
(    The flags bits are defined to have the following values:) s
5 426 M
(        #define SSH_FILEXFER_ATTR_SIZE          0x00000001) s
5 415 M
(        #define SSH_FILEXFER_ATTR_UIDGID        0x00000002) s
5 404 M
(        #define SSH_FILEXFER_ATTR_PERMISSIONS   0x00000004) s
5 393 M
(        #define SSH_FILEXFER_ATTR_ACMODTIME     0x00000008) s
5 382 M
(        #define SSH_FILEXFER_ATTR_EXTENDED      0x80000000) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                 [Page 9]) s
_R
S
PStoPSsaved restore
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 421.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 10 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(6. Requests From the Client to the Server) s
5 668 M
(   Requests from the client to the server represent the various file) s
5 657 M
(   system operations.  Each request begins with an `id' field, which is) s
5 646 M
(   a 32-bit identifier identifying the request \(selected by the client\).) s
5 635 M
(   The same identifier will be returned in the response to the request.) s
5 624 M
(   One possible implementation of it is a monotonically increasing) s
5 613 M
(   request sequence number \(modulo 2^32\).) s
5 591 M
(   Many operations in the protocol operate on open files.  The) s
5 580 M
(   SSH_FXP_OPEN request can return a file handle \(which is an opaque) s
5 569 M
(   variable-length string\) which may be used to access the file later) s
5 558 M
(   \(e.g.  in a read operation\).  The client MUST NOT send requests the) s
5 547 M
(   server with bogus or closed handles.  However, the server MUST) s
5 536 M
(   perform adequate checks on the handle in order to avoid security) s
5 525 M
(   risks due to fabricated handles.) s
5 503 M
(   This design allows either stateful and stateless server) s
5 492 M
(   implementation, as well as an implementation which caches state) s
5 481 M
(   between requests but may also flush it.  The contents of the file) s
5 470 M
(   handle string are entirely up to the server and its design.  The) s
5 459 M
(   client should not modify or attempt to interpret the file handle) s
5 448 M
(   strings.) s
5 426 M
(   The file handle strings MUST NOT be longer than 256 bytes.) s
5 404 M
(6.1 Request Synchronization and Reordering) s
5 382 M
(   The protocol and implementations MUST process requests relating to) s
5 371 M
(   the same file in the order in which they are received.  In other) s
5 360 M
(   words, if an application submits multiple requests to the server, the) s
5 349 M
(   results in the responses will be the same as if it had sent the) s
5 338 M
(   requests one at a time and waited for the response in each case.  For) s
5 327 M
(   example, the server may process non-overlapping read/write requests) s
5 316 M
(   to the same file in parallel, but overlapping reads and writes cannot) s
5 305 M
(   be reordered or parallelized.  However, there are no ordering) s
5 294 M
(   restrictions on the server for processing requests from two different) s
5 283 M
(   file transfer connections.  The server may interleave and parallelize) s
5 272 M
(   them at will.) s
5 250 M
(   There are no restrictions on the order in which responses to) s
5 239 M
(   outstanding requests are delivered to the client, except that the) s
5 228 M
(   server must ensure fairness in the sense that processing of no) s
5 217 M
(   request will be indefinitely delayed even if the client is sending) s
5 206 M
(   other requests so that there are multiple outstanding requests all) s
5 195 M
(   the time.) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 10]) s
_R
S
PStoPSsaved restore
%%Page: (10,11) 6
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 0.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
/showpage{}def/copypage{}def/erasepage{}def
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 11 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(6.2 File Names) s
5 668 M
(   This protocol represents file names as strings.  File names are) s
5 657 M
(   assumed to use the slash \('/'\) character as a directory separator.) s
5 635 M
(   File names starting with a slash are "absolute", and are relative to) s
5 624 M
(   the root of the file system.  Names starting with any other character) s
5 613 M
(   are relative to the user's default directory \(home directory\).  Note) s
5 602 M
(   that identifying the user is assumed to take place outside of this) s
5 591 M
(   protocol.) s
5 569 M
(   Servers SHOULD interpret a path name component ".." as referring to) s
5 558 M
(   the parent directory, and "." as referring to the current directory.) s
5 547 M
(   If the server implementation limits access to certain parts of the) s
5 536 M
(   file system, it must be extra careful in parsing file names when) s
5 525 M
(   enforcing such restrictions.  There have been numerous reported) s
5 514 M
(   security bugs where a ".." in a path name has allowed access outside) s
5 503 M
(   the intended area.) s
5 481 M
(   An empty path name is valid, and it refers to the user's default) s
5 470 M
(   directory \(usually the user's home directory\).) s
5 448 M
(   Otherwise, no syntax is defined for file names by this specification.) s
5 437 M
(   Clients should not make any other assumptions; however, they can) s
5 426 M
(   splice path name components returned by SSH_FXP_READDIR together) s
5 415 M
(   using a slash \('/'\) as the separator, and that will work as expected.) s
5 393 M
(   It is understood that the lack of well-defined semantics for file) s
5 382 M
(   names may cause interoperability problems between clients and servers) s
5 371 M
(   using radically different operating systems.  However, this approach) s
5 360 M
(   is known to work acceptably with most systems, and alternative) s
5 349 M
(   approaches that e.g.  treat file names as sequences of structured) s
5 338 M
(   components are quite complicated.) s
5 316 M
(6.3 Opening, Creating, and Closing Files) s
5 294 M
(    Files are opened and created using the SSH_FXP_OPEN message, whose) s
5 283 M
(   data part is as follows:) s
5 261 M
(        uint32        id) s
5 250 M
(        string        filename) s
5 239 M
(        uint32        pflags) s
5 228 M
(        ATTRS         attrs) s
5 206 M
(   The `id' field is the request identifier as for all requests.) s
5 184 M
(   The `filename' field specifies the file name.  See Section ``File) s
5 173 M
(   Names'' for more information.) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 11]) s
_R
S
PStoPSsaved restore
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 421.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 12 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(    The `pflags' field is a bitmask.  The following bits have been) s
5 679 M
(   defined.) s
5 657 M
(        #define SSH_FXF_READ            0x00000001) s
5 646 M
(        #define SSH_FXF_WRITE           0x00000002) s
5 635 M
(        #define SSH_FXF_APPEND          0x00000004) s
5 624 M
(        #define SSH_FXF_CREAT           0x00000008) s
5 613 M
(        #define SSH_FXF_TRUNC           0x00000010) s
5 602 M
(        #define SSH_FXF_EXCL            0x00000020) s
5 580 M
(   These have the following meanings:) s
5 558 M
(   SSH_FXF_READ) s
5 547 M
(      Open the file for reading.) s
5 525 M
(   SSH_FXF_WRITE) s
5 514 M
(      Open the file for writing.  If both this and SSH_FXF_READ are) s
5 503 M
(      specified, the file is opened for both reading and writing.) s
5 481 M
(   SSH_FXF_APPEND) s
5 470 M
(      Force all writes to append data at the end of the file.) s
5 448 M
(   SSH_FXF_CREAT) s
5 437 M
(      If this flag is specified, then a new file will be created if one) s
5 426 M
(      does not already exist \(if O_TRUNC is specified, the new file will) s
5 415 M
(      be truncated to zero length if it previously exists\).) s
5 393 M
(   SSH_FXF_TRUNC) s
5 382 M
(      Forces an existing file with the same name to be truncated to zero) s
5 371 M
(      length when creating a file by specifying SSH_FXF_CREAT.) s
5 360 M
(      SSH_FXF_CREAT MUST also be specified if this flag is used.) s
5 338 M
(   SSH_FXF_EXCL) s
5 327 M
(      Causes the request to fail if the named file already exists.) s
5 316 M
(      SSH_FXF_CREAT MUST also be specified if this flag is used.) s
5 294 M
(   The `attrs' field specifies the initial attributes for the file.) s
5 283 M
(   Default values will be used for those attributes that are not) s
5 272 M
(   specified.  See Section ``File Attributes'' for more information.) s
5 250 M
(   Regardless the server operating system, the file will always be) s
5 239 M
(   opened in "binary" mode \(i.e., no translations between different) s
5 228 M
(   character sets and newline encodings\).) s
5 206 M
(   The response to this message will be either SSH_FXP_HANDLE \(if the) s
5 195 M
(   operation is successful\) or SSH_FXP_STATUS \(if the operation fails\).) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 12]) s
_R
S
PStoPSsaved restore
%%Page: (12,13) 7
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 0.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
/showpage{}def/copypage{}def/erasepage{}def
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 13 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(    A file is closed by using the SSH_FXP_CLOSE request.  Its data field) s
5 679 M
(   has the following format:) s
5 657 M
(        uint32     id) s
5 646 M
(        string     handle) s
5 624 M
(   where `id' is the request identifier, and `handle' is a handle) s
5 613 M
(   previously returned in the response to SSH_FXP_OPEN or) s
5 602 M
(   SSH_FXP_OPENDIR.  The handle becomes invalid immediately after this) s
5 591 M
(   request has been sent.) s
5 569 M
(   The response to this request will be a SSH_FXP_STATUS message.  One) s
5 558 M
(   should note that on some server platforms even a close can fail.) s
5 547 M
(   This can happen e.g.  if the server operating system caches writes,) s
5 536 M
(   and an error occurs while flushing cached writes during the close.) s
5 514 M
(6.4 Reading and Writing) s
5 492 M
(    Once a file has been opened, it can be read using the SSH_FXP_READ) s
5 481 M
(   message, which has the following format:) s
5 459 M
(        uint32     id) s
5 448 M
(        string     handle) s
5 437 M
(        uint64     offset) s
5 426 M
(        uint32     len) s
5 404 M
(   where `id' is the request identifier, `handle' is an open file handle) s
5 393 M
(   returned by SSH_FXP_OPEN, `offset' is the offset \(in bytes\) relative) s
5 382 M
(   to the beginning of the file from where to start reading, and `len') s
5 371 M
(   is the maximum number of bytes to read.) s
5 349 M
(   In response to this request, the server will read as many bytes as it) s
5 338 M
(   can from the file \(up to `len'\), and return them in a SSH_FXP_DATA) s
5 327 M
(   message.  If an error occurs or EOF is encountered before reading any) s
5 316 M
(   data, the server will respond with SSH_FXP_STATUS.  For normal disk) s
5 305 M
(   files, it is guaranteed that this will read the specified number of) s
5 294 M
(   bytes, or up to end of file.  For e.g.  device files this may return) s
5 283 M
(   fewer bytes than requested.) s
5 261 M
(    Writing to a file is achieved using the SSH_FXP_WRITE message, which) s
5 250 M
(   has the following format:) s
5 228 M
(        uint32     id) s
5 217 M
(        string     handle) s
5 206 M
(        uint64     offset) s
5 195 M
(        string     data) s
5 173 M
(   where `id' is a request identifier, `handle' is a file handle) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 13]) s
_R
S
PStoPSsaved restore
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 421.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 14 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(   returned by SSH_FXP_OPEN, `offset' is the offset \(in bytes\) from the) s
5 679 M
(   beginning of the file where to start writing, and `data' is the data) s
5 668 M
(   to be written.) s
5 646 M
(   The write will extend the file if writing beyond the end of the file.) s
5 635 M
(   It is legal to write way beyond the end of the file; the semantics) s
5 624 M
(   are to write zeroes from the end of the file to the specified offset) s
5 613 M
(   and then the data.  On most operating systems, such writes do not) s
5 602 M
(   allocate disk space but instead leave "holes" in the file.) s
5 580 M
(   The server responds to a write request with a SSH_FXP_STATUS message.) s
5 558 M
(6.5 Removing and Renaming Files) s
5 536 M
(    Files can be removed using the SSH_FXP_REMOVE message.  It has the) s
5 525 M
(   following format:) s
5 503 M
(        uint32     id) s
5 492 M
(        string     filename) s
5 470 M
(   where `id' is the request identifier and `filename' is the name of) s
5 459 M
(   the file to be removed.  See Section ``File Names'' for more) s
5 448 M
(   information.  This request cannot be used to remove directories.) s
5 426 M
(   The server will respond to this request with a SSH_FXP_STATUS) s
5 415 M
(   message.) s
5 393 M
(    Files \(and directories\) can be renamed using the SSH_FXP_RENAME) s
5 382 M
(   message.  Its data is as follows:) s
5 360 M
(        uint32     id) s
5 349 M
(        string     oldpath) s
5 338 M
(        string     newpath) s
5 316 M
(   where `id' is the request identifier, `oldpath' is the name of an) s
5 305 M
(   existing file or directory, and `newpath' is the new name for the) s
5 294 M
(   file or directory.  It is an error if there already exists a file) s
5 283 M
(   with the name specified by newpath.  The server may also fail rename) s
5 272 M
(   requests in other situations, for example if `oldpath' and `newpath') s
5 261 M
(   point to different file systems on the server.) s
5 239 M
(   The server will respond to this request with a SSH_FXP_STATUS) s
5 228 M
(   message.) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 14]) s
_R
S
PStoPSsaved restore
%%Page: (14,15) 8
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 0.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
/showpage{}def/copypage{}def/erasepage{}def
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 15 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(6.6 Creating and Deleting Directories) s
5 668 M
(    New directories can be created using the SSH_FXP_MKDIR request.  It) s
5 657 M
(   has the following format:) s
5 635 M
(        uint32     id) s
5 624 M
(        string     path) s
5 613 M
(        ATTRS      attrs) s
5 591 M
(   where `id' is the request identifier, `path' and `attrs' specifies) s
5 580 M
(   the modifications to be made to its attributes.  See Section ``File) s
5 569 M
(   Names'' for more information on file names.  Attributes are discussed) s
5 558 M
(   in more detail in Section ``File Attributes''.  specifies the) s
5 547 M
(   directory to be created.  An error will be returned if a file or) s
5 536 M
(   directory with the specified path already exists.  The server will) s
5 525 M
(   respond to this request with a SSH_FXP_STATUS message.) s
5 503 M
(    Directories can be removed using the SSH_FXP_RMDIR request, which) s
5 492 M
(   has the following format:) s
5 470 M
(        uint32     id) s
5 459 M
(        string     path) s
5 437 M
(   where `id' is the request identifier, and `path' specifies the) s
5 426 M
(   directory to be removed.  See Section ``File Names'' for more) s
5 415 M
(   information on file names.  An error will be returned if no directory) s
5 404 M
(   with the specified path exists, or if the specified directory is not) s
5 393 M
(   empty, or if the path specified a file system object other than a) s
5 382 M
(   directory.  The server responds to this request with a SSH_FXP_STATUS) s
5 371 M
(   message.) s
5 349 M
(6.7 Scanning Directories) s
5 327 M
(   The files in a directory can be listed using the SSH_FXP_OPENDIR and) s
5 316 M
(   SSH_FXP_READDIR requests.  Each SSH_FXP_READDIR request returns one) s
5 305 M
(   or more file names with full file attributes for each file.  The) s
5 294 M
(   client should call SSH_FXP_READDIR repeatedly until it has found the) s
5 283 M
(   file it is looking for or until the server responds with a) s
5 272 M
(   SSH_FXP_STATUS message indicating an error \(normally SSH_FX_EOF if) s
5 261 M
(   there are no more files in the directory\).  The client should then) s
5 250 M
(   close the handle using the SSH_FXP_CLOSE request.) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 15]) s
_R
S
PStoPSsaved restore
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 421.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 16 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(    The SSH_FXP_OPENDIR opens a directory for reading.  It has the) s
5 679 M
(   following format:) s
5 657 M
(        uint32     id) s
5 646 M
(        string     path) s
5 624 M
(   where `id' is the request identifier and `path' is the path name of) s
5 613 M
(   the directory to be listed \(without any trailing slash\).  See Section) s
5 602 M
(   ``File Names'' for more information on file names.  This will return) s
5 591 M
(   an error if the path does not specify a directory or if the directory) s
5 580 M
(   is not readable.  The server will respond to this request with either) s
5 569 M
(   a SSH_FXP_HANDLE or a SSH_FXP_STATUS message.) s
5 547 M
(    Once the directory has been successfully opened, files \(and) s
5 536 M
(   directories\) contained in it can be listed using SSH_FXP_READDIR) s
5 525 M
(   requests.  These are of the format) s
5 503 M
(        uint32     id) s
5 492 M
(        string     handle) s
5 470 M
(   where `id' is the request identifier, and `handle' is a handle) s
5 459 M
(   returned by SSH_FXP_OPENDIR.  \(It is a protocol error to attempt to) s
5 448 M
(   use an ordinary file handle returned by SSH_FXP_OPEN.\)) s
5 426 M
(   The server responds to this request with either a SSH_FXP_NAME or a) s
5 415 M
(   SSH_FXP_STATUS message.  One or more names may be returned at a time.) s
5 404 M
(   Full status information is returned for each name in order to speed) s
5 393 M
(   up typical directory listings.) s
5 371 M
(   When the client no longer wishes to read more names from the) s
5 360 M
(   directory, it SHOULD call SSH_FXP_CLOSE for the handle.  The handle) s
5 349 M
(   should be closed regardless of whether an error has occurred or not.) s
5 327 M
(6.8 Retrieving File Attributes) s
5 305 M
(   Very often, file attributes are automatically returned by) s
5 294 M
(   SSH_FXP_READDIR.  However, sometimes there is need to specifically) s
5 283 M
(   retrieve the attributes for a named file.  This can be done using the) s
5 272 M
(   SSH_FXP_STAT, SSH_FXP_LSTAT and SSH_FXP_FSTAT requests.) s
5 250 M
(    SSH_FXP_STAT and SSH_FXP_LSTAT only differ in that SSH_FXP_STAT) s
5 239 M
(   follows symbolic links on the server, whereas SSH_FXP_LSTAT does not) s
5 228 M
(   follow symbolic links.  Both have the same format:) s
5 206 M
(        uint32     id) s
5 195 M
(        string     path) s
5 173 M
(   where `id' is the request identifier, and `path' specifies the file) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 16]) s
_R
S
PStoPSsaved restore
%%Page: (16,17) 9
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 0.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
/showpage{}def/copypage{}def/erasepage{}def
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 17 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(   system object for which status is to be returned.  The server) s
5 679 M
(   responds to this request with either SSH_FXP_ATTRS or SSH_FXP_STATUS.) s
5 657 M
(    SSH_FXP_FSTAT differs from the others in that it returns status) s
5 646 M
(   information for an open file \(identified by the file handle\).  Its) s
5 635 M
(   format is as follows:) s
5 613 M
(        uint32     id) s
5 602 M
(        string     handle) s
5 580 M
(   where `id' is the request identifier and `handle' is a file handle) s
5 569 M
(   returned by SSH_FXP_OPEN.  The server responds to this request with) s
5 558 M
(   SSH_FXP_ATTRS or SSH_FXP_STATUS.) s
5 536 M
(6.9 Setting File Attributes) s
5 514 M
(   File attributes may be modified using the SSH_FXP_SETSTAT and) s
5 503 M
(   SSH_FXP_FSETSTAT requests.  These requests are used for operations) s
5 492 M
(   such as changing the ownership, permissions or access times, as well) s
5 481 M
(   as for truncating a file.) s
5 459 M
(    The SSH_FXP_SETSTAT request is of the following format:) s
5 437 M
(        uint32     id) s
5 426 M
(        string     path) s
5 415 M
(        ATTRS      attrs) s
5 393 M
(   where `id' is the request identifier, `path' specifies the file) s
5 382 M
(   system object \(e.g.  file or directory\) whose attributes are to be) s
5 371 M
(   modified, and `attrs' specifies the modifications to be made to its) s
5 360 M
(   attributes.  Attributes are discussed in more detail in Section) s
5 349 M
(   ``File Attributes''.) s
5 327 M
(   An error will be returned if the specified file system object does) s
5 316 M
(   not exist or the user does not have sufficient rights to modify the) s
5 305 M
(   specified attributes.  The server responds to this request with a) s
5 294 M
(   SSH_FXP_STATUS message.) s
5 272 M
(    The SSH_FXP_FSETSTAT request modifies the attributes of a file which) s
5 261 M
(   is already open.  It has the following format:) s
5 239 M
(        uint32     id) s
5 228 M
(        string     handle) s
5 217 M
(        ATTRS      attrs) s
5 195 M
(   where `id' is the request identifier, `handle' \(MUST be returned by) s
5 184 M
(   SSH_FXP_OPEN\) identifies the file whose attributes are to be) s
5 173 M
(   modified, and `attrs' specifies the modifications to be made to its) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 17]) s
_R
S
PStoPSsaved restore
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 421.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 18 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(   attributes.  Attributes are discussed in more detail in Section) s
5 679 M
(   ``File Attributes''.  The server will respond to this request with) s
5 668 M
(   SSH_FXP_STATUS.) s
5 646 M
(6.10 Dealing with Symbolic links) s
5 624 M
(    The SSH_FXP_READLINK request may be used to read the target of a) s
5 613 M
(   symbolic link.  It would have a data part as follows:) s
5 591 M
(        uint32     id) s
5 580 M
(        string     path) s
5 558 M
(   where `id' is the request identifier and `path' specifies the path) s
5 547 M
(   name of the symlink to be read.) s
5 525 M
(   The server will respond with a SSH_FXP_NAME packet containing only) s
5 514 M
(   one name and a dummy attributes value.  The name in the returned) s
5 503 M
(   packet contains the target of the link.  If an error occurs, the) s
5 492 M
(   server may respond with SSH_FXP_STATUS.) s
5 470 M
(    The SSH_FXP_SYMLINK request will create a symbolic link on the) s
5 459 M
(   server.  It is of the following format) s
5 437 M
(        uint32     id) s
5 426 M
(        string     linkpath) s
5 415 M
(        string     targetpath) s
5 393 M
(   where `id' is the request identifier, `linkpath' specifies the path) s
5 382 M
(   name of the symlink to be created and `targetpath' specifies the) s
5 371 M
(   target of the symlink.  The server shall respond with a) s
5 360 M
(   SSH_FXP_STATUS indicating either success \(SSH_FX_OK\) or an error) s
5 349 M
(   condition.) s
5 327 M
(6.11 Canonicalizing the Server-Side Path Name) s
5 305 M
(    The SSH_FXP_REALPATH request can be used to have the server) s
5 294 M
(   canonicalize any given path name to an absolute path.  This is useful) s
5 283 M
(   for converting path names containing ".." components or relative) s
5 272 M
(   pathnames without a leading slash into absolute paths.  The format of) s
5 261 M
(   the request is as follows:) s
5 239 M
(        uint32     id) s
5 228 M
(        string     path) s
5 206 M
(   where `id' is the request identifier and `path' specifies the path) s
5 195 M
(   name to be canonicalized.  The server will respond with a) s
5 184 M
(   SSH_FXP_NAME packet containing only one name and a dummy attributes) s
5 173 M
(   value.  The name is the returned packet will be in canonical form.) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 18]) s
_R
S
PStoPSsaved restore
%%Page: (18,19) 10
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 0.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
/showpage{}def/copypage{}def/erasepage{}def
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 19 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(   If an error occurs, the server may also respond with SSH_FXP_STATUS.) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 19]) s
_R
S
PStoPSsaved restore
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 421.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 20 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(7. Responses from the Server to the Client) s
5 668 M
(   The server responds to the client using one of a few response) s
5 657 M
(   packets.  All requests can return a SSH_FXP_STATUS response upon) s
5 646 M
(   failure.  When the operation is successful, any of the responses may) s
5 635 M
(   be returned \(depending on the operation\).  If no data needs to be) s
5 624 M
(   returned to the client, the SSH_FXP_STATUS response with SSH_FX_OK) s
5 613 M
(   status is appropriate.  Otherwise, the SSH_FXP_HANDLE message is used) s
5 602 M
(   to return a file handle \(for SSH_FXP_OPEN and SSH_FXP_OPENDIR) s
5 591 M
(   requests\), SSH_FXP_DATA is used to return data from SSH_FXP_READ,) s
5 580 M
(   SSH_FXP_NAME is used to return one or more file names from a) s
5 569 M
(   SSH_FXP_READDIR or SSH_FXP_REALPATH request, and SSH_FXP_ATTRS is) s
5 558 M
(   used to return file attributes from SSH_FXP_STAT, SSH_FXP_LSTAT, and) s
5 547 M
(   SSH_FXP_FSTAT requests.) s
5 525 M
(   Exactly one response will be returned for each request.  Each) s
5 514 M
(   response packet contains a request identifier which can be used to) s
5 503 M
(   match each response with the corresponding request.  Note that it is) s
5 492 M
(   legal to have several requests outstanding simultaneously, and the) s
5 481 M
(   server is allowed to send responses to them in a different order from) s
5 470 M
(   the order in which the requests were sent \(the result of their) s
5 459 M
(   execution, however, is guaranteed to be as if they had been processed) s
5 448 M
(   one at a time in the order in which the requests were sent\).) s
5 426 M
(   Response packets are of the same general format as request packets.) s
5 415 M
(   Each response packet begins with the request identifier.) s
5 393 M
(    The format of the data portion of the SSH_FXP_STATUS response is as) s
5 382 M
(   follows:) s
5 360 M
(        uint32     id) s
5 349 M
(        uint32     error/status code) s
5 338 M
(        string     error message \(ISO-10646 UTF-8 [RFC-2279]\)) s
5 327 M
(        string     language tag \(as defined in [RFC-1766]\)) s
5 305 M
(   where `id' is the request identifier, and `error/status code') s
5 294 M
(   indicates the result of the requested operation.  The value SSH_FX_OK) s
5 283 M
(   indicates success, and all other values indicate failure.) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 20]) s
_R
S
PStoPSsaved restore
%%Page: (20,21) 11
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 0.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
/showpage{}def/copypage{}def/erasepage{}def
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 21 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(    Currently, the following values are defined \(other values may be) s
5 679 M
(   defined by future versions of this protocol\):) s
5 657 M
(        #define SSH_FX_OK                            0) s
5 646 M
(        #define SSH_FX_EOF                           1) s
5 635 M
(        #define SSH_FX_NO_SUCH_FILE                  2) s
5 624 M
(        #define SSH_FX_PERMISSION_DENIED             3) s
5 613 M
(        #define SSH_FX_FAILURE                       4) s
5 602 M
(        #define SSH_FX_BAD_MESSAGE                   5) s
5 591 M
(        #define SSH_FX_NO_CONNECTION                 6) s
5 580 M
(        #define SSH_FX_CONNECTION_LOST               7) s
5 569 M
(        #define SSH_FX_OP_UNSUPPORTED                8) s
5 547 M
(   SSH_FX_OK) s
5 536 M
(      Indicates successful completion of the operation.) s
5 514 M
(   SSH_FX_EOF) s
5 503 M
(      indicates end-of-file condition; for SSH_FX_READ it means that no) s
5 492 M
(      more data is available in the file, and for SSH_FX_READDIR it) s
5 481 M
(      indicates that no more files are contained in the directory.) s
5 459 M
(   SSH_FX_NO_SUCH_FILE) s
5 448 M
(      is returned when a reference is made to a file which should exist) s
5 437 M
(      but doesn't.) s
5 415 M
(   SSH_FX_PERMISSION_DENIED) s
5 404 M
(      is returned when the authenticated user does not have sufficient) s
5 393 M
(      permissions to perform the operation.) s
5 371 M
(   SSH_FX_FAILURE) s
5 360 M
(      is a generic catch-all error message; it should be returned if an) s
5 349 M
(      error occurs for which there is no more specific error code) s
5 338 M
(      defined.) s
5 316 M
(   SSH_FX_BAD_MESSAGE) s
5 305 M
(      may be returned if a badly formatted packet or protocol) s
5 294 M
(      incompatibility is detected.) s
5 272 M
(   SSH_FX_NO_CONNECTION) s
5 261 M
(      is a pseudo-error which indicates that the client has no) s
5 250 M
(      connection to the server \(it can only be generated locally by the) s
5 239 M
(      client, and MUST NOT be returned by servers\).) s
5 217 M
(   SSH_FX_CONNECTION_LOST) s
5 206 M
(      is a pseudo-error which indicates that the connection to the) s
5 195 M
(      server has been lost \(it can only be generated locally by the) s
5 184 M
(      client, and MUST NOT be returned by servers\).) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 21]) s
_R
S
PStoPSsaved restore
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 421.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 22 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(   SSH_FX_OP_UNSUPPORTED) s
5 679 M
(      indicates that an attempt was made to perform an operation which) s
5 668 M
(      is not supported for the server \(it may be generated locally by) s
5 657 M
(      the client if e.g.  the version number exchange indicates that a) s
5 646 M
(      required feature is not supported by the server, or it may be) s
5 635 M
(      returned by the server if the server does not implement an) s
5 624 M
(      operation\).) s
5 602 M
(   The SSH_FXP_HANDLE response has the following format:) s
5 580 M
(        uint32     id) s
5 569 M
(        string     handle) s
5 547 M
(   where `id' is the request identifier, and `handle' is an arbitrary) s
5 536 M
(   string that identifies an open file or directory on the server.  The) s
5 525 M
(   handle is opaque to the client; the client MUST NOT attempt to) s
5 514 M
(   interpret or modify it in any way.  The length of the handle string) s
5 503 M
(   MUST NOT exceed 256 data bytes.) s
5 481 M
(    The SSH_FXP_DATA response has the following format:) s
5 459 M
(        uint32     id) s
5 448 M
(        string     data) s
5 426 M
(   where `id' is the request identifier, and `data' is an arbitrary byte) s
5 415 M
(   string containing the requested data.  The data string may be at most) s
5 404 M
(   the number of bytes requested in a SSH_FXP_READ request, but may also) s
5 393 M
(   be shorter if end of file is reached or if the read is from something) s
5 382 M
(   other than a regular file.) s
5 360 M
(    The SSH_FXP_NAME response has the following format:) s
5 338 M
(        uint32     id) s
5 327 M
(        uint32     count) s
5 316 M
(        repeats count times:) s
5 305 M
(                string     filename) s
5 294 M
(                string     longname) s
5 283 M
(                ATTRS      attrs) s
5 261 M
(   where `id' is the request identifier, `count' is the number of names) s
5 250 M
(   returned in this response, and the remaining fields repeat `count') s
5 239 M
(   times \(so that all three fields are first included for the first) s
5 228 M
(   file, then for the second file, etc\).  In the repeated part,) s
5 217 M
(   `filename' is a file name being returned \(for SSH_FXP_READDIR, it) s
5 206 M
(   will be a relative name within the directory, without any path) s
5 195 M
(   components; for SSH_FXP_REALPATH it will be an absolute path name\),) s
5 184 M
(   `longname' is an expanded format for the file name, similar to what) s
5 173 M
(   is returned by "ls -l" on Unix systems, and `attrs' is the attributes) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 22]) s
_R
S
PStoPSsaved restore
%%Page: (22,23) 12
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 0.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
/showpage{}def/copypage{}def/erasepage{}def
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 23 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(   of the file as described in Section ``File Attributes''.) s
5 668 M
(   The format of the `longname' field is unspecified by this protocol.) s
5 657 M
(   It MUST be suitable for use in the output of a directory listing) s
5 646 M
(   command \(in fact, the recommended operation for a directory listing) s
5 635 M
(   command is to simply display this data\).  However, clients SHOULD NOT) s
5 624 M
(   attempt to parse the longname field for file attributes; they SHOULD) s
5 613 M
(   use the attrs field instead.) s
5 591 M
(    The recommended format for the longname field is as follows:) s
5 569 M
(        -rwxr-xr-x   1 mjos     staff      348911 Mar 25 14:29 t-filexfer) s
5 558 M
(        1234567890 123 12345678 12345678 12345678 123456789012) s
5 536 M
(   Here, the first line is sample output, and the second field indicates) s
5 525 M
(   widths of the various fields.  Fields are separated by spaces.  The) s
5 514 M
(   first field lists file permissions for user, group, and others; the) s
5 503 M
(   second field is link count; the third field is the name of the user) s
5 492 M
(   who owns the file; the fourth field is the name of the group that) s
5 481 M
(   owns the file; the fifth field is the size of the file in bytes; the) s
5 470 M
(   sixth field \(which actually may contain spaces, but is fixed to 12) s
5 459 M
(   characters\) is the file modification time, and the seventh field is) s
5 448 M
(   the file name.  Each field is specified to be a minimum of certain) s
5 437 M
(   number of character positions \(indicated by the second line above\),) s
5 426 M
(   but may also be longer if the data does not fit in the specified) s
5 415 M
(   length.) s
5 393 M
(    The SSH_FXP_ATTRS response has the following format:) s
5 371 M
(        uint32     id) s
5 360 M
(        ATTRS      attrs) s
5 338 M
(   where `id' is the request identifier, and `attrs' is the returned) s
5 327 M
(   file attributes as described in Section ``File Attributes''.) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 23]) s
_R
S
PStoPSsaved restore
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 421.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 24 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(8. Vendor-Specific Extensions) s
5 668 M
(    The SSH_FXP_EXTENDED request provides a generic extension mechanism) s
5 657 M
(   for adding vendor-specific commands.  The request has the following) s
5 646 M
(   format:) s
5 624 M
(        uint32     id) s
5 613 M
(        string     extended-request) s
5 602 M
(        ... any request-specific data ...) s
5 580 M
(   where `id' is the request identifier, and `extended-request' is a) s
5 569 M
(   string of the format "name@domain", where domain is an internet) s
5 558 M
(   domain name of the vendor defining the request.  The rest of the) s
5 547 M
(   request is completely vendor-specific, and servers should only) s
5 536 M
(   attempt to interpret it if they recognize the `extended-request') s
5 525 M
(   name.) s
5 503 M
(   The server may respond to such requests using any of the response) s
5 492 M
(   packets defined in Section ``Responses from the Server to the) s
5 481 M
(   Client''.  Additionally, the server may also respond with a) s
5 470 M
(   SSH_FXP_EXTENDED_REPLY packet, as defined below.  If the server does) s
5 459 M
(   not recognize the `extended-request' name, then the server MUST) s
5 448 M
(   respond with SSH_FXP_STATUS with error/status set to) s
5 437 M
(   SSH_FX_OP_UNSUPPORTED.) s
5 415 M
(    The SSH_FXP_EXTENDED_REPLY packet can be used to carry arbitrary) s
5 404 M
(   extension-specific data from the server to the client.  It is of the) s
5 393 M
(   following format:) s
5 371 M
(        uint32     id) s
5 360 M
(        ... any request-specific data ...) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 24]) s
_R
S
PStoPSsaved restore
%%Page: (24,25) 13
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 0.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
/showpage{}def/copypage{}def/erasepage{}def
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 25 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(9. Security Considerations) s
5 668 M
(   This protocol assumes that it is run over a secure channel and that) s
5 657 M
(   the endpoints of the channel have been authenticated.  Thus, this) s
5 646 M
(   protocol assumes that it is externally protected from network-level) s
5 635 M
(   attacks.) s
5 613 M
(   This protocol provides file system access to arbitrary files on the) s
5 602 M
(   server \(only constrained by the server implementation\).  It is the) s
5 591 M
(   responsibility of the server implementation to enforce any access) s
5 580 M
(   controls that may be required to limit the access allowed for any) s
5 569 M
(   particular user \(the user being authenticated externally to this) s
5 558 M
(   protocol, typically using the SSH User Authentication Protocol [6].) s
5 536 M
(   Care must be taken in the server implementation to check the validity) s
5 525 M
(   of received file handle strings.  The server should not rely on them) s
5 514 M
(   directly; it MUST check the validity of each handle before relying on) s
5 503 M
(   it.) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 25]) s
_R
S
PStoPSsaved restore
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 421.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 26 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(10. Changes from previous protocol versions) s
5 668 M
(   The SSH File Transfer Protocol has changed over time, before it's) s
5 657 M
(   standardization.  The following is a description of the incompatible) s
5 646 M
(   changes between different versions.) s
5 624 M
(10.1 Changes between versions 3 and 2) s
5 602 M
(   o  The SSH_FXP_READLINK and SSH_FXP_SYMLINK messages were added.) s
5 580 M
(   o  The SSH_FXP_EXTENDED and SSH_FXP_EXTENDED_REPLY messages were) s
5 569 M
(      added.) s
5 547 M
(   o  The SSH_FXP_STATUS message was changed to include fields `error) s
5 536 M
(      message' and `language tag'.) s
5 503 M
(10.2 Changes between versions 2 and 1) s
5 481 M
(   o  The SSH_FXP_RENAME message was added.) s
5 448 M
(10.3 Changes between versions 1 and 0) s
5 426 M
(   o  Implementation changes, no actual protocol changes.) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 26]) s
_R
S
PStoPSsaved restore
%%Page: (26,27) 14
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 0.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
/showpage{}def/copypage{}def/erasepage{}def
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 27 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(11. Trademark Issues) s
5 668 M
(   "ssh" is a registered trademark of SSH Communications Security Corp) s
5 657 M
(   in the United States and/or other countries.) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 27]) s
_R
S
PStoPSsaved restore
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 421.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 28 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(References) s
5 668 M
(   [1]  Dierks, T., Allen, C., Treese, W., Karlton, P., Freier, A. and) s
5 657 M
(        P. Kocher, "The TLS Protocol Version 1.0", RFC 2246, January) s
5 646 M
(        1999.) s
5 624 M
(   [2]  Institute of Electrical and Electronics Engineers, "Information) s
5 613 M
(        Technology - Portable Operating System Interface \(POSIX\) - Part) s
5 602 M
(        1: System Application Program Interface \(API\) [C Language]",) s
5 591 M
(        IEEE Standard 1003.2, 1996.) s
5 569 M
(   [3]  Rinne, T., Ylonen, T., Kivinen, T., Saarinen, M. and S.) s
5 558 M
(        Lehtinen, "SSH Protocol Architecture", draft-ietf-secsh-) s
5 547 M
(        architecture-09 \(work in progress\), July 2001.) s
5 525 M
(   [4]  Rinne, T., Ylonen, T., Kivinen, T., Saarinen, M. and S.) s
5 514 M
(        Lehtinen, "SSH Protocol Transport Protocol", draft-ietf-secsh-) s
5 503 M
(        architecture-09 \(work in progress\), July 2001.) s
5 481 M
(   [5]  Rinne, T., Ylonen, T., Kivinen, T., Saarinen, M. and S.) s
5 470 M
(        Lehtinen, "SSH Connection Protocol", draft-ietf-secsh-connect-11) s
5 459 M
(        \(work in progress\), July 2001.) s
5 437 M
(   [6]  Rinne, T., Ylonen, T., Kivinen, T., Saarinen, M. and S.) s
5 426 M
(        Lehtinen, "SSH Authentication Protocol", draft-ietf-secsh-) s
5 415 M
(        userauth-11 \(work in progress\), July 2001.) s
5 382 M
(Authors' Addresses) s
5 360 M
(   Tatu Ylonen) s
5 349 M
(   SSH Communications Security Corp) s
5 338 M
(   Fredrikinkatu 42) s
5 327 M
(   HELSINKI  FIN-00100) s
5 316 M
(   Finland) s
5 294 M
(   EMail: ylo@ssh.com) s
5 261 M
(   Sami Lehtinen) s
5 250 M
(   SSH Communications Security Corp) s
5 239 M
(   Fredrikinkatu 42) s
5 228 M
(   HELSINKI  FIN-00100) s
5 217 M
(   Finland) s
5 195 M
(   EMail: sjl@ssh.com) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 28]) s
_R
S
PStoPSsaved restore
%%Page: (28,29) 15
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 0.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
/showpage{}def/copypage{}def/erasepage{}def
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 29 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
5 723 M
(Internet-Draft         SSH File Transfer Protocol           October 2001) s
5 690 M
(Full Copyright Statement) s
5 668 M
(   Copyright \(C\) The Internet Society \(2001\).  All Rights Reserved.) s
5 646 M
(   This document and translations of it may be copied and furnished to) s
5 635 M
(   others, and derivative works that comment on or otherwise explain it) s
5 624 M
(   or assist in its implementation may be prepared, copied, published) s
5 613 M
(   and distributed, in whole or in part, without restriction of any) s
5 602 M
(   kind, provided that the above copyright notice and this paragraph are) s
5 591 M
(   included on all such copies and derivative works.  However, this) s
5 580 M
(   document itself may not be modified in any way, such as by removing) s
5 569 M
(   the copyright notice or references to the Internet Society or other) s
5 558 M
(   Internet organizations, except as needed for the purpose of) s
5 547 M
(   developing Internet standards in which case the procedures for) s
5 536 M
(   copyrights defined in the Internet Standards process must be) s
5 525 M
(   followed, or as required to translate it into languages other than) s
5 514 M
(   English.) s
5 492 M
(   The limited permissions granted above are perpetual and will not be) s
5 481 M
(   revoked by the Internet Society or its successors or assigns.) s
5 459 M
(   This document and the information contained herein is provided on an) s
5 448 M
(   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING) s
5 437 M
(   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING) s
5 426 M
(   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION) s
5 415 M
(   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF) s
5 404 M
(   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.) s
5 382 M
(Acknowledgement) s
5 360 M
(   Funding for the RFC Editor function is currently provided by the) s
5 349 M
(   Internet Society.) s
5 129 M
(Ylonen & Lehtinen         Expires April 1, 2002                [Page 29]) s
_R
S
PStoPSsaved restore
userdict/PStoPSsaved save put
PStoPSmatrix setmatrix
595.000000 421.271378 translate
90 rotate
0.706651 dup scale
userdict/PStoPSmatrix matrix currentmatrix put
userdict/PStoPSclip{0 0 moveto
 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
 closepath}put initclip
PStoPSxform concat
%%BeginPageSetup
_S
75 0 translate
/pagenum 30 def
/fname () def
/fdir () def
/ftail () def
/user_header_p false def
%%EndPageSetup
_R
S
PStoPSsaved restore
%%Trailer
%%Pages: 30
%%DocumentNeededResources: font Courier-Bold Courier 
%%EOF