9p protocol go implementation

1,317 views
Skip to first unread message

Maurício CA

unread,
Mar 21, 2011, 9:57:10 PM3/21/11
to golang-nuts
Hi, all,

I see at page below that there exists go9p, "A 9P library in the Go
programming language, by Andrey Mirtchovski and Latchesar
Ionkov. Now part of the official Go distribution."

http://9p.cat-v.org/implementations

I can't find any implementation of 9p at this page, though, which, I
believe, is the official list of current standard go packages:

http://golang.org/pkg

Is there really a 9p implementation in the official go distribution?

Thanks,

Maurício

peterGo

unread,
Mar 21, 2011, 10:16:16 PM3/21/11
to golang-nuts
Mauricio,

go9p - Package to write 9P clients and servers in Go
http://code.google.com/p/go9p/

Peter

Russ Cox

unread,
Mar 21, 2011, 10:53:20 PM3/21/11
to peterGo, golang-nuts

newt...@gmail.com

unread,
Nov 2, 2014, 9:27:12 PM11/2/14
to golan...@googlegroups.com
I see that go9p supports authentication. Assuming the client and server are both plan9 (even the same system), how does one hook up the OS's authentication?

Chris

Skip Tavakkolian

unread,
Nov 3, 2014, 4:29:10 AM11/3/14
to Chris McGee, golang-nuts, Fans of the OS Plan 9 from Bell Labs
short version: you need libauth in Go (or start the go9p client/server by C programs that do the auth).

9P facilitates authentication (but doesn't define or dictate the method). intro(5), auth(2) and factotum(4) will be helpful. basically Tauth is used to request a fid to negotiate authentication (a.k.a. afid). Tread's/Twrite's to afid are proxy-delivered to the factotums (authentication agents) of the sever and of the client by each side. once server's factotum is convinced, the server is granted the system privilege to change its process id to the authenticated user.  the client attaches (Tattach) to the server's namespace by providing the afid in addition to other parameters. tools like 'ramfs  -D' and aux/9pcon are very handy for watching 9P in action.

i'm copying to 9fans; it might be a better place to continue.


--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

newt...@gmail.com

unread,
Nov 3, 2014, 10:04:24 PM11/3/14
to golan...@googlegroups.com, newt...@gmail.com, 9f...@9fans.net
Thanks, I think I'll have to do a bit more reading to understand this. I'll check out ramfs and 9pcon.

Is this simpler if written in C using "postmountsrv" with a mount point? I'm assuming that it doesn't require a tcp port and explicit authentication handling using libauth on both ends.

If so, then I wonder why postmountsrv is not exposed via the Go 9P libraries?

Chris

wkharold

unread,
Nov 4, 2014, 11:16:16 AM11/4/14
to golan...@googlegroups.com, newt...@gmail.com, 9f...@9fans.net
It doesn't do any authentication but if you're interested in another "worked example" of using 9p here's a shameless plug: http://raincreekings.blogspot.com/2014_03_01_archive.html

Skip Tavakkolian

unread,
Nov 4, 2014, 8:14:06 PM11/4/14
to Chris McGee, golang-nuts, Fans of the OS Plan 9 from Bell Labs
where would PostMountSrv reside? it isn't a syscall.

it is not difficult to do by hand; this version of go9p's timefs example posts itself to /srv (plus some code to fake a few unix'isms on Plan 9). there is no authentication; permissions on the /srv file determine if a user can mount it:

a package that wraps the factotum-to-app rpc protocol (like libauth) would be useful.

-Skip
Reply all
Reply to author
Forward
0 new messages