| # Linux SUID Sandbox Development | 
 |  | 
 | *IMPORTANT NOTE: The Linux SUID sandbox is almost but not completely removed. | 
 | See https://bugs.chromium.org/p/chromium/issues/detail?id=598454 | 
 | This page is mostly out-of-date.* | 
 |  | 
 | For context see [LinuxSUIDSandbox](linux_suid_sandbox.md) | 
 |  | 
 | We need a SUID helper binary to turn on the sandbox on Linux. | 
 |  | 
 | In most cases, you can run `build/update-linux-sandbox.sh` and it'll install | 
 | the proper sandbox for you in `/usr/local/sbin` and tell you to update your | 
 | `.bashrc` if needed. | 
 |  | 
 | ## Installation instructions for developers | 
 |  | 
 | *   If you have no setuid sandbox at all, you will see a message such as: | 
 |  | 
 |     ``` | 
 |     Running without the SUID sandbox! | 
 |     ``` | 
 |  | 
 | *   If your setuid binary is out of date, you will get messages such as: | 
 |  | 
 |     ``` | 
 |     The setuid sandbox provides API version X, but you need Y | 
 |     You are using a wrong version of the setuid binary! | 
 |     ``` | 
 |  | 
 | Run the script mentioned above, or do something such as: | 
 |  | 
 | *   Build `chrome_sandbox` whenever you build chrome | 
 |     (`ninja -C xxx chrome chrome_sandbox` instead of `ninja -C xxx chrome`) | 
 | *   After building, run something similar to (or use the provided | 
 |     `update-linux-sandbox.sh`): | 
 |  | 
 |     ```shell | 
 |     # needed if you build on NFS! | 
 |     sudo cp out/Debug/chrome_sandbox /usr/local/sbin/chrome-devel-sandbox | 
 |     sudo chown root:root /usr/local/sbin/chrome-devel-sandbox | 
 |     sudo chmod 4755 /usr/local/sbin/chrome-devel-sandbox | 
 |     ``` | 
 |  | 
 | *   Put this line in your `~/.bashrc` (or `.zshenv` etc): | 
 |  | 
 |     ``` | 
 |     export CHROME_DEVEL_SANDBOX=/usr/local/sbin/chrome-devel-sandbox | 
 |     ``` | 
 |  | 
 | ## Try bots and waterfall | 
 |  | 
 | If you're installing a new bot, always install the setuid sandbox (the | 
 | instructions are different than for developers, contact the Chrome troopers). If | 
 | something does need to run without the setuid sandbox, use the | 
 | `--disable-setuid-sandbox` command line flag. | 
 |  | 
 | The `SUID` sandbox must be enabled on the try bots and the waterfall. If you | 
 | don't use it locally, things might appear to work for you, but break on the | 
 | bots. | 
 |  | 
 | (Note: as a temporary, stop gap measure, setting `CHROME_DEVEL_SANDBOX` to an | 
 | empty string is equivalent to `--disable-setuid-sandbox`) | 
 |  | 
 | ## Disabling the sandbox | 
 |  | 
 | If you are certain that you don't want the setuid sandbox, use | 
 | `--disable-setuid-sandbox`. There should be very few cases like this. So if | 
 | you're not absolutely sure, run with the setuid sandbox. | 
 |  | 
 | ## Installation instructions for "[Raw builds of Chromium](https://commondatastorage.googleapis.com/chromium-browser-continuous/index.html)" | 
 |  | 
 | If you're using a "raw" build of Chromium, do the following: | 
 |  | 
 |     sudo chown root:root chrome_sandbox && sudo chmod 4755 chrome_sandbox && \ | 
 |         export CHROME_DEVEL_SANDBOX="$PWD/chrome_sandbox" | 
 |     ./chrome | 
 |  | 
 | You can also make such an installation more permanent by following the | 
 | [steps above](#Installation-Instructions-for-developers) and installing | 
 | `chrome_sandbox` to a more permanent location. | 
 |  | 
 | ## System-wide installations of Chromium | 
 |  | 
 | The `CHROME_DEVEL_SANDBOX` variable is intended for developers and won't work | 
 | for a system-wide installation of Chromium. Package maintainers should make sure | 
 | the `setuid` binary is installed. |