Isolated software installation

A technology to isolate user software installations is described. A package database of software packages is maintained. A file system for a user account is isolated by setting a root directory of a file system hierarchy in the file system to be a user directory structure for the user account. A software package is installed from the package database into the user directory structure by linking files from the package database into the user directory structure.

BACKGROUND

A root directory is the top-most directory in a computer file system hierarchy. In some computer systems, the root directory contains specific subdirectories for applications, libraries and configuration data. For example, in Unix-like operating systems the root directory is usually denoted with a single ‘/’. Some examples of specific subdirectories in Unix-like operating systems include ‘/bin’, ‘/etc’ and ‘/lib’. In the Windows® operating system, each drive is represented by a letter and a root directory for the drive (e.g. ‘C:\’). The root directory on the Windows® system drive usually includes specific subdirectories such as ‘C:\Program Files’ and ‘C:\Windows’.

Sometimes users of a computer system can access the root directory. Many operating systems, however, may limit users' ability to make changes to the root directory and important subdirectories. For example, a non-administrative user may not be able to delete files or subdirectories in the root directory, since doing so may destabilize the computer system or make the computer system insecure.

DETAILED DESCRIPTION

A software installation technology is described that may effectively isolate user software installations. A user may not need administrative credentials to install software onto the user directory structure of the computer system.

The technology provides a package database for software installations. The package database may take the form of a set of directories, in one example. A directory for a software package may be labeled using the software package name and the software package version, for instance. Additionally, the directory for the software package may include a hash value that is based at least in part on the software package, the software package dependencies and the tool chain used to build the software package. A tool chain may be the set of install tools that are used to create the software package.

Thus, multiple versions of a software package may be maintained in the package database. In particular, even slight differences in various versions of the same software package (e.g. software packages compiled with different compiler versions) may coexist within the package database.

The technology may include linking files from the package database into specific areas of the root directory structure. In this way, a coherent view of the file system may be maintained in the root directory structure regardless of what individual users may install into the package database. The technology further includes user directory structures to isolate portions of the file system for user accounts. A user directory structure may be associated with a user account, and a root directory of a file system hierarchy in the file system may be changed to be the user directory structure for the user account. The user directory may, therefore, appear to be the root directory of the file system for the user account and thereby isolate the file system for the user and provide the ability for localized software installations using localized software installations.

Through file links into the package database, users may have a similar set of files in their user directory structure as the computer system's root directory. Since the user's view of the root directory of the file system hierarchy in the file system may be changed to the user directory for the user account, users may install software packages into their user directory (e.g. their root directory) without necessarily affecting the computer system's root directory or other users' view of the file system.

In one example, a package management account on the computer system may have ownership permissions to the package database. In this way, the package management account may help to ensure the integrity of the package database. Thus, users may be limited from modifying or deleting files within the package database. In some configurations, users may be limited to installing software packages from the package database, thereby limiting what a malicious user may be able to install on the computer system.

Moreover, without necessarily having administrative credentials, users may be able to install packages into their user directory structure by linking files from the package database into their user directory structure. Symbolic links may be made to cause various files in a user directory to point to specific files located within the package database directory. Since installation is performed through links pointing to the package database, multiple users may use the same software without having multiple copies located throughout the file system. Thus, the technology may save on storage space and operating memory usage. Additionally, the technology may allow a single user to have multiple user directory structures with different software configurations and may allow the user to switch between the multiple user directory structures as desired. Further, a package manager associated with the localized and isolated package database may enable easy management of dependency trees for software packages and provide a central updating repository for software packages on the computer system. For instance, two users may want to install different versions of the same software package. Since the two versions of the software package may contain files with the same name and location in the file system, installation of the two different versions may cause problems on some computer systems. As an example, the first version of the software package may install a first version of a library in a particular directory and the second version of the software package may overwrite the first version of the library in the particular directory with a second version of the library. Generally a computer system may become unstable through installation of the two different versions of the same software package. The technology, however, may alleviate such an issue.

In a further example, a virtualized computing instance may be initiated (e.g., on a hypervisor or virtual machine manager (VMM)) with an operating system kernel and skeleton root directory structure. The operating system kernel may then mount the package database and customize the virtualized computing instance using links from the package database. In this way, a centralized package database may be used in a virtual computing environment to reduce storage costs and allow more centralized management. For instance, various distributions of Linux may be configured with the same basic Linux kernel and skeleton root directory structure without any installed packages. During initialization, the Linux kernel may mount the package database and symbolically link packages that comprise a base system for a particular Linux distribution.

To more clearly describe the technology, examples are now provided with reference to the figures. Accordingly,FIG. 1illustrates an example use of changing a root directory of a file system hierarchy in a file system100. The file system100may have a root view102and a user view106for a specific user account. The root view102may be the full view of the file system100. The root view102may include a root directory120. All of the files and sub-directories within the file system100may be accessed with reference to the root directory120. In a Unix style example, the root directory120may have various subdirectories common to many Unix-like file systems such as ‘/bin’, ‘/boot’, ‘/dev’, ‘/etc’ and ‘/lib’. The root directory may also include a package database directory126. In addition, a ‘/home’ subdirectory of the root directory120may include a user directory structure122for the user account named ‘paul’. In this way, the user directory structure122may be associated with a user account. Further, a home directory124may be included within the user directory structure122.

The user view106may be the view of the file system100for the user account. For instance, a root directory160of the file system100may be changed to be the user directory structure122for the user account, as indicated by the arrow104. In Unix-like operating systems, this may be accomplished through executing a ‘chroot’ command. The ‘chroot’ command may change the apparent root directory for the process invoking the chroot command and children processes of the process invoking the ‘chroot’ command. In this case, the apparent root directory is changed for the user and specific user account. Thus, files and subdirectories within the user directory structure122may be included in the user view106directly under the root directory160of the user view106. For example, the user view106may include a home directory162within the root directory160which corresponds to the home directory124in the user directory structure122as shown in the root view102.

Typically, a program that is executed within a chroot-modified environment cannot reference files outside the specified root directory tree. As an example, since the package database directory126may be located outside the user directory structure122, the package database directory126, without further intervention, may not normally be accessible from the root directory160in the user view106. Therefore, in order to provide the user account access to the package database, the package database directory126may be mounted into the package database directory164within the root directory160in the user view106, as also indicated by the arrow104. In Unix-like operating systems, the ‘mount’ command may be executed to perform this function (e.g. “mount—bind/pdb/home/paul/pdb”). In this way the package database directory may be mounted into a subdirectory of the user directory structure122(also known as the root directory160). Before a user can access a file on a Unix-like operating system, the file system that contains the file may generally need to be mounted with the ‘mount’ command. The ‘mount’ command may instruct the operating system that a file system is ready to use, and may associate the file system with a particular point in the overall file system hierarchy.

Once the package database directory164is capable of being be referenced from the root directory160within the user view106, symbolic links can be made to link files from the package database directory164into the user directory structure to install a software package for the user account. For example, a file may be linked (e.g., using symbolic links) into a specific location166within the file system100in order for the software package to be correctly installed. In Unix-like operating systems, this may be effectuated through a symbolic link (e.g. “ln-s/pdb/vim74-0x7D55A5/usr/bin/vim/usr/bin/vim”). This symbolic linking may be repeated for all the files within a software package and dependencies of the software package.

The package database directory may also have software packages directly installed therein. For example, a software repository external to the file system100may be in communication with the package database directory in order to download a new software package into the package database directory. In installing the software package into the package database directory, a package manager may include a unique identifier for the software package. In one example, a subdirectory within the package database directory may have a name that includes the unique identifier. In another example, the unique identifier may be stored in a meta-information file.

The file system100may also include access control permissions. Some file systems, for example, have methods of assigning permissions or access rights to specific users and groups of users. For instance, a computer file system may allow or restrict certain users from making changes to file system objects within the file system. In a Unix-like system, a user account may be given ownership permissions of particular file system objects (e.g. files and directories) in the file system. Having the ownership permissions of a file system object may allow a user account to have full control of the file system object.

This technology may utilize access control permissions to more fully secure the file system. For example, a user account may have ownership permissions to the user directory structure and may be able to symbolically link files from the package database directory into the user directory structure without ownership permissions for the root directory structure (e.g., the user may have read only privileges in the root structure). In this way, the user account may be able to install software packages without having to obtain additional access control permissions.

In some package management systems, a non-administrative user may need administrative credentials in order to install software packages. In contrast, this technology advantageously allows a user to perform isolated user software installations without administrative credentials and/or additional access control permissions.

Likewise, a package management account may be provided that has ownership permissions to the package database directory. The package management account may be able to install software packages into the package database directory. In this way, package management may be decoupled from the root administrative privileges in some file systems, for example.

In addition to a package database directory, a package database may be provided through directory-less means. For example, the package database may be located in a relational database, object oriented database, single directory or a key-value store. Thus, in a more general sense, a package database of software packages may be maintained for installations of software packages. A package manager may be software configured to provide functionality to add, delete and update software packages in the package database, for instance. In this way, creating and maintaining a package database directory for the package database may be specific way of maintaining the package database. One way of maintaining a package database may include generating a set of directories in the package database directory with a unique identifier for each software package in the package database. The unique identifier for each software package in the package database may be based in part on attributes such as the software package name, the set of package dependencies, the source software package hash value, the software development tool chain used to build the software package, a set of compilation configuration values, the built software package hash value, an instruction set architecture (ISA) of the software package and/or other uniquely identifying values.

FIG. 2illustrates an example of a graphical user interface (GUI)202for a package manager200. The GUI202may include a list of package categories204. Within each package category, the GUI202may display a set of available packages206. When a particular software package is selected from the set of available packages206, a package description208may explain the purpose and/or use of the software package selected.

The package manager200may also include a command line interface or other interfaces such as an application programming interface (API). Regardless of the particular interface, the package manager200may generally manage software packages in the package database.

The package manager200may also include additional functionality. For example, the package manager200may install software packages from the package database into a user directory structure by linking files from the package database into the user directory structure. While the package manager200may be configured to both manage software packages in the package database and install software packages into the user directory structure, in some examples the user account may install software packages into the user directory structure. In a further example, the package manager may be executed by either a package management account or a user account. In some instances when executed by a package management account, additional features may be available in the package manager such as the ability to install software packages into the package database.

The package manager200may be able to handle specific types of package formats. For example, the package manager200may include instructions to manage software packages from the following types of package formats: Gentoo ebuild format, Red Hat package manager (RPM) format, Debian package (DEB) format, Solaris package (PKG) format, tape archive (TAR) format, and/or GNU Gzip (GZ) format.

Aside from the package manager200, additional software executable by a computer processor may be included. For example, specific software or other circuitry may isolate the file system for a user account by setting a root directory of a file system to be the user directory structure, in accordance with the technology.

The package manager200or an auxiliary piece of software may also handle generation of unique identifiers, as discussed above. In particular, the technology may include instructions to generate a unique identifier for each software package in the package database. For example, the unique identifier may be based in part on a software package name, a set of package dependencies, a source software package hash value, a software development tool chain used to build the software package, a set of compilation configuration values, a built software package hash value, and/or an instruction set architecture (ISA) of the software package.

FIG. 3illustrates an example300of mounting a package database310and files therein into a user directory structure306. The user directory structure306and the package database310may be subdirectories of a root space304within a file system302, according to one example. In particular, the example300illustrates mounting and linking of various files and directories such that a file in the user directory structure306in effect points to a file in the package database310.

The package database310may include a directory322and a first file324and a second file326within the directory322. The user directory structure306may include a directory312with a first file314and a subdirectory316therein. The subdirectory may also include a first file318and a second file320. The subdirectory316in the user directory structure306may be a directory mount of the directory322in the package database310, as indicated by the arrow328. For example, in Unix-like operating systems, the ‘mount’ command may be executed to perform a mount of the entire package database directory to a directory in the user directory structure306(e.g. “mount—bind/Package Database/Directory/User Directory Structure/Directory/Directory”).

Links may also be made within the user directory structure306. For instance, the file314in the directory312in the user directory structure306may be linked to the first file318in the subdirectory316in the user directory structure306, as indicated by the arrow330. In some file systems, a symbolic link may be created by issuing a symbolic link command (e.g. “ln-s/User Directory Structure/Directory/File/User Directory Structure/Directory/Directory/File”).

With the combination of the mounting328and the linking330, the file314in the directory312within the user directory structure306may indirectly reference the file324in the directory322in the package database310. In this way, the technology provides a way to effectively isolate user file system use through use of a user directory structure and a package database with links and/or mounts from the package database into predefined areas of the user directory structure. Thus, the file system may be isolated for a user account by setting a root directory of a file system hierarchy in the file system to be the user directory structure for the user account. Moreover, software packages may be installed from the package database into the user directory structure by linking files from the package database into the user directory structure. Conversely, software packages installed in the package database may be uninstalled by removing by removing a directory structure associated with the software package. Additionally, a software package installed in the user directory structure may be uninstalled by unlinking files from the package database into the user directory structure. In uninstalling software packages from the package database, a garbage collection process may identify whether a software package is being used by any user accounts and recommend uninstallation of the software package from the package database. Alternatively, the garbage collection process may automatically initiate uninstallation of the unused software package.

A user account may have ownership permissions to objects in the user directory structure and may be able to symbolically link files from the package database into the user directory structure. Likewise, a package management account may be provided that has ownership permissions to the package database. The package management account may be able to install software packages into the package database. Further, the package management account may be able to symbolically link software packages from the package database into the user directory structure to install a software package into the user directory structure.

In one example, the user account may make a request to the package management account to install a software package. In particular, the user may request installation of a software package into the package database by a package management account. The software package may then be installed in to the package database by the package management account and the user account may request that the software package then be installed into the user directory structure by the package management account. However, with the present technology, full administrative access is may not be necessary in order to use the package manager.

FIG. 4illustrates an example400of a package database408on a storage service406accessed over a network404or an actual network. Virtualized computing is a way to reduce computing costs and/or provide a more robust computing environment. Using virtualized computing, a customer may be able to purchase computing resources for a given period of time, for example. Moreover, a virtualized computing service provider may provide a service level agreement (SLA) guaranteeing a certain level of reliability. While virtualized computing has been available for some time, virtualized computing service implementations have adjusted with changing technology. With the advent of the Internet, for instance, the access to computing resources over a network has given rise to the notion that computational power may become increasingly similar to a utility. In this way, more computationally intensive processing may take place somewhere in the network away from a client device, while the local processing on the client device may be simply rendering the results delivered over the network, for example.

In some virtualized computing environments, a virtual network is used to provide a logically isolated virtual network for a user. With virtual networking, the user can be given complete control over the virtual network, including selecting an IP address range, creation of subnets, configuration of route tables, etc. A virtual network is a virtualized computer network which is built on top of an underlying physical network (e.g., a substrate network) and physical computing resources. Nodes in the virtual network are assigned virtual IP addresses and packets sent to and from the nodes are routed through one or more physical links in the underlying network.

The technology may be particularly advantageous in a virtualized computing environment. In particular, the technology may allow a provider to offer a central package database. In this way, the package database408may not need to be unnecessarily duplicated and the provider may reduce storage costs across the virtualized computing environment. Other advancements in the technology may include the ability to minimize memory usage within the virtualized computing environment. For example, the server computer402may be a physical computer with multiple virtualized computing instances422executing thereon through use of an instance manager420(e.g. a hypervisor). A virtualized computing instance422may access the package database408on the storage service406through the network404. The storage service406may be a block level storage service, a volume oriented service, a bucket oriented service, an archive storage service or another type of storage service. In one example, a directory may be created on the storage service406to contain the package database408. Locating the package database directory on the virtualized computing instance422may also include mounting a network mount in the virtualized computing instance422pointing to the package database directory. In some examples, a user account may be logged into a virtualized computing instance422which may be in communication with the storage service406over a network in order to properly mount the package database408. The user account on the file system of the virtualized computing instance422may be isolated using a login script that executes when the user account logs into the system, for instance.

The virtualized computing instances422may be initiated with a bare operating system. For example, the virtualized computing instances422may boot to a kernel of the operating system and minimal root directory structure. The operating system kernel may then mount the package database408located in the storage service406. Once the package database408is mounted, instructions may be executed by the operating system kernel to customize the virtualized computing instances using links from the package database. For instance, various distributions of an operating system may be configured with the same basic operating system kernel and minimal root directory structure. During initialization, the operating system kernel may mount the package database and symbolically link packages that comprise a base system or a certain configuration for a particular operating system distribution. In this way, a centralized package database may be used in a virtual computing environment to reduce storage costs and allow for a more centralized management system for software installation on virtualized computing instances422.

In an example embodiment, the service provider can expose interfaces to allow a user (e.g., a customer) to customize virtual machines. Briefly, the service provider can expose a web service application program interface that allows users to submit commands to launch virtual machines to a compute service. The compute service in turn can select a server to host a virtual machine and cause the server to launch the virtual machine.

In an example embodiment, the web service application program interface, and the compute service itself, can be extended to allow a customer to select customizations for the virtualized computing instances. For example, the schema of the application program interface can be extended to allow a user to pass a selection of packages to install in the virtual machine. For example, the application interface can be extended to allow a user to pass a tag or policy that is linked to a set of packages, a file specifying the packages, the list of packages, etc. to the compute service. The compute service front end can include a parser that can identify the selection of packages and record the selection in a database in association with the launch request. The selection of packages can be passed to the host server along with other launch information and the virtual machine can be instantiated. The operating system kernel may then mount the package database408located in the storage service406. Once the package database408is mounted, an installer module may be executed by the operating system kernel to customize the virtualized computing instances using links from the package database.

While the term virtualized computing instance422(e.g., virtual machines) is used throughout this description for the purpose of illustration of particular examples, the techniques described herein are applicable in other circumstances, such as networks in which one or more or even all the network member instances are not virtualized. Further, in an example, the packets may be Internet Protocol (IP) packets. However, while IP packets are used throughout for the purpose of illustration, the techniques herein are applicable to other communication protocols which may not necessarily utilize IP or other data packets, such as the IPX/SPX protocol or the NETBEUI (NetBIOS Extended User Interface) protocol.

FIG. 5illustrates an example of a provider that may be used to implement the computing service according toFIG. 4. In particular, a network-based provider500is depicted that illustrates one environment in which the technology described herein may be used. More particularly, the provider500may provide a network530, a virtualized computing instance506a-e(also known simply as “instance”), a storage service and other virtualized computing resources. Many virtualized computing resources may be provided through creating a virtualized computing instance with access to software abstracting the resource as executed on a hardware substrate. For example, a storage service may be implemented by sharing a disk drive on a virtualized computing instance.

The provider500(e.g., the cloud provider) is capable of delivery of computing and storage capacity as a service to a community of end recipients. In one example, the provider can be established for an organization by or on behalf of the organization. That is, the provider500may offer a “private cloud environment.” In another example, the provider500supports a multi-tenant environment, wherein a plurality of customers operate independently (i.e., a public cloud environment). Generally speaking, the provider500can provide the following models: Infrastructure as a Service (“IaaS”), Platform as a Service (“PaaS”), and/or Software as a Service (“SaaS”). Other models can be provided. For the IaaS model, the provider500can offer computers as physical or virtual machines and other resources. The virtual machines can be run as guests by a hypervisor, as described further below. The PaaS model delivers a computing platform that can include an operating system, programming language execution environment, database, and web server. Application developers can develop and run their software solutions on the provider platform without the cost of buying and managing the underlying hardware and software. The SaaS model allows installation and operation of application software in the provider. End users may access the provider500using networked client devices, such as desktop computers, laptops, tablets, smartphones, etc. running web browsers or other lightweight client applications, for example. Those skilled in the art will recognize that the provider500can be described as a “cloud” environment.

The provider500includes a plurality of server computers502a-e. While only four server computers are shown, any number can be used, and large centers can include thousands of server computers. The server computers502a-ecan provide computing resources for executing software instances506a-e. Instances506a-emay, for example, be virtual machines. As known in the art, a virtual machine is an instance of a software implementation of a machine (i.e. a computer) that executes applications like a physical machine. In the example of virtual machine, each of the server computers502a-ecan be configured to execute an instance manager508a-ecapable of executing the instances. The instance manager508a-ecan be a hypervisor or another type of program configured to enable the execution of multiple instances506a-eon a single server. Additionally, each of the instances506a-ecan be configured to execute one or more applications. The instances506a-eare examples of virtualized computing instances, and a subset of the instances506a-emay be members of one or more network groups.

It should be appreciated that although the discussion herein is primarily in the context of virtual machines, other types of instances can be utilized with the concepts and technologies disclosed herein. For instance, the technologies disclosed herein can be utilized with storage resources, data communications resources, and with other types of computing resources. The technology might also execute all or a portion of an application directly on a computer system without utilizing virtualized computing instances.

One or more server computers504can be reserved for executing software components for managing the operation of the server computers502and the instances506a-e. For example, a server computer504can execute a management component510. A customer can access the management component510to configure various aspects of the operation of the instances506a-epurchased by the customer. For example, the customer can purchase, rent or lease instances and make changes to the configuration of the instances. The customer can also specify settings regarding how the purchased instances are to be scaled in response to demand. An auto scaling component512can scale the instances506a-ebased upon rules defined by the customer. The auto scaling component512may allow a customer to specify scale-up rules for use in determining when new instances should be instantiated, and scale-down rules for use in determining when existing instances should be terminated, for example. The auto scaling component512can consist of a number of subcomponents executing on different server computers502or other computing devices. The auto scaling component512can monitor available computing resources over an internal management network and modify resources available based on need.

A deployment component514can be used to assist customers in the deployment of new instances506a-eof computing resources. The deployment component can have access to account information associated with the instances, such as who is the owner of the account, credit card information, country of the owner, etc. The deployment component514can receive a configuration from a customer that includes data describing how new instances506a-emay be configured. For example, the configuration can specify one or more applications to be installed in new instances506a-e, provide scripts and/or other types of code to be executed for configuring new instances506a-e, provide cache logic specifying how an application cache should be prepared, and other types of information. The deployment component514can utilize the customer-provided configuration and cache logic to configure, prime, and launch new instances506a-e. The configuration, cache logic, and other information may be specified by a customer using the management component510or by providing this information directly to the deployment component514.

Customer account information516can include any desired information associated with a customer of the multi-tenant environment. For example, the customer account information may include a unique identifier for a customer, a customer address, billing information, licensing information, customization parameters for launching instances, scheduling information, auto-scaling parameters, etc. As described above, the customer account information516may also include security information used in encryption of asynchronous responses to API requests. By “asynchronous” it is meant that the API response can be made at any time after the initial request and with a different network connection.

A network530can be utilized to interconnect the server computers502a-eand the server computer504. The network530can be a local area network (LAN) and can be connected to a Wide Area Network (WAN)540so that end users can access the provider500. It should be appreciated that the network topology illustrated inFIG. 5has been simplified and that many more networks and networking devices can be utilized to interconnect the various computing systems disclosed herein. More particularly, the network530may implement a physical network on which a virtual network may be based. The technology may be useful in such a computing service environment offered by a virtual computing service and network provider. The computing service environment may be configured to offer a central package database. In this way, the package database may not need to be unnecessarily duplicated and the computing service provider may reduce storage costs across the computing service environment.

FIG. 6is a flowchart illustrating an example method to isolate user software installations. The method600may include associating a user directory structure in a file system with a user account, as shown in method element602, and installing a software package into a package database directory, as shown in method element604. Similarly, software packages installed in the package database may be uninstalled by removing a directory structure associated with the software package. The method may include changing a root directory of a file system hierarchy in the file system for the user account to be the user directory structure, as shown in method element606. In this way, the user directory may appear to be the root directory of the file system for the user account.

The method may also include mounting the package database directory into a subdirectory of the user directory structure, as shown in method element608, and symbolically linking files from the package database directory into the user directory structure to install the software package for the user account, as shown in method element610. This mounting and linking may be performed while operating in user execution space. The term user execution space means the execution space outside kernel space in Unix-like operating system. In Unix-like operating systems, the ‘mount’ command may be executed to perform this mounting function. In this way, the package database directory may be mounted into a subdirectory of the user directory structure. Symbolic links may also be made to link specific files located within the package database directory to a user directory or user directory structure. Since a software package installation in the user directory structure is performed through links pointing to the package database, multiple users may use the same software package without having multiple copies located throughout the file system. The technology, therefore, may save on storage space and operating memory usage and also allow a single user to have multiple user directory structures with different software configurations and may allow the user to switch between the multiple user directory structures as desired. Moreover, a package manager associated with the localized and isolated package database may allow for easy management of dependency trees for software packages and provide a central updating means for software packages on the computer system.

FIG. 7is a flowchart illustrating an example method to isolate user software installations. The method700may include maintaining a package database of software packages, as shown in method element702, and isolating a file system for a user account by setting a root directory of a file system hierarchy in the file system to be a user directory structure for the user account, as shown in method element704. Thus, a user view of the file system may be created and maintained for the user account. In this way, a coherent view of the file system may be maintained in the root directory structure, regardless of what individual users may install into the package database. The method may include installing a software package from the package database into the user directory structure by linking files from the package database into the user directory structure, as shown in method element706. As an example, a user directory structure may be associated with a user account, and a root directory of the file system may be changed to be the user directory structure for the user account.

FIG. 8is block diagram illustrating an example800of a computing device802that may be used for isolating user software installations. In particular, the computing device802illustrates a high level example of a device on which modules of the disclosed technology may be executed. The computing device802may include one or more processors804that are in communication with memory devices806. The computing device802may include a local communication interface810for the components in the computing device. For example, the local communication interface810may be a local data bus and/or any related address or control busses as may be desired.

The memory device806may contain modules that are executable by the processor(s)804and data for the modules. Located in the memory device806are modules executable by the processor. For example, a file system818, a package database820, a package manager822, an isolation module824and other modules may be located in the memory device806. The modules may execute the functions described earlier. For instance, the file system818may control how data may be stored and/or retrieved from a data store808. The file system818may also enforce access permissions and ownership permissions for objects (e.g., files and directories) within the file system818. The file system818may have a user directory structure for a user account. The package database820may provide a database of software packages. The package manager822may manage software packages in the package database and install software packages from the package database into the user directory structure by linking files from the package database into the user directory structure. The isolation module824may isolate the file system for the user account by setting a root directory of a file system to be the user directory structure.

The data store808may also be located in the memory device806for storing data related to the modules and other applications along with an operating system that is executable by the processor(s)804.

Other applications may also be stored in the memory device806and may be executable by the processor(s)804. Components or modules discussed in this description that may be implemented in the form of software using high programming level languages that are compiled, interpreted or executed using a hybrid of the methods.

The computing device may also have access to I/O (input/output) devices812that are usable by the computing devices. An example of an I/O device is a display screen816that is available to display output from the computing devices. Other known I/O devices may be used with the computing device as desired. Networking devices814and similar communication devices may be included in the computing device. The networking devices814may be wired or wireless networking devices that connect to the internet, a LAN, WAN, or other computing network.

The components or modules that are shown as being stored in the memory device806may be executed by the processor(s)804. The term “executable” may mean a program file that is in a form that may be executed by a processor804. For example, a program in a higher level language may be compiled into machine code in a format that may be loaded into a random access portion of the memory device806and executed by the processor804, or source code may be loaded by another executable program and interpreted to generate instructions in a random access portion of the memory to be executed by a processor. The executable program may be stored in any portion or component of the memory device806. For example, the memory device806may be random access memory (RAM), read only memory (ROM), flash memory, a solid state drive, memory card, a hard drive, optical disk, floppy disk, magnetic tape, or any other memory components.

The processor804may represent multiple processors and the memory device806may represent multiple memory units that operate in parallel to the processing circuits. This may provide parallel processing channels for the processes and data in the system. The local communication interface810may be used as a network to facilitate communication between any of the multiple processors and multiple memories. The local communication interface810may use additional systems designed for coordinating communication such as load balancing, bulk data transfer and similar systems.