CageFS is the CloudLinux feature that lets hundreds of websites share one server without being able to read each other's files. This is a technical deep dive: what CageFS is, exactly what it isolates, why it stops information-disclosure and symlink attacks, how it relates to LVE and the PHP runtime, and the honest list of things it does not do.
CageFS is a feature of CloudLinux OS that gives every hosting account its own virtualized, per-user filesystem. The name is literal: each user is placed in a cage, a restricted view of the server that looks, from inside, like a complete Linux system but contains only that user's files and a safe, shared set of tools. Hundreds of accounts can live on one physical server, and each one behaves as if it were alone on the machine.
The problem CageFS solves is specific. On a plain Linux server with cPanel, every account technically shares one filesystem. File permissions are supposed to keep users apart, but permissions are brittle: a world-readable config file, a misconfigured directory, or a clever symbolic link can expose one account's data to another. On shared hosting, where you do not choose your neighbors, that is a real risk. CageFS removes the risk at the root by making the other accounts simply not exist from any given user's point of view.
Inside the cage, an account sees a filesystem assembled just for it. There are three parts to that view:
Just as important is what an account cannot see from inside its cage:
The two virtualized directories deserve a closer look, because they are where a lot of information disclosure normally happens.
On a normal system, /etc/passwd lists every user account on the machine. An attacker who lands in one account reads it to learn every other username, which is the first step to targeting specific sites. Inside a CageFS cage, the /etc directory is a curated template: the passwd file shows only the caged user and the handful of system accounts needed for programs to run. There is no list of your neighbors to steal.
Similarly, /proc on a normal system exposes the full process table, including processes owned by other users and sometimes their command lines and environment variables. CageFS mounts a filtered /proc that shows only the current user's own processes. An attacker cannot watch a neighbor's PHP process or scrape secrets passed on a command line.
Most shared-hosting breaches that spread beyond one account rely on one of two moves, and CageFS neutralizes both.
The classic pivot: an attacker compromises one weak site, then reads the server for other sites' database credentials and configuration files. Every one of the files they want to read, a neighbor's wp-config.php, a real /etc/passwd, another user's logs, either does not exist inside the cage or is replaced with a version that shows only the attacker's own account. The attack returns nothing useful, so a single compromise stays contained to the one account instead of becoming a server-wide breach.
A symlink (symbolic link) attack plants a crafted link so that a privileged process follows it to a file the attacker should not be able to read or overwrite, often another account's config. CageFS helps directly, because the target file is not present inside the cage to begin with. CloudLinux pairs CageFS with SecureLinks, a kernel-level protection that specifically blocks the symbolic-link and hard-link tricks these attacks depend on. The link trick is blocked and the target it aims for is hidden.
CageFS is often confused with LVE because both are CloudLinux features that isolate accounts, but they solve different problems and work together.
| Feature | What it isolates | Example of what it stops |
|---|---|---|
| CageFS | Files and the view of the system | One account reading a neighbor's wp-config.php |
| LVE | Resources: CPU, RAM, I/O, processes | One account starving the whole server of CPU |
| SecureLinks | Link-following by privileged processes | A symlink pointed at another account's files |
LVE, the Lightweight Virtual Environment, is about resource isolation: it caps each account's CPU, memory, disk I/O, and process count so one busy site cannot slow the whole server. CageFS is about filesystem isolation: it controls what each account can see and read. A host runs both, so every account is limited both in what it can consume and in what it can reach.
The two meet at the PHP runtime. CloudLinux executes an account's PHP (typically through mod_lsapi and the per-user task runtime sometimes referred to as MTR) inside that account's own cage and LVE. The practical effect is that the PHP interpreter serving one site runs with that site's limited, isolated view of the filesystem. Even if a script is malicious, it cannot step outside the cage to read a neighbor's files, and it cannot exceed that account's resource limits. CageFS defines the boundary, and the runtime respects it.
This is the honest half, and it matters because CageFS is sometimes described as if it were a complete security solution. It is not. CageFS is isolation, not detection or prevention of attacks inside your own account.
The honest summary: CageFS is one of the best things that can happen to a shared server, but it is a containment wall, not a guard. It makes a compromise in one account a dead end rather than a doorway to the rest of the server. Detecting and blocking the compromise in the first place is the job of Imunify360, which is why hosts deploy both together.
Ultra Web Hosting runs CloudLinux with CageFS and LVE across our shared hosting and reseller hosting, so every account is isolated at both the filesystem and the resource level, with Imunify360 adding the active malware and WAF layer on top. All of it runs on hardware we have owned and operated since 2002, in our own datacenter, with on-site staff available 24/7 and a typical support response around twelve minutes. There is no separate security add-on charge on shared hosting plans. For the wider picture of how the isolation and detection layers fit together, read our guide on CloudLinux, CageFS, and Imunify360, and if you are weighing shared hosting in general, see is shared hosting secure.
CageFS is a CloudLinux feature that gives every hosting account its own virtualized, per-user filesystem. Inside its cage, an account sees only its own files plus a safe, read-only set of system tools, along with a virtualized view of system directories such as /etc and /proc. It cannot see other customers' files, the real server layout, or the full process list. The goal is to make each account behave as if it were alone on the server, which contains any single compromise to that one account.
CageFS isolates each user's files and their view of the system. An account sees its own home directory and a curated set of binaries and libraries, plus a safe virtualized /etc and /proc that expose only that user's own information. It does not see other users' home directories, their wp-config.php or .env credentials, the full list of accounts on the server, or the full process table. The real system files stay outside the cage entirely.
Most information-disclosure attacks on shared hosting work by reading files that belong to another account, such as a neighbor's database password in wp-config.php, or by reading system files like /etc/passwd to enumerate every user on the box. Inside a CageFS cage those files either do not exist or are replaced with a safe, virtualized version that shows only the current user. There is nothing for the attacker to read, so the attack returns nothing useful.
CageFS helps by hiding the files a symlink attack would target, since other accounts' files are not present inside the cage. CloudLinux pairs it with SecureLinks, which specifically blocks the symbolic-link and hard-link tricks used to make a privileged process follow a crafted link to a file it should not read or overwrite. Together they close both the link trick and the target it aims for.
They are two separate CloudLinux features that solve different problems. LVE (Lightweight Virtual Environment) is about resource isolation: it caps each account's CPU, memory, disk I/O, and processes so one site cannot starve the server. CageFS is about filesystem isolation: it controls what files and system information an account can see. A host typically runs both, so each account is limited in what it can consume and in what it can reach.
MTR, or Mod_LSAPI and the thread or task runtime CloudLinux uses to execute PHP, runs each account's PHP processes inside that account's own cage and LVE. The practical effect is that PHP for one site executes with that site's own limited, isolated view of the filesystem, so even the interpreter cannot step outside the cage to read a neighbor's files. CageFS defines the boundary, and the PHP runtime respects it.
CageFS is isolation, not detection. It is not a malware scanner, so it will not find or remove malicious code inside your own account. It is not a web application firewall, so it will not block an SQL injection or a malicious upload aimed at your application. And it is not a substitute for good application security: it cannot patch a vulnerable plugin or protect a weak password. Detection and blocking are the job of Imunify360, which is why hosts run both alongside CageFS.
Yes. Ultra runs CloudLinux with CageFS and LVE on shared and reseller hosting, so every account is isolated at both the filesystem and resource level, with Imunify360 adding the active malware and WAF layer on top. It all runs on hardware Ultra has owned and operated since 2002, with on-site staff available 24/7 and no separate security add-on charge.