diff options
Diffstat (limited to 'share/examples/portal/README')
-rw-r--r-- | share/examples/portal/README | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/share/examples/portal/README b/share/examples/portal/README new file mode 100644 index 000000000000..d8dc1fc6aeea --- /dev/null +++ b/share/examples/portal/README @@ -0,0 +1,65 @@ +$FreeBSD$ + +This contains a couple of examples for using the portal filing system. + +The portal file system provides a way of obtaining a file descriptor +to a filesystem object (i.e. something that is accessed by open(2), +pipe(2), socket(2) or socketpair(2)) via the filesystem namespace. +At present the only file descriptor supported are TCP sockets and +files. + +NOTE!!!! The portal file system is experimental in nature and should +not be considered secure, use with caution. + +First off mount the filesystem using something like: + +# mount_portalfs /usr/share/examples/portal/portal.conf /p + +Then you should be able to do things like +# cat /p/tcp/localhost/daytime +Sun Nov 22 17:50:09 1998 +(assuming inetd is running the daytime service, by default it is off) + +Welcome to FreeBSD! + +# mkdir -p /tmp/root +# cd /tmp/root +# mkdir bin p +# cp /bin/sh /bin/cat bin +# mount_portalfs /usr/share/examples/portal/portal.conf /tmp/root/p +# chroot /tmp/root +# pwd +/ +# echo * +bin p +# cat /etc/motd +cat: /etc/motd: No such file or directory +# cat /p/fs/etc/motd +FreeBSD 2.2.6-RELEASE (COMPUTER) #0: Sat Aug 22 17:11:37 BST 1998 + +Welcome to FreeBSD! + +Finally, a very simple example of the listening server is available, +fire up two xterms. In the first + +xterm-1$ cat /p/tcplisten/ANY/6666 +(the ANY is a wildcard just like using INADDR_ANY, any resolvable host +can be used). + +In the second xterm +xterm-2$ echo "hello there" >/p/tcp/localhost/6666 + +You should see the "hello there" string appear on the first terminal. + +Unprivilged users can't create servers on privalged ports. +xterm-1$ cat /p/tcplisten/ANY/666 +cat: /p/tcplisten/ANY/666: Operation not permitted + +but root can +xterm-1# cat /p/tcplisten/ANY/666 + +In the second +xterm-2$ echo "hello there" >/p/tcp/localhost/666 +should produce the expected response. + +You can also swap the client/server read and write commands etc. |