Freshmeat release descriptions
Descriptions of changes in each release submitted to Freshmeat.
See also PlashReleases.
Contents
1.19
The build system for PlashGlibc has been changed to integrate better with glibc's normal build process. As a result, it is easier to build Plash on architectures other than i386, and this is the first release to support amd64. The forwarding of stdin/stdout/stderr that was introduced in the previous release caused a number of bugs which should now be fixed.
1.18
Fixed security vulnerability relating to granting access to terminal. New feature: Package system for running programs from Debian packages in sandboxes.
Edited to:
A security vulnerability relating to granting access to terminal was fixed. A package system for running programs from Debian packages in sandboxes was added.
1.17
Add Python bindings for Plash's object interface. Add layered/copy-on-write directories. Update to build glibc 2.3.6, 2.4 and 2.5 (previously only glibc 2.3.5). Security fixes: disallow setting setuid/setgid bits; fix -t option in pola-run. Add -e option to pola-run. pola-run now looks up executable in PATH. Packaging improvements: now build packages for 3 Debian variants.
Edited to:
This release adds Python bindings for Plash's object interface, layered/copy-on-write directories, an update to build glibc 2.3.6, 2.4, and 2.5 (previously only 2.3.5), security fixes to disallow setting setuid/setgid bits and to fix the -t option in pola-run, a -e option for pola-run, and packaging improvements to build packages for three Debian variants. pola-run now looks up executables in PATH.
1.16
The replacement GtkFileChooserDialog class has been rewritten, which allows the powerbox file chooser to work with a lot more GTK applications (including Firefox, Gnumeric, and Inkscape). The documentation has been reorganised, and examples, screenshots, etc. have been added. The build process has been revised, and an autoconf script added. Test cases have been added. A bug in exec-object has been added. This release is available from an SVN repository.
1.15
This release introduces a patch to Gtk that changes GtkFileChooserDialog to use Plash's powerbox. This provides a mechanism, transparent to the user, for granting Gtk applications access to specific files, so that the user does not need to trust the application with access to all of their files. A number of issues have been fixed so that Konqueror and Gnumeric are able to run under the Plash environment. The Plash shell has been renamed to "pola-shell", to distinguish it from the rest of Plash's components.
1.14
This release introduces file powerboxes. Powerboxes are a design pattern for dynamically granting authority to an interactive GUI program. A file powerbox works just like a file open/save dialog box, except that it also grants authority to access a file. Plash provides a module for making XEmacs use file powerboxes. This means XEmacs does not have to be run with the user's full authority. It is possible to edit root-owned files without running XEmacs as root.
1.13
It is now much easier to build Plash from source. Pre-built object files for GNU libc are provided. Plash can use these to build its modified glibc.
1.12
New feature: Includes an initial version of a new tool, pola-run, a programmatic interface for starting programs under the Plash environment. This can be used from Bash scripts and other programs. Security fix: removed race condition (albeit hard-to-exploit) in code for allocating and freeing UIDs. Packaging fix: include copy of libm.so and other libraries to enable co-existence with glibc 2.3.5 in the host installation.
1.11
Major new feature: Plash provides a tool that lets you run XEmacs and then grant it access to individual files and directories. The tool is used like gnuclient. This means you don't have to give XEmacs access to all of your files. You don't have to trust XEmacs and all the Elisp code it runs -- after all, XEmacs is a large, complex system with no internal security. Other changes: It's now safer to run the shell as root. Documentation has been improved, and converted to DocBook format.
1.10
The fchdir() call is now implemented by Plash. There are a number of programs that need fchdir(), including "rm" (when using the "-r" option), "install" (when using the "-d" option) and "mkdir" (when using the "-p" option). These now work under Plash. Plash's libc maintains a table for file descriptors that are not implemented by the kernel. This table maps slots containing directory file descriptors to references to dir_stack objects.
1.9
The implementation of how file namespaces are constructed has been changed. It's now possible to add entries to (or replace entries in) existing directories -- this does not modify the original directory, and as usual it can be done on a per-process basis. This functionality is similar to union directories and similar to mount points under Linux or Plan 9, but it's a bit more flexible. The change makes it possible to grant read-only access to a directory while granting read-write-create access to an object inside that directory.
1.8
It's now possible to build Plash's modified glibc from scratch without manual intervention. There's now an option for granting programs access to the X11 Window System automatically, so that you can run X programs conveniently. (It's off by default because X11 is not secure; clients can interfere with each other.) There's a new way of setting options in the shell. Plash now has limited support for directory file descriptors, so that XEmacs can run under Plash.
1.7
Plash now extends the concept of executables so that executables can be objects as well as data files. In this new case, execve() works by invoking the object with a method call. This feature provides fine-grained control over how processes are constituted. It is similar to chroot() environments under Linux, but much more lightweight and flexible, so that it can be used on a per-program basis.
1.6
The shell now allows processes to be started with existing files and directories attached to arbitrary points in the filesystem tree. The new argument syntax is "PATHNAME = EXPR", and the expression "F PATHNAME" returns the object at the given pathname. For example, you can run gcc with a different /tmp directory using "gcc args... + /tmp=(F ~/new-tmp)".
1.5
Recursive read-only directories are now supported, and the shell can pass objects as read-only. It is now possible for processes to create their own filesystems, and there are the beginnings of an API for doing this. As an example, a "chroot" program is provided. (Normally, use of chroot is restricted to root, because it is insecure in the presence of the setuid executables. chroot is safe under Plash, however, because it doesn't provide setuid -- another mechanism will be provided instead.)
1.4
Implemented an object-capability protocol for use over sockets. This is now used as an additional layer in the communication between client and server. In future it will provide a way for applications to construct filesystems on the server.
1.3
Better security: now runs processes under dynamically-allocated user IDs rather than the user "nobody". New features: implemented globbing and file descriptor redirection in the shell. Implemented bind(), symlink(), utime(), rename() and link(). Bug fix: fixed a file descriptor leak in the shell.
1.2
Major bug fixes: Fixed open64() in libc so that it doesn't use the "open" syscall. Also removed filesystem syscalls from libpthread.so. Fixed bug in server in handling of multiple processes.
New features: Implemented pipes in the shell. Added syntax for running programs conventionally. This means it's now practical to use Plash as your main shell. Added support for "#!" scripts. Added options window for enabling logging.
