On 29 January 2015 at 09:04, Giacomo Tesio <[email protected]> wrote:
> What's the meaning of qids? I see that responses often include them but
> request messages do not.
>
see intro(5) or intro(9P) depending on system. They identify a file on
a server; they are a value provided by the server to the client,
so they only appear in replies.
> What's the proper message sequence to delete a file? And to delete a non
> empty directly?
>
You point a fid at the file, then remove it: Twalk* ... Tremove
A non-empty directory can't be removed.
Tremove implies Tclunk
> Is it possible to move a file between different directories atomically?
>
No.
> I can't find details on the file execution permission: looks like a
> malicious client could just ignore it on files and execute anything that it
> can read (obviously I'm just talking about single files, not directory).
>
It's not malicious, just incorrect. Obviously you can't execute a
remote image or script unless you read it.
The existing servers treat OEXEC as opening for read, with a check of
the X permission.
A directory, however, can't be opened OEXEC.
In the script case, the file server will allow the OEXEC open, but
#!interpreter is converted to {interpreter file},
and then if the file is x-only, the subsequent open for OREAD will
fail. Possibly the interpreters should open OEXEC, but they don't.
> When I should clunk the afid?
>
When the client closes it.
> What about encryption? Is it completely delegated to the transport layer?
>
Yes, for encryption of communication. A file server could encrypt
files or the whole storage structure.